¿Que es un FTP ?
FTP (File Transfer Protocol) es un protocolo de
transferencia de archivos entre sistemas conectados a una red TCP basado en la
arquitectura cliente-servidor, de manera que desde un equipo cliente nos
podemos conectar a un servidor para descargar archivos desde él o para enviarle
nuestros propios archivos independientemente del sistema operativo utilizado en
cada equipo.
El Servicio FTP es ofrecido por la capa de Aplicación del
modelo de capas de red TCP/IP al usuario, utilizando normalmente el puerto de
red 20 y el 21. Un problema básico de FTP es que está pensado para ofrecer la
máxima velocidad en la conexión, pero no la máxima seguridad, ya que todo el
intercambio de información, desde el login y password del usuario en el
servidor hasta la transferencia de cualquier archivo, se realiza en texto plano
sin ningún tipo de cifrado, con lo que un posible atacante lo tiene muy fácil
para capturar este tráfico, acceder al servidor, o apropiarse de los archivos
transferidos.
Cliente FTP
Cuando un navegador no está equipado con la función FTP, o
si se quiere cargar archivos en un ordenador remoto, se necesitará utilizar un
programa cliente FTP. Un cliente FTP es un programa que se instala en el
ordenador del usuario, y que emplea el protocolo FTP para conectarse a un
servidor FTP y transferir archivos, ya sea para descargarlos o para subirlos.
Para utilizar un cliente FTP, se necesita conocer el nombre
del archivo, el ordenador en que reside (servidor, en el caso de descarga de
archivos), el ordenador al que se quiere transferir el archivo (en caso de
querer subirlo nosotros al servidor), y la carpeta en la que se encuentra.
Algunos clientes de FTP básicos en modo consola vienen
integrados en los sistemas operativos, incluyendo Windows, DOS, Linux y Unix.
Sin embargo, hay disponibles clientes con opciones añadidas e interfaz gráfica.
Aunque muchos navegadores tienen ya integrado FTP, es más confiable a la hora
de conectarse con servidores FTP no anónimos utilizar un programa cliente
Ejemplos de Clientes FTP
Entre los varios clientes FTP que existen, se pueden
mencionar los siguientes:2
- Free
FTP Upload Manager
- F->IT
- net2ftp
- Web
FTP.co.uk
- Web-Ftp
- Jambai
FTP
- ftp4net
- PHP
FTP Client
- Asuk
PHP FTP
- Weeble
File Manager
- FileZilla
Modos de conexión del cliente FTP
FTP admite dos modos de conexión del cliente. Estos modos se
denominan activo (o Estándar, o PORT, debido a que el cliente
envía comandos tipo PORT al servidor por el canal de control al establecer la
conexión) y pasivo (o PASV, porque en este caso envía comandos
tipo PASV). Tanto en el modo Activo como en el modo Pasivo, el cliente
establece una conexión con el servidor mediante el puerto 21, que establece el
canal de control.
Modo activo
En modo Activo, el servidor siempre crea el canal de datos
en su puerto 20, mientras que en el lado del cliente el canal de datos se
asocia a un puerto aleatorio mayor que el 1024. Para ello, el cliente manda un
comando PORT al servidor por el canal de control indicándole ese número de
puerto, de manera que el servidor pueda abrirle una conexión de datos por donde
se transferirán los archivos y los listados, en el puerto especificado.
Lo anterior tiene un grave problema de seguridad, y es que
la máquina cliente debe estar dispuesta a aceptar cualquier conexión de entrada
en un puerto superior al 1024, con los problemas que ello implica si tenemos el
equipo conectado a una red insegura como Internet. De hecho, los cortafuegos que se instalen en el
equipo para evitar ataques seguramente rechazarán esas conexiones aleatorias.
Para solucionar esto se desarrolló el modo pasivo.
Modo pasivo
Cuando el cliente envía un comando PASV sobre el canal de
control, el servidor FTP le indica por el canal de control, el puerto (mayor a
1024 del servidor. Ejemplo:2040) al que debe conectarse el cliente. El cliente
inicia una conexión desde el puerto siguiente al puerto de control (Ejemplo:
1036) hacia el puerto del servidor especificado anteriormente (Ejemplo: 2040).3
Antes de cada nueva transferencia tanto en el modo Activo
como en el Pasivo, el cliente debe enviar otra vez un comando de control (PORT
o PASV, según el modo en el que haya conectado), y el servidor recibirá esa
conexión de datos en un nuevo puerto (aleatorio si es en modo pasivo o por el
puerto 20 si es en modo activo).
Tipos de transferencia de archivos en FTP
En el protocolo FTP existen 2 tipos de transferencia en
ASCII y en binarios. Es importante conocer cómo debemos transportar un archivo
a lo largo de la red, si no utilizamos las opciones adecuadas podemos destruir
la información del archivo. Por eso, al ejecutar la aplicación FTP, debemos
acordarnos de utilizar uno de estos comandos (o poner la correspondiente opción
en un programa con interfaz gráfica):
- Tipo
ASCII
Adecuado para transferir archivos que solo contengan
caracteres imprimibles (archivos ASCII, no archivos resultantes de un
procesador de texto), por ejemplo páginas HTML, pero no las imágenes que puedan
contener. Se transforman algunos símbolos de control para mantenerlos
compatibles entre diferentes sistemas, por ejemplo, si el archivo está alojado
sobre un servidor linux, el salto de línea para los archivos de texto es
"\n" (byte 10 en decimal). Si el cliente es un sistema Mac, el salto
de línea es "\r" (byte 13 en decimal), este modo cambia estos
símbolos de control para que el archivo sea legible en ambos lados, al igual
que si se envía a un sistema windows, el salto de línea es "\r\n"
(dos bytes, 13 y 10). Si se usa este modo en archivos que no son de texto
plano, en el caso de intercambiarse entre diferentes sistemas, ese archivo quedará
corrupto.
- Tipo
Binario
Este tipo es usado cuando se trata de archivos comprimidos,
ejecutables para PC, imágenes, archivos de audio, entre otros.
Ejemplos de cómo transferir algunos tipos de archivo
dependiendo de su extensión:
|
Extensión de archivo
|
Tipo de transferencia
|
|
txt (texto)
|
ascii
|
|
html (página WEB)
|
ascii
|
|
doc (documento)
|
binario
|
|
ps (poscript)
|
ascii
|
|
hqx (comprimido)
|
ascii
|
|
Z (comprimido)
|
binario
|
|
ZIP (comprimido)
|
binario
|
|
ZOO (comprimido)
|
binario
|
|
Sit (comprimido)
|
binario
|
|
pit (comprimido)
|
binario
|
|
shar (comprimido)
|
binario
|
|
uu (comprimido)
|
binario
|
|
ARC (comprimido)
|
binario
|
|
tar (empaquetado)
|
binario
|
En la red existen diversas soluciones de software que
desarrolla este tipo de tecnología, los más conocidos, son Filezilla (software
libre) y CuteFTP (shareware).
Comandos FTP
|
Comando y argumentos
|
Acción que realiza
|
|
open servidor
|
Inicia una conexión con un servidor FTP.
|
|
close o disconnect
|
Finaliza una conexión FTP sin cerrar el programa cliente.
|
|
bye o quit
|
Finaliza una conexión FTP y la sesión de trabajo con el
programa cliente.
|
|
cd directorio
|
Cambia el directorio de trabajo en el servidor.
|
|
delete archivo
|
Borra un archivo en el servidor
|
|
mdelete patrón
|
Borra múltiples archivos basado en un patrón que se aplica
al nombre.
|
|
dir
|
Muestra el contenido del directorio en el que estamos en
el servidor.
|
|
get archivo
|
Obtiene un archivo
|
|
noop No Operation
|
Se le comunica al servidor que el cliente está en modo de
no operación, el servidor usualmente responde con un «ZZZ» y refresca el
contador de tiempo inactivo del usuario.
|
|
mget archivos
|
Obtiene múltiples archivos
|
|
hash
|
Activa la impresión de caracteres # a medida que se
transfieren archivos, a modo de barra de progreso.
|
|
lcd directorio
|
Cambia el directorio de trabajo local.
|
|
ls
|
Muestra el contenido del directorio en el servidor.
|
|
prompt
|
Activa/desactiva la confirmación por parte del usuario de
la ejecución de comandos. Por ejemplo al borrar múltiples archivos.
|
|
put archivo
|
Envía un archivo al directorio activo del servidor.
|
|
mput archivos
|
Envía múltiples archivos.
|
|
pwd
|
Muestra el directorio activo en el servidor.
|
|
rename archivo
|
Cambia el nombre a un archivo en el servidor.
|
|
rmdir directorio
|
Elimina un directorio en el servidor si ese directorio
está vacío.
|
|
status
|
Muestra el estado actual de la conexión.
|
|
bin o binary
|
Activa el modo de transferencia binario.
|
|
ascii
|
Activa el modo de transferencia en modo texto ASCII.
|
|
!
|
Permite salir a línea de comandos temporalmente sin cortar
la conexión. Para volver, teclear exit en la línea de
comandos.
|
|
? nombre de comando
|
Muestra la información relativa al comando.
|
|
? o help
|
Muestra una lista de los comandos disponibles.
|
|
append nombre del archivo
|
Continua una descarga que se ha cortado previamente.
|
|
bell
|
Activa/desactiva la reproducción de un sonido cuando ha
terminado cualquier proceso de transferencia de archivos.
|
|
glob
|
Activa/desactiva la visualización de nombres largos de
nuestro PC.
|
|
literal
|
Con esta orden se pueden ejecutar comandos del servidor de
forma remota. Para saber los disponibles se utiliza: literal help.
|
|
mkdir
|
Crea el directorio indicado de forma remota.
|
|
quote
|
Hace la misma función que literal.
|
|
send nombre del archivo
|
Envía el archivo indicado al directorio activo del
servidor.
|
|
user
|
Para cambiar nuestro nombre de usuario y contraseña sin
necesidad de salir de la sesión ftp.
|
Códigos de respuesta de FTP
A continuación se muestra un resumen de la respuesta de los
códigos FTP que puede ser devuelto por un servidor FTP. Estos códigos se han
estandarizado en RFC 959 por
IETF. El código de respuesta es un valor de tres dígitos. El primer dígito se
utiliza para indicar una de tres posibles resultados-el éxito, el fracaso o
para indicar un error o una respuesta incompleta:
- 2yz
- respuesta Éxito
- 4yz
o 5yz - No hay respuesta
- 1yz
o 3yz - Un error o una respuesta incompleta
El segundo dígito define la clase de error:
- x0z
- Sintaxis. Estas respuestas se refieren a errores de sintaxis.
- x1z
- Información. Las respuestas a las solicitudes de información.
- x2z
- Conexiones. Respuestas en referencia al control y las conexiones de
datos.
- x3z
- Autenticación y contabilidad. Respuestas para el proceso de inicio de
sesión y los procedimientos contables.
- x4z
- No definido.
- x5z
- Sistema de archivos. Estas respuestas transmiten códigos de estado del
sistema de archivos del servidor.
El tercer dígito del código de respuesta se utiliza para
proporcionar detalles adicionales para cada una de las categorías definidas por
el segundo dígito.


No hay comentarios:
Publicar un comentario