Protocolo de Transferencia de Archivos (FTP): Funcionamiento y Modos

Clasificado en Informática

Escrito el en español con un tamaño de 3,4 KB

Protocolo de Transferencia de Archivos (FTP)

FTP es un protocolo para la transferencia de archivos sobre redes TCP, basado en el modelo cliente-servidor. Opera en la capa de aplicación y está definido en la RFC 959, con ampliaciones propuestas en las RFC 2228, 2389, 2428 y 2640, entre otras.

Funcionamiento del Protocolo

Se utilizan dos conexiones: la de control y la de datos.

  • Conexión de control: Se establece en el puerto 21 del servidor. Se usa para la administración de la sesión (comandos, identificadores, contraseñas, etc.).
  • Conexión de datos: Se usa para la transferencia de información.

Al usar dos puertos, se considera un protocolo fuera de banda (out-of-band, frente a protocolos in-band como HTTP). Por ejemplo, se puede interrumpir una transmisión en curso por la conexión de datos enviando un mensaje de interrupción por la de control.

Comandos FTP

Los comandos se envían por la conexión de control. Algunos de ellos son:

  • LIST: Devuelve la información de un directorio o fichero si se especifica; si no, lista el directorio actual.
  • MKD: Crea un directorio.
  • MODE: Fija el modo de transferencia.
  • QUIT: Desconecta la sesión.
  • PORT: Especifica el puerto de la conexión de datos.

Modos de Conexión

Modo Activo

  • El cliente se conecta desde un puerto aleatorio no privilegiado (N > 1024) al puerto de control del servidor (21).
  • El cliente comienza a escuchar en el puerto N+1 y envía este puerto al servidor por la conexión de control.
  • El servidor se conecta al cliente en el puerto N+1 desde su puerto de datos (20).
  • Presenta un problema de seguridad, ya que el cliente debe aceptar conexiones entrantes en cualquier puerto.
  • El firewall puede impedir la conexión.

Modo Pasivo

  • El cliente abre dos puertos aleatorios no privilegiados (N > 1024 y N+1).
  • El primer puerto (puerto de control) se conecta al puerto 21 del servidor (puerto de control) y envía el comando PASV.
  • El servidor abre un puerto aleatorio no privilegiado (P > 1024) y envía el comando PORT P al cliente.
  • El cliente inicia una conexión desde el puerto N+1 al puerto P en el servidor para transferir datos.

Modos de Transferencia

  • Modo stream: Todo el procesamiento se deja a la capa TCP.
  • Modo bloque: El servidor parte los datos en bloques y se los pasa a la capa TCP.
  • Modo comprimido: Los datos se envían comprimidos, normalmente usando compresión run-length.

Representación de los Datos

  • ASCII: Para texto. El fichero se convierte, si es necesario, antes de la transmisión, y se vuelve a convertir en el destino. Es el tipo por defecto y de implementación obligada.
  • IMAGE o BINARY: Se transmite byte a byte y se almacena tal cual se recibe. Se recomienda su implementación.
  • EBCDIC: Como ASCII, pero con el juego de caracteres EBCDIC.
  • Local: Los datos se transmiten en bytes lógicos del tamaño especificado.

Entradas relacionadas: