El protocolo de transferencia de archivos (FTP)

  La transferencia de archivos es la transmisión de un archivo del ordenador a través de un canal de comunicación de un sistema a otro. Normalmente, la transferencia de archivos está mediada por un protocolo de comunicaciones. En la historia de la computación se han diseñados un gran número de protocolos de transferencia de archivos para diferentes contextos.
  La diferencia con un protocolo de propósito general de comunicación es que los protocolos de transferencia de archivos no están diseñados para enviar datos arbitrarios o facilitar la comunicación asíncrona, como sesiones de Telnet, sino que su objetivo únicamente es enviar la secuencia de bits almacenada como una sola unidad en un sistema de ficheros, además de todos los metadatos, como el nombre del archivo, el tamaño del archivo, fecha y hora.
  En informática, la “transferencia de archivos” es un término genérico para referirse al acto de transmisión de ficheros a través de una red de ordenadores. Si bien el término suele estar ligado al protocolo de transferencia de archivos ["File Transfer Protocol" ("FTP"), en inglés], hay muchas formas de transferir archivos a través de una red.
  Los servidores que proporcionan un servicio de transferencia de archivos a menudo son llamados servidores de archivos.

  Existen dos tipos de transferencias de archivos:
  •   Transferencia de archivos basada en la recepción ("Pull-based", en inglés): El receptor inicia una solicitud de transmisión de ficheros.
  •   Transferencia de archivos basada en la emisión ("Push-based", en inglés): El emisor inicia una solicitud de transmisión de ficheros.
  Por otra parte, la transferencia de archivos puede tener lugar sobre una variedad de niveles:

  •   Transferencias de archivos transparentes a través sistemas de archivos de red.
  •   Transferencia de archivos explícitas desde servicios de transferencia de archivos dedicados, como FTP o HTTP.
  •   Transferencia de archivos distribuidas entre redes punto a punto.
  •   Transferencia de archivos en los sistemas de mensajería instantánea.
  •   Transferencia de archivos entre computadoras y dispositivos periféricos.
  •   Transferencia de archivos sobre vínculos directos módem o serie (null modem), como XMODEM, YMODEM y ZMODEM.

EL PROTOCOLO DE TRANSFERENCIA DE ARCHIVOS

  Como ya se ha mencionado más arriba, se trata del método de transferencia de archivos más conocido en el mundo informático.

 El protocolo en sí es un conjunto de normas y reglas que determinan la forma que deben de tener los mensajes de texto intercambiadas entre clientes y servidores FTP.
  Utiliza TCP como protocolo de transporte.
Estos mensajes contienen comandos y respuestas:
  •   Comandos: Cadenas de caracteres que terminan con el código de final de línea ("<CR>+<LF>", retorno de carro seguido de salto de línea). 
  •   Respuestas: Acción llevada a cabo por el servidor cuando recibe un comando. Están formadas por un código de 3 dígitos, que indican cómo se procesó el comando, y un mensaje de texto descriptivo. Los dígitos indican el tipo de respuesta: Primer dígito, indica si la acción solicitada fue exitosa o no; el segundo indica a qué se refiere la respuesta; tercer dígito, ofrece información más específica relacionada con el segundo dígito.
El protocolo FTP permite dos tipos de acceso:
  •   Acceso anónimo: Usuario especial anónimo (se suele llamar "anonymous" y/o "ftp"). Normalmente, este tipo de acceso sólo permite al usuario descargar ficheros. 
  •   Acceso autorizado: Usuario que debe existir en el servidor. Dentro de este tipo, existen dos subtipos: Usuario local del sistema operativo donde está instalado el servidor FTP; usuario “virtual”, creado para el acceso FTP. Además, en el servidor se configuran los privilegios de cada usuario de este tipo (descargar, subir, borrar, acceso, limitación de espacio…).
  En este protocolo existen dos tipos de conexión, puesto que los servidores y los clientes mantienen conexiones independientes para control y transferencia de datos:
  •   Conexión de control: Inicialmente, el cliente establece una conexión con el servidor para “conversar” con él. Sus características más relevantes son: Esta le envía comandos (get, put, ls, etc.) y recibe respuestas del servidor sobre cómo atiende esas peticiones; permanece activa hasta que el usuario termina la sesión o el servidor cierra la conexión por inactividad (lo que suele conocer como "timeout"); el servidor puede atender múltiples conexiones de control al mismo tiempo; por la conexión de control nunca se intercambian datos; los servidores FTP utilizan el puerto "21/TCP" para las conexiones de control; los clientes usan puertos mayores a "1023" para iniciar o atender conexiones. 
  •   Conexión de datos: Cuando el cliente solicita una transferencia de información se crea una nueva conexión que se cierra al terminar la transmisión. Sus características más importantes son: Asociadas a una conexión de control pueden existir múltiples conexiones de datos simultáneas (hasta un máximo que se configura en el servidor para evitar sobrecarga); por esta conexión nunca se envían comandos; inicialmente, los servidores usaban el puerto "20/TCP" para iniciar conexiones de datos (no siempre es así); los clientes usan puertos mayores a "1023" para iniciar o atender conexiones.
 
    Por otra parte, también existen modos de conexión para el cliente FTP:
 Modo activo
   Se trata del modo nativo de un servicio FTP. Es el servidor el que inicia las conexiones de datos y el cliente tiene que abrir los puertos para atender dichas conexiones. De este modo:
  1.   El cliente establece una conexión de control, para lo cual, abre un puerto local mayor que 1023 (en este ejemplo, "3000"), y establece una conexión TCP con el puerto 21 del servidor. 
  2.   Cuando se solicita una transferencia de datos, el cliente envía el comando "PORT", donde especifica la IP y el puerto que usará para la conexión de datos. Por su parte, el servidor inicia una conexión desde el puerto 20 hacia el puerto indicado por el cliente ("3001"); se utiliza esta conexión para el intercambio de datos.
  Este modo de conexión suele presentar el siguiente problema: El cliente tiene que aceptar conexiones a puertos superiores a 1023, lo que puede comprometer su seguridad, ya que su cortafuegos evitará estas conexiones aleatorias; además, si el cliente se encuentra detrás de un router/NATP, éste descartará las conexiones iniciadas desde el exterior a los puertos que abre el cliente.
  La solución a este problema consiste en que sea el cliente el que inicie las conexiones.

Modo pasivo
  En este modo, siempre es el cliente el que comienza las conexiones con el servidor. El puerto 20 del servidor no se utiliza. Así:
  1.    El cliente establece una conexión de control. Abre un puerto local mayor que 1023 (en este ejemplo, "3000"),  y establece una conexión TCP con el puerto 21 del servidor. 
  2.   Cuando se solicita una transferencia de datos, el cliente envía el comando "PASV" para activar el modo pasivo, mientras que el servidor devuelve un número de puerto disponible ("4000"); finalmente, el cliente inicia la conexión TCP, abre un puerto local mayor de 1023 ("3001") hacia el puerto enviado por el servidor. Se emplea la conexión de datos para intercambiar la información.
  No obstante, ahora el problema está en el lado del servidor, puesto que los cortafuegos suelen hacer un seguimiento de las conexiones pasivas, y los routers/NATP también dan problemas.



   Por este motivo, en ambos modos de conexión se hace necesario configurar correctamente los cortafuegos y, si se tienen, los routers/NATP tanto en el servidor como en el cliente FTP.
 

EL SERVICIO DE FTP

  Este servicio es un protocolo de red para la transferencia de archivos entre sistemas conectados a una red TCP (Transmission Control Protocol), basado en la arquitectura cliente-servidor. Desde un equipo cliente se puede conectar a un servidor para descargar archivos desde él o para enviarle 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 del 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 inicio de sesión y contraseña 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 puede capturar este tráfico, acceder al servidor y/o apropiarse de los archivos transferidos.
  Para solucionar este problema son de gran utilidad aplicaciones como SCP y SFTP, incluidas en el paquete SSH, que permiten transferir archivos pero cifrando todo el tráfico.

   Por lo tanto, mediante este servicio es posible conectarse desde un equipo cliente a un servidor para bajar o subir ficheros, independentemente del sistema operativo utilizado en cada equipo. Los pasos a seguir son los siguientes:
  •   Establecer la conexión entre programa cliente y programa servidor FTP.
  •   Autenticación (usuario y contraseña).
  •  Intercambio de ficheros.
  •   Cerrar la conexión.
   El protocolo de FTP se emplea en la capa de red de aplicación, proporcionando el conocido como servicio FTP. Dicho servicio se caracteriza por:
  •   Su uso desde hace más de 40 años (1971). 
  •   Se sigue utilizando tanto en Internet como en redes corporativas. 
  •   Permite acceder a sistemas remotos y ver su contenido, intercambiar ficheros desde o hacia el sistema remoto (subir / bajar), y hacer labores de administración en el sistema remoto (renombrar, crear/borrar ficheros y carpetas, cambiar permisos, etc).
  Sus principales ventajas son:
  •   Sencillo de configurar y administrar. 
  •   Velocidad, estabilidad y seguridad en la transferencia de información. 
  •   Independiente del sistema operativo.
  Sin embargo, su mayor inconveniente es la seguridad (como se ha indicado más arriba), puesto que FTP no es un protocolo seguro, ya que fue diseñado para ofrecer velocidad, no seguridad. Y, aunque se utilizan mecanismos de autentificación en el servidor, no se garantiza que los equipos envueltos en la transferencia sean quienes dicen ser [vulnerable a ataques de suplantación de identidade ("spoofing", en inglés)], y todo el intercambio de información es en forma de texto plano sin ningún tipo de cifrado [vulnerable a ataques de análisis de tráfico de red ("sniffing", en inglés)]. La arquitectura del servicio FTP (al igual que otros servicios informaticos con la misma arquitectura) se compone de tres elementos básicos: El protocolo FTP (que ha sido ttratado más arriba), el cliente FTP, y el servidor FTP.

Servidor FTP
  Es un programa especial que se ejecuta normalmente en un equipo servidor conectado a Internet. Se encarga de manejar las conexiones de los clientes y, dependiendo de los privilejios definidos, permite la descarga y/o subida de ficheros. Sus aplicaciones más comunes son:
  •   Alojamiento web ("hosting", en inglés): Los clientes utilizan este servicio para subir sus páginas web y los ficheros correpondientes. 
  •   Servidor de copias de seguridad.
Cliente FTP
 En este caso, se trata de un programa que se instala en el ordenador del usuario y que emplea el protocolo FTP para conectarse con un servidor e intercambiar ficheros. Existen multitud de programas cliente FTP, tanto para sistemas libres como para sistemas propietarios.
  Tamén se pueden clasificar según el tipo de interfaz que ofrecen:
  •   Clientes en línea de comandos: La mayoría de sistemas operativos integran un cliente básico de este tipo (Sintaxis: ftp <servidor>). Una vez conectado, el usuario dispone de una serie de comandos (ls, get, put, mget, mput, cd, lcd…) para listar el contenido de los directorios del servidor, descargar y subir ficheros, etc.  Con el comando help o ? se pueden consultar los comandos disponibles. Para ejecutar un comando del equipo local se utiliza ! (por ejemplo, !ls). Excepto el comando cd, que en local es preciso emplear lcd. 
  •   Clientes gráficos: Proporcionan una interfaz gráfica al usuario que facilita la conexión con el servidor y la transferencia de ficheros. Suelen integrar múltiples funciones adicionales. 
  •   Navegadores/exploradores: Los navegadores (Firefox, IE, Chrome, Safari, …) y exploradores (Explorer, Nautilus, ...) actuales pueden actuar como clientes FTP (sintaxis general: ftp://[usuario][:password]@<servidor>), por ejemplo:  "ftp://ftp.udc.es/",  "ftp://alumno@192.168.100.100". Para conectarse de manera anónima (usuario "anonymous"), no es necesario indicar nada. Estos clientes son limitados pero sencillos.
   Mediante el cliente FTP se pueden transmitir los siguientes tipos de transferencia de ficheros:
  •   Formato ASCII: Se transmite byte a byte, y sirve para ficheros de texto (html, txt, java…).
  •   Formato binario: Se transmite bit a bit, y es para ficheros que no son de texto (ejecutables, imágenes, vídeos…).
  Así, el cliente FTP permite definir el formato de la transmisión según el tipo de fichero. La mayoría de los clientes ofrecen un modo automático que detecta el tipo de fichero y establece el tipo apropiado.

 PROGRAMAS DE FTP

   Los programas de FTP más populares son:

Classic FTP
  Se trata de un cliente FTP gráfico muy sencillo pero eficiente.
 Tiene versión gratuita y de pago tanto para Windows como para Mac OS.
 Classic FTP, así como su nombre indica, ha sido específicamente diseñado para lucir y parecerse a un cliente FTP típico. Mientras que ofrece las mismas características como otros clientes FTP, este programa es perfecto tanto para los administradores de sitios web avanzados, como para los  principiantes.
  Su interfaz es muy sencilla de usar, lo que facilita la localización y edición de archivos en un sitio web. También puede cargar o descargar archivos presionando un botón.
  Este cliente FTP también cuenta con una práctica herramienta para "sincronizar", donde, presionando un botón, se analiza la carpeta local seleccionada y carga cualquier archivo que no exista en la carpeta remota seleccionada o sea más reciente. Los archivos que son cargados en el lado remoto son aquellos que no existen en el lado local o son más recientes.


CyberDuck
   Se trata de una aplicación cliente de código abierto de FTP y SFTP, WebDAV, Rackspace Cloud, Google Docs, y Amazon S3 para los sistemas operativos Mac OS X y, desde la versión 4, Windows, editado con licencia GPL. Cyberduck está escrito en lenguaje Java y usa la interfaz de usuario Cocoa. Soporta FTP/TLS (FTP seguro sobre SSL/TLS), usando AUTH TLS así como sincronización de directorio. El usuario interactúa con el GUI de la aplicación Cocoa, incluyendo la transferencia de fichero mediante arrastrar y soltar y las notificaciones Growl. Además puede abrir algunos archivos con editores de texto externos.
  Este programa incluye un gestor de favoritos y soporta los programas de Mac OS X Keychain y Bonjour networking. Soporta muchos idiomas, incluyendo inglés, checo, francés, finés, alemán, japonés, coreano, noruego, portugués, eslovaco, español, chino (tradicional y simplificado), ruso, sueco, húngaro, danés, polaco, indonesio, catalán, galés, tailandés, turco y hebreo. 


FileZilla
  Es un programa de FTP que puede tener versión tanto de servidor como de cliente.
 Se trata de un programa de ambiente multiplataforma,​ de código abierto y software libre, licenciado bajo GPLv2. Soporta los protocolos FTP, SFTP y FTP sobre SSL/TLS (FTPS).
  Inicialmente fue diseñado para funcionar en Microsoft Windows, pero desde la versión 3.0.0, gracias al uso de wxWidgets, es multiplataforma, estando disponible además para otros sistemas operativos, entre ellos GNU/Linux, FreeBSD y Mac OS.
  El código fuente de FileZilla y las descargas estaban hospedadas en SourceForge, el cual presentó este programa como el Proyecto del Mes en noviembre de 2003. Actualmente hospeda el código fuente en su propio sitio de red y las descargas en Open Hub.
  A pesar del nombre, no guarda ninguna relación con la Fundación Mozilla ni menos con sus productos como el navegador Mozilla Firefox.


FireFTP
  Este programa es una extensión para el navegador web Mozilla Firefox que funciona como cliente FTP con soporte para FTP, FTPS, y SFTP.
  A pesar de no ser una aplicación de escritorio, es un cliente FTP bastante avanzado y de mucha utilidad, siendo su principal ventaja poder ser abierto y utilizado en cuanto se necesite, sin tener que esperar a la ejecución de ningún programa o archivo (como sucede con el software FTP de escritorio).
  FireFTP se activa desde la barra de menús abriendo dos paneles dentro del navegador. El panel de la izquierda muestra el directorio de archivos local en forma de árbol, mientras que en el panel de la derecha se muestra el servidor FTP remoto. Entre los dos paneles existen dos botones, uno para subir archivos (de local a servidor) y otro para descargalos (de servidor a local).

  Dado que es una extensión de un navegador de red, este programa cliente FTP gráfico puede utilizarse en Linux, Windows y Mac OS, siendo gratuito.

Transmit
  Se trata de un programa cliente FTP gráfico propietario para Mac OS.
  Este programa posee una estructura intuitiva característica que tiene un estilo fresco y simple.
 Además de funcionar con conexiones FTP, SFTP, WebDAV y S3 es compatible con nubes personales de Backblaze B2, Box, Google Drive, DreamObjects, Dropbox, Microsoft Azure y Rackspace.
  Por otra parte, gracias a Panic Sync, con Transmit es posible sincronizar diferentes páginas de forma sencilla en diferentes dispositivos.

  Este cliente FTP también tiene otras características interesantes como etiquetas, autenticación por dos factores, acceso al terminal o inspector.
  En general, este programa es una de las mejores opciones para transmisión FTP que Panic, la empresa desarrolladora, ha proporcionado a Mac OS.

WinSCP
   WinSCP es una aplicación libre y de código abierto. Se trata de un cliente SFTP gráfico para Windows que emplea SSH. El anterior protocolo SCP también puede ser empleado. Su función principal es facilitar la transferencia segura de archivos entre dos sistemas informáticos, el local y uno remoto que ofrezca servicios SSHNewbie.
  El desarrollo de este programa comenzó alrededor de marzo del 2000 y continúa. Originalmente fue hospedado por la Universidad de Economía de Praga, donde su autor trabajó en ese momento. Desde el 16 de julio de 2003, está licenciado bajo la licencia GNU GPL, y el código fuente de WinSCP y las descargas están hospedadas en SourceForge.
  Este cliente FTP gráfico se basa en la implementación del protocolo SSH de PuTTY y el protocolo FTP de FileZilla.​ También está disponible como un complemento para el administrador de archivos Altap Salamander, y existe un complemento de terceros para el administrador de archivos FAR Manager.
  WinSCP dispone de dos interfaces, permitiendo al usuario escoger una u otra. Las dos tienen variaciones en sus opciones de configuración y ofrecen un alto grado de personalización.


  Otros programas de servidor FTP son: FTP integrado en Internet Information Server, Serv-U, vsftpd, proftpd, pure-ftpd.

  Aguardo que la presente entrada haya sido interesante para el lector. Si es así, espero que el lector la comente y/o la comparta, por favor.

No hay comentarios:

Publicar un comentario

Deje aquí su comentario, si no puede comentar, pruebe a hacerlo desde otro navegador de red u otro equipo.