El Protocolo de Transferencia de Archivos (en inglés File Transfer Protocol o FTP) es un protocolo de comunicación estandarizado utilizado para transferir archivos de computadora entre un cliente y un servidor a través de una red. Desarrollado a principios de los años 1970, FTP se ha consolidado como un protocolo fundamental de internet. Su marco operativo sigue un modelo cliente-servidor, donde el cliente inicia una conexión con el servidor para facilitar la transferencia de archivos. Es importante destacar que FTP emplea conexiones de control y de datos distintas para agilizar el proceso de transferencia.
FTP opera a través de dos conexiones separadas para facilitar la transferencia de archivos entre el cliente y el servidor: la conexión de control y la conexión de datos.
FTP opera en dos modos para las transferencias de archivos:
Modo Activo | Modo Pasivo |
---|---|
El cliente especifica la dirección IP del servidor y el número de puerto para conectarse | El servidor proporciona una dirección IP y un número de puerto, permitiendo al cliente establecer una conexión para la transferencia de archivos |
La decisión de usar el modo activo o pasivo depende de la configuración de la red y la capacidad para establecer conexiones de datos a través de firewalls y dispositivos NAT.
Las conexiones FTP a menudo encuentran obstáculos al atravesar dispositivos de traducción de direcciones de red (NAT) y firewalls. Los dispositivos NAT alteran las direcciones IP y los números de puerto de los paquetes a medida que pasan, lo que puede interrumpir el establecimiento de la conexión de datos en FTP. De manera similar, los firewalls pueden bloquear solicitudes de conexión entrantes para la conexión de datos.
Para abordar estos desafíos, FTP incorpora un comando PASV (Pasivo), que permite al servidor designar una dirección IP y un número de puerto para que el cliente se conecte para la transferencia de datos. Este mecanismo ayuda a sortear las restricciones impuestas por firewalls y dispositivos NAT. Además, ciertos firewalls admiten pasarelas a nivel de aplicación capaces de inspeccionar el tráfico FTP y abrir y cerrar puertos dinámicamente según sea necesario para la transferencia de datos.
Con el tiempo, las transferencias de archivos FTP se han facilitado a través de varias aplicaciones de software. Inicialmente, los clientes FTP eran predominantemente interfaces de línea de comandos. Sin embargo, con los avances tecnológicos, han surgido aplicaciones de cliente FTP más amigables para el usuario. Estas aplicaciones ofrecen características como funcionalidad de arrastrar y soltar, soporte para reanudar transferencias interrumpidas e interfaces gráficas de usuario (GUI) para una navegación simplificada.
Además, muchos navegadores web han integrado funcionalidad de cliente FTP, permitiendo a los usuarios acceder directamente a los servidores FTP. Sin embargo, debido a preocupaciones de seguridad y la disminución de la prevalencia del protocolo, los principales navegadores han eliminado progresivamente el soporte para FTP.
Aunque FTP sirve como un protocolo práctico para transferencias de archivos, sus vulnerabilidades de seguridad son una preocupación notable. Entre estas se encuentra la transmisión de credenciales de inicio de sesión y datos de archivos en texto plano, lo que lo hace susceptible a la interceptación y acceso no autorizado.
Para abordar estas deficiencias de seguridad, se han desarrollado varias alternativas seguras al FTP tradicional:
Si bien tanto FTP como HTTP se utilizan para transferir archivos a través de internet, difieren en varios aspectos clave.
Característica | FTP | HTTP |
---|---|---|
Conexión | Canales de control y datos separados | Conexión única para control y datos |
Estado | Mantenimiento de estado (información de sesión) | Stateless (cada solicitud es independiente) |
Adecuación | Archivos grandes, transferencias reanudables | Archivos más pequeños, simplicidad y facilidad de uso |
Seguridad | Menos seguro (FTP tradicional) | Puede ser asegurado con HTTPS |
Caché | No | Sí (mejora el rendimiento para repeticiones) |