El protocolo FTP (Activo y Pasivo)

      FTP (File Transfer Protocol) es un protocolo estándar basado en arquitectura cliente-servidor, descrito en la RFC 959 y actualizado en las RFCs 2228 (FTP Security Extensions), 2428 (FTP Extensions for IPv6 and NATs), and 4217 (Securing FTP with TLS).

      Utiliza TCP como protocolo de transporte para proporcionar conexiones extremo a extremo fiables y utiliza dos tipos de conexiones o sesiones:
  • Sesión de control o comandos
  • Sesión de datos



      Dependiendo del modo de conexión del cliente (activo o pasivo), el protocolo FTP utiliza diferentes puertos TCP. TCP utiliza los números de puerto para identificar la aplicación de envío y recepción. Los puertos TCP que utiliza son el 20 para sesión de datos (sólo en el caso del modo activo) y el 21 para establecer la sesión de control.

      La conexión de control es utilizada para todos los comandos de control que el cliente utiliza para acceder al servidor, manejar ficheros y terminar la sesión. Es también la sesión a través de la cual el servidor envía mensajes al cliente en respuesta a los comandos de control.
   
      La conexión de datos sólo se abre cuando el cliente lanza un comando que requiera transferencia de datos. Por tanto es posible que se abra y cierre una sesión FTP sin que haya sido abierta una conexión de datos. La conexión de datos es unidireccional. El protocolo FTP puede transferir datos sólo desde el cliente al servidor o desde el servidor al cliente pero no ambas cosas a la vez. También a diferencia de la conexión de control, la conexión de datos puede ser iniciada tanto desde el cliente como desde el servidor. Las conexiones de datos iniciadas por el servidor son activas, mientras que las iniciadas por el cliente son pasivas.

      Cuando el canal de datos de abre hay varias opciones que deben ser definidas para manejar la transmisión:
  • El modo de transferir los datos
  • El tipo de datos transferidos
  • La estructura de ficheros transferidos
      
      Modo de transmisión. Especifica el modo de transferir los datos. Puede ser:
  • Modo flujo (Stream). Es el modo por defecto. Se transfiere un archivo como un flujo de bytes de datos.
  • Modo bloque (Block). Transfiere un archivo como una serie de bloques. Cada bloque contiene un campo de encabezado con información.
  • Modo comprimido. Este modo habilita compresión sobre los datos transferidos.

      Tipo de datos transferidos. Tenemos cuatro tipos, aunque ASCII y binario son los implementados habitualmente:
  • ASCII. Es el tipo por defecto. Lo utiliza también el canal de control. Su principal propósito es transferir ficheros de texto, excepto cuando ambos ordenadores encuentran el tipo EBCDIC más conveniente. El ordenador que envía los datos, los convierte de una representación de caracteres interna a la representación estándar NVT-ASCII de 8 bits (ver la especificación de Telnet).  El receptor convertirá los datos del tipo estándar a su propia forma interna.
  • Binario. Los datos son transferidos como un flujo continuo de bytes.
  • EBCDIC. Se utiliza si ambos extremos usan la codificación EBCDIC.
  • Local.

      Estructura de ficheros. Especifica la estructura del fichero a ser transferido:
  • Archivo. Es el valor por defecto. Indica que el fichero no tiene estructura interna, es una secuencia de bytes de datos.
  • Registro. Sólo para tipos ASCII o EBCDIC. Indica que el fichero está formado por registros secuenciales.
  • Página. El fichero está formado partes independientes, páginas.

      El protocolo FTP admite dos modos de conexión:
  • Activo
  • Pasivo



     FTP EN MODO ACTIVO

      En este modo el cliente envía por el canal de control al establecer la conexión un comando PORT al servidor indicándole la dirección IP y el número de puerto en el que escuchará. Una vez aceptado el comando PORT, el servidor FTP inicia una conexión hacia el cliente sobre la dirección IP y puerto indicados. Después de que esta conexión se haya establecido ya puede establecerse la sesión de datos. El servidor siempre crea el canal de datos en su puerto 20, mientras que en el lado cliente el canal de datos se asocia a un puerto aleatorio mayor que 1023.
   
      Esta forma de proceder conlleva un grave problema de seguridad si se está conectado en redes inseguras, y es que la máquina cliente debe estar dispuesta a aceptar cualquier conexión de entrada en un puerto superior al 1023. Los firewalls por lo general rechazarán estas conexiones aleatorias.

      Los pasos de una conexión FTP en modo activo se muestran en el siguiente esquema:

File Transfer Protocol. FTP en modo activo

      FTP EN MODO PASIVO


      En el modo pasivo el establecimiento de la conexión de datos se realiza de forma inversa al modo activo. El cliente, en lugar de enviar un comando PORT, envía por el canal de control un comando PASV sin parámetros.  Una vez aceptado este comando,  el servidor responde al mismo incluyendo una dirección IP y un puerto. El cliente inicia entonces la conexión contra el servidor sobre la dirección IP y puerto especificados.

      Los pasos de una conexión FTP en modo pasivo se muestran en el siguiente esquema:

File Transfer Protocol. FTP en modo pasivo

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.