stringtranslate.com

Protocolo de transferencia de archivos

El Protocolo de transferencia de archivos ( FTP ) es un protocolo de comunicación estándar utilizado para la transferencia de archivos de computadora desde un servidor a un cliente en una red de computadoras . FTP se basa en una arquitectura de modelo cliente-servidor que utiliza conexiones de datos y control separadas entre el cliente y el servidor. [1] Los usuarios de FTP pueden autenticarse con un protocolo de inicio de sesión de texto sin formato , normalmente en forma de nombre de usuario y contraseña, pero pueden conectarse de forma anónima si el servidor está configurado para permitirlo. Para una transmisión segura que proteja el nombre de usuario y la contraseña, y encripte el contenido, FTP a menudo se protege con SSL/TLS ( FTPS ) o se reemplaza con el Protocolo de transferencia de archivos SSH (SFTP).

Las primeras aplicaciones de cliente FTP fueron programas de línea de comandos desarrollados antes de que los sistemas operativos tuvieran interfaces gráficas de usuario , y todavía se envían con la mayoría de los sistemas operativos Windows , Unix y Linux . [2] [3] Desde entonces, se han desarrollado muchos clientes FTP dedicados y utilidades de automatización para computadoras de escritorio , servidores, dispositivos móviles y hardware, y el FTP se ha incorporado a aplicaciones de productividad como editores HTML y administradores de archivos .

Los clientes FTP solían integrarse comúnmente en los navegadores web , donde se navegaba por los servidores de archivos con el prefijo URI " ". En 2021, Google Chrome y Firefox , [4] [5]ftp:// dos de los principales proveedores de navegadores web, dejaron de admitir FTP debido a que fue reemplazado por SFTP y FTPS, que son más seguros; aunque ninguno de ellos ha implementado los protocolos más nuevos. [6] [7]

Historia de los servidores FTP

La especificación original del Protocolo de Transferencia de Archivos fue escrita por Abhay Bhushan y publicada como RFC  114 el 16 de abril de 1971. Hasta 1980, FTP se ejecutaba en NCP , el predecesor de TCP/IP . [2] El protocolo fue reemplazado más tarde por una versión TCP/IP, RFC  765 (junio de 1980) y RFC  959 (octubre de 1985), la especificación actual. Varias normas propuestas modifican RFC  959, por ejemplo RFC  1579 (febrero de 1994) habilita FTP compatible con firewall (modo pasivo), RFC  2228 (junio de 1997) propone extensiones de seguridad, RFC  2428 (septiembre de 1998) agrega soporte para IPv6 y define un nuevo tipo de modo pasivo. [8]

Descripción general del protocolo

Comunicación y transferencia de datos

Ilustración de cómo iniciar una conexión pasiva utilizando el puerto 21

El FTP puede ejecutarse en modo activo o pasivo , lo que determina cómo se establece la conexión de datos. [9] (Este sentido de "modo" es diferente del del comando MODE en el protocolo FTP).

Ambos modos se actualizaron en septiembre de 1998 para admitir IPv6 . En ese momento se introdujeron más cambios en el modo pasivo, actualizándolo al modo pasivo extendido . [12]

El servidor responde a través de la conexión de control con códigos de estado de tres dígitos en ASCII con un mensaje de texto opcional. Por ejemplo, "200" (o "200 OK") significa que el último comando se ejecutó correctamente. Los números representan el código de la respuesta y el texto opcional representa una explicación o solicitud legible para humanos (por ejemplo, <Se necesita una cuenta para almacenar el archivo>). [1] Una transferencia en curso de datos de archivo a través de la conexión de datos se puede interrumpir mediante un mensaje de interrupción enviado a través de la conexión de control.

FTP necesita dos puertos (uno para enviar y otro para recibir) porque originalmente fue diseñado para operar sobre el Protocolo de Control de Red (NCP), que era un protocolo simplex que utilizaba dos direcciones de puerto , estableciendo dos conexiones, para comunicaciones bidireccionales. Se reservaban un puerto par y uno impar para cada aplicación o protocolo de capa de aplicación . La estandarización de TCP y UDP redujo la necesidad de usar dos puertos simplex para cada aplicación a un puerto dúplex, [13] : 15  pero el protocolo FTP nunca se modificó para usar solo un puerto, y continuó usando dos para compatibilidad con versiones anteriores.

Travesía de NAT y firewall

Normalmente, el FTP transfiere datos haciendo que el servidor se vuelva a conectar con el cliente, después de que el cliente envíe el comando PORT. Esto es problemático tanto para los NAT como para los firewalls, que no permiten conexiones desde Internet hacia los hosts internos. [14] Para los NAT, una complicación adicional es que la representación de las direcciones IP y el número de puerto en el comando PORT se refieren a la dirección IP y al puerto del host interno, en lugar de a la dirección IP pública y al puerto del NAT.

Existen dos enfoques para resolver este problema. Uno es que el cliente FTP y el servidor FTP utilicen el comando PASV, que hace que se establezca la conexión de datos desde el cliente FTP al servidor. [14] Este método es ampliamente utilizado por los clientes FTP modernos. Otro enfoque es que el NAT altere los valores del comando PORT, utilizando una puerta de enlace a nivel de aplicación para este propósito. [14]

Un diagrama modelo de cómo funciona el FTP

Tipos de datos

Al transferir datos a través de la red, se definen cinco tipos de datos: [2] [3] [8]

Tenga en cuenta que estos tipos de datos se denominan comúnmente "modos", aunque de manera ambigua esa palabra también se usa para referirse al modo de comunicación activo vs. pasivo (ver arriba) y los modos establecidos por el comando MODE del protocolo FTP (ver abajo).

Para archivos de texto (TIPO A y TIPO E), se proporcionan tres opciones de control de formato diferentes para controlar cómo se imprimirá el archivo:

Estos formatos eran principalmente relevantes para las impresoras de línea ; la mayoría de los clientes/servidores FTP contemporáneos solo admiten el control de formato predeterminado de N.

Estructuras de archivos

La organización de los archivos se especifica mediante el comando STRU. Las siguientes estructuras de archivos se definen en la sección 3.1.1 de RFC959:

La mayoría de los clientes y servidores FTP contemporáneos sólo admiten STRU F. STRU R todavía se utiliza en aplicaciones de transferencia de archivos de mainframes y minicomputadoras.

Modos de transferencia de datos

La transferencia de datos se puede realizar en cualquiera de tres modos: [1] [2]

La mayoría de los clientes y servidores FTP contemporáneos no implementan el MODO B o el MODO C; los clientes y servidores FTP para sistemas operativos de mainframes y minicomputadoras son la excepción a eso.

Algunos programas FTP también implementan un modo comprimido basado en DEFLATE , a veces llamado "Modo Z" por el comando que lo habilita. Este modo fue descrito en un borrador de Internet , pero no estandarizado. [16]

GridFTP define modos adicionales, MODO E [17] y MODO X, [18] como extensiones del MODO B.

Comandos adicionales

Las implementaciones más recientes de FTP admiten el comando Modificar hecho: hora de modificación (MFMT), que permite a un cliente ajustar ese atributo de archivo de forma remota, lo que permite la conservación de ese atributo al cargar archivos. [19] [20]

Para recuperar la marca de tiempo de un archivo remoto, existe el comando MDTM . Algunos servidores (y clientes) admiten una sintaxis no estándar del comando MDTM con dos argumentos, que funciona de la misma manera que MFMT [21].

Acceso

Una computadora en la estación Amundsen-Scott del Polo Sur iniciando sesión en un servidor FTP y transfiriendo un archivo, en 1994

El inicio de sesión FTP utiliza un esquema normal de nombre de usuario y contraseña para otorgar acceso. [2] El nombre de usuario se envía al servidor mediante el comando USER y la contraseña se envía mediante el comando PASS. [2] Esta secuencia no está cifrada "en la red", por lo que puede ser vulnerable a un ataque de rastreo de red . [22] Si el servidor acepta la información proporcionada por el cliente, el servidor enviará un saludo al cliente y comenzará la sesión. [2] Si el servidor lo admite, los usuarios pueden iniciar sesión sin proporcionar credenciales de inicio de sesión, pero el mismo servidor puede autorizar solo un acceso limitado para dichas sesiones. [2]

FTP anónimo

Un host que proporciona un servicio FTP puede proporcionar acceso FTP anónimo . [2] Los usuarios normalmente inician sesión en el servicio con una cuenta "anónima" (en minúsculas y con distinción entre mayúsculas y minúsculas en algunos servidores FTP) cuando se les solicita el nombre de usuario. Aunque normalmente se les pide a los usuarios que envíen su dirección de correo electrónico en lugar de una contraseña, [3] en realidad no se realiza ninguna verificación de los datos proporcionados. [23] Muchos hosts FTP cuyo propósito es proporcionar actualizaciones de software permitirán inicios de sesión anónimos. [3]

Soporte de software

Cliente FileZilla que se ejecuta en Windows, uno de los programas de cliente FTP más conocidos

Administradores de archivos

Muchos administradores de archivos tienden a tener implementado el acceso FTP, como el Explorador de archivos (anteriormente el Explorador de Windows) en Microsoft Windows . Este cliente solo se recomienda para transferencias de archivos pequeños desde un servidor, debido a las limitaciones en comparación con el software de cliente dedicado. [24] No es compatible con SFTP . [25]

Ambos administradores de archivos nativos para KDE en Linux ( Dolphin y Konqueror ) admiten FTP y SFTP. [26] [27]

FTPd primitivo en Android, ejecutando activamente un servidor FTP y SFTP

En Android , el administrador de archivos Mis archivos del Samsung Galaxy tiene un cliente FTP y SFTP integrado . [28]

Navegador web

Durante mucho tiempo, la mayoría de los navegadores web más comunes podían recuperar archivos alojados en servidores FTP, aunque no todos tenían soporte para extensiones de protocolo como FTPS . [3] [29] Cuando se proporciona una URL FTP (en lugar de HTTP) , los contenidos accesibles en el servidor remoto se presentan de una manera similar a la utilizada para otro contenido web.

Google Chrome eliminó por completo la compatibilidad con FTP en Chrome 88, lo que también afectó a otros navegadores basados ​​en Chromium , como Microsoft Edge . [30] Firefox 88 deshabilitó la compatibilidad con FTP de forma predeterminada, y Firefox 90 la eliminó por completo. [31] [4]

FireFTP es una extensión de navegador discontinuada que fue diseñada como un cliente FTP con todas las funciones para ejecutarse dentro de Firefox , pero cuando Firefox dejó de brindar soporte para FTP, el desarrollador de la extensión recomendó usar Waterfox . [32] Algunos navegadores, como Lynx basado en texto , aún admiten FTP. [33]

Sintaxis

La sintaxis de la URL de FTP se describe en RFC  1738 y toma el formato: (las partes entre corchetes son opcionales).ftp://[user[:password]@]host[:port]/[url-path]

Por ejemplo, la URL ftp://public.ftp-servers.example.com/mydirectory/myfile.txt representa el archivo myfile.txt del directorio mydirectory del servidor public.ftp-servers.example.com como un recurso FTP. La URL ftp://user001:[email protected]/mydirectory/myfile.txt agrega una especificación del nombre de usuario y la contraseña que se deben usar para acceder a este recurso.

Se pueden encontrar más detalles sobre cómo especificar un nombre de usuario y una contraseña en la documentación de los navegadores (por ejemplo, Firefox [34] e Internet Explorer [35] ). De manera predeterminada, la mayoría de los navegadores web utilizan el modo pasivo (PASV), que atraviesa más fácilmente los firewalls del usuario final.

Ha habido algunas variaciones en cómo los distintos navegadores tratan la resolución de ruta en los casos en que hay un directorio de inicio que no es raíz para un usuario. [36]

Gestor de descargas

La mayoría de los gestores de descarga más habituales pueden recibir archivos alojados en servidores FTP, mientras que algunos de ellos también ofrecen una interfaz para recuperar los archivos alojados en servidores FTP. DownloadStudio no sólo permite descargar un archivo de un servidor FTP, sino también ver la lista de archivos en un servidor FTP. [37]

Otro

LibreOffice declaró que su soporte FTP estaba obsoleto a partir de la versión 7.4, esto se eliminó más tarde en la versión 24.2. [38] [39]

Seguridad

FTP no fue diseñado para ser un protocolo seguro y tiene muchas debilidades de seguridad. [40] En mayo de 1999, los autores de RFC  2577 enumeraron una vulnerabilidad a los siguientes problemas:

FTP no encripta su tráfico; todas las transmisiones son en texto claro, y los nombres de usuario, contraseñas, comandos y datos pueden ser leídos por cualquier persona capaz de realizar captura de paquetes ( sniffing ) en la red. [2] [40] Este problema es común a muchas de las especificaciones del Protocolo de Internet (como SMTP , Telnet , POP e IMAP ) que fueron diseñadas antes de la creación de mecanismos de encriptación como TLS o SSL. [8]

Las soluciones comunes a este problema incluyen:

  1. Utilizando las versiones seguras de los protocolos inseguros, por ejemplo, FTPS en lugar de FTP y TelnetS en lugar de Telnet.
  2. Utilizando un protocolo diferente, más seguro, que pueda realizar el trabajo, por ejemplo, el Protocolo de transferencia de archivos SSH o el Protocolo de copia segura .
  3. Utilizando un túnel seguro como Secure Shell (SSH) o una red privada virtual (VPN).

FTP sobre SSH

FTP sobre SSH es la práctica de tunelizar una sesión FTP normal sobre una conexión Secure Shell. [40] Debido a que FTP utiliza múltiples conexiones TCP (algo inusual para un protocolo TCP/IP que todavía se utiliza), es particularmente difícil tunelizar sobre SSH. Con muchos clientes SSH, intentar configurar un túnel para el canal de control (la conexión inicial de cliente a servidor en el puerto 21) protegerá solo ese canal; cuando se transfieren datos, el software FTP en cada extremo configura nuevas conexiones TCP (canales de datos) y, por lo tanto, no tiene protección de confidencialidad o integridad .

De lo contrario, es necesario que el software cliente SSH tenga conocimientos específicos del protocolo FTP, para poder supervisar y reescribir los mensajes del canal de control FTP y abrir de forma autónoma nuevos reenvíos de paquetes para los canales de datos FTP. Los paquetes de software que admiten este modo incluyen:

FTP sobre SSH no debe confundirse con el Protocolo de transferencia de archivos SSH (SFTP).

Derivados

FTPS

El FTPS explícito es una extensión del estándar FTP que permite a los clientes solicitar que las sesiones FTP se cifren. Esto se hace enviando el comando "AUTH TLS". El servidor tiene la opción de permitir o denegar las conexiones que no soliciten TLS. Esta extensión de protocolo está definida en RFC  4217. El FTPS implícito es un estándar obsoleto para FTP que requería el uso de una conexión SSL o TLS. Se especificó que utilizara puertos diferentes a los del FTP simple.

Protocolo de transferencia de archivos SSH

El protocolo de transferencia de archivos SSH (cronológicamente el segundo de los dos protocolos, abreviado como SFTP) transfiere archivos y tiene un conjunto de comandos similar para los usuarios, pero utiliza el protocolo Secure Shell (SSH) para transferir archivos. A diferencia de FTP, encripta tanto los comandos como los datos, lo que evita que las contraseñas y la información confidencial se transmitan abiertamente a través de la red. No puede interoperar con el software FTP, aunque algunos programas de cliente FTP también ofrecen soporte para el protocolo de transferencia de archivos SSH.

Protocolo trivial de transferencia de archivos

El Protocolo trivial de transferencia de archivos (TFTP) es un protocolo FTP simple y con pasos fijos que permite a un cliente obtener un archivo de un host remoto o colocarlo en él. Uno de sus usos principales es en las primeras etapas del arranque desde una red de área local , ya que TFTP es muy fácil de implementar. TFTP carece de seguridad y de la mayoría de las funciones avanzadas que ofrecen los protocolos de transferencia de archivos más robustos, como el Protocolo de transferencia de archivos. TFTP se estandarizó por primera vez en 1981 y la especificación actual del protocolo se puede encontrar en RFC  1350.

Protocolo simple de transferencia de archivos

El Protocolo simple de transferencia de archivos (el primer protocolo abreviado SFTP), tal como se define en el RFC  913, se propuso como un protocolo de transferencia de archivos (no seguro) con un nivel de complejidad intermedio entre TFTP y FTP. Nunca fue ampliamente aceptado en Internet , y ahora el IETF le asigna el estado Histórico . Se ejecuta a través del puerto 115 y a menudo recibe las siglas de SFTP . Tiene un conjunto de comandos de 11 comandos y admite tres tipos de transmisión de datos: ASCII , binario y continuo. Para sistemas con un tamaño de palabra que es un múltiplo de 8 bits, la implementación de binario y continuo es la misma. El protocolo también admite el inicio de sesión con ID de usuario y contraseña, carpetas jerárquicas y administración de archivos (incluidos rename , delete , upload , download , download with overwrite y download with append ).

Comandos FTP

Códigos de respuesta FTP

A continuación se muestra un resumen de los códigos de respuesta FTP que puede devolver un servidor FTP . Estos códigos han sido estandarizados en RFC  959 por el IETF. El código de respuesta es un valor de tres dígitos. El primer dígito se utiliza para indicar uno de los tres resultados posibles: éxito, fracaso o para indicar un error o una respuesta incompleta:

El segundo dígito define el tipo de error:

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.

Véase también

Referencias

  1. ^ abc Forouzan, BA (2000). TCP/IP: Protocol Suite (1.ª ed.). Nueva Delhi, India: Tata McGraw-Hill Publishing Company Limited.
  2. ^ abcdefghij Kozierok, Charles M. (2005). "La guía TCP/IP v3.0". Tcpipguide.com.
  3. ^ abcde Dean, Tamara (2010). Guía de redes de Network+ . Delmar. págs. 168-171.
  4. ^ ab Vonau, Manuel (7 de julio de 2021). "Firefox sigue los pasos de Chrome y abandona el soporte FTP (Descarga de APK)". Android Police . Consultado el 12 de julio de 2021 .
  5. ^ "Eliminar compatibilidad con FTP - Estado de la plataforma Chrome" www.chromestatus.com . Consultado el 2 de septiembre de 2021 .
  6. ^ por, Escrito (23 de marzo de 2020). "Firefox dejará de ofrecer compatibilidad con FTP". Noticias de Sophos . Consultado el 13 de octubre de 2023 .
  7. ^ Edwards, Benj (14 de julio de 2022). "Chrome y Firefox eliminaron la compatibilidad con FTP: aquí hay una alternativa sencilla". How-To Geek . Consultado el 13 de octubre de 2023 .
  8. ^ abcd Clark, MP (2003). Redes de datos IP e Internet (1.ª ed.). West Sussex, Inglaterra: John Wiley & Sons Ltd.
  9. ^ ab "FTP activo vs. FTP pasivo: una explicación definitiva". Slacksite.com.
  10. ^ Weis, Olga (18 de octubre de 2022). «Puerto FTP: guía completa sobre FTP y números de puerto». Aplicaciones de software completas para Mac . Consultado el 29 de marzo de 2024 .
  11. ^ RFC  959 (estándar) Protocolo de transferencia de archivos (FTP). Postel, J. y Reynolds, J. (octubre de 1985).
  12. ^ RFC  2428 (estándar propuesto) Extensiones para IPv6, NAT y modo pasivo extendido. Allman, M. y Metz, C. y Ostermann, S. (septiembre de 1998).
  13. ^ Stevens, W. Richard (1994). TCP/IP Illustrated Volume I. Vol. 1. Reading, Massachusetts, EE. UU.: Addison-Wesley Publishing Company. ISBN 0-201-63346-9.
  14. ^ abc Gleason, Mike (2005). "El protocolo de transferencia de archivos y su firewall/NAT". Ncftp.com.
  15. ^ Klensin, John. Extensión FTP TYPE para texto internacionalizado. ID draft-klensin-ftpext-typeu-00 . Consultado el 9 de junio de 2020 .
  16. ^ Preston, J. (enero de 2005). Modo de transmisión deflate para FTP. IETF . ID draft-preston-ftpext-deflate-03 . Consultado el 27 de enero de 2016 .
  17. ^ Allcock, W. (abril de 2003). "GridFTP: extensiones de protocolo a FTP para la red" (PDF) .
  18. ^ Mandrichenko, I. (4 de mayo de 2005). "Descripción del protocolo GridFTP v2" (PDF) .
  19. ^ "Comando FTP MFMT". support.solarwinds.com . 11 de octubre de 2018.
  20. ^ "Comandos FTP: DSIZ, MFCT, MFMT, AVBL, PASS, XPWD, XMKD | Serv-U". www.serv-u.com .
  21. ^ "Comando FTP MDTM". support.solarwinds.com . 11 de octubre de 2018.
  22. ^ Prince, Brian (24 de enero de 2012). "¿Deberían las organizaciones retirar el FTP por razones de seguridad?". Security Week . Consultado el 14 de septiembre de 2017 .
  23. ^ RFC  1635 (informativo) Cómo utilizar FTP anónimo. P. & Emtage, A. & Marine, A. (mayo de 1994).
  24. ^ Acceso FTP a través del Explorador de Windows
  25. ^ "CSC373/406: SSH [2011/03/27-29]". fpl.cs.depaul.edu . Consultado el 13 de octubre de 2023 .
  26. ^ "FTP". docs.kde.org . Consultado el 13 de octubre de 2023 .
  27. ^ Cohen, Brent (26 de julio de 2023). «Cómo conectarse a FTP/SFTP en Dolphin | DeviceTests» . Consultado el 13 de octubre de 2023 .
  28. ^ Staff, Moyens (28 de febrero de 2022). "Samsung My Files vs Google Files: ¿Qué administrador de archivos es mejor en los teléfonos Galaxy?". Moyens I/O . Consultado el 13 de octubre de 2023 .
  29. ^ Matthews, J. (2005). Redes informáticas: Protocolos de Internet en acción (1.ª ed.). Danvers, MA: John Wiley & Sons Inc.
  30. ^ Sneddon, Joey (26 de enero de 2021). «Resumen de las versiones de Linux: GParted, Lightworks, Google Chrome y más». omgubuntu.co.uk . Consultado el 30 de enero de 2021 .
  31. ^ "Vea las novedades de Firefox: lanzamiento de Firefox 88.0". mozilla.org . 19 de abril de 2021 . Consultado el 20 de abril de 2021 .
  32. ^ "FireFTP: el cliente FTP gratuito para Waterfox". FireFTP.net . Archivado desde el original el 1 de marzo de 2022.
  33. ^ "Esquemas de URL admitidos en Lynx". Sitio web de Lynx . Consultado el 6 de julio de 2023 .
  34. ^ "Acceso a servidores FTP | Cómo hacerlo | Ayuda de Firefox". Support.mozilla.com. 5 de septiembre de 2012. Consultado el 16 de enero de 2013 .
  35. ^ "Cómo introducir la contraseña de un sitio FTP en Internet Explorer". Archivado desde el original el 2 de julio de 2015. Consultado el 13 de febrero de 2020 .{{cite web}}: CS1 maint: bot: original URL status unknown (link)Escrito para IE 6 y versiones anteriores. Puede funcionar con versiones más nuevas.
  36. ^ Jukka “Yucca” Korpela (18 de septiembre de 1997). «URL de FTP». «TI y comunicación» (jkorpela.fi) . Consultado el 26 de enero de 2020 .
  37. ^ "DownloadStudio - Gestor de descargas de Internet y acelerador de descargas - Características". Conceiva . Consultado el 19 de octubre de 2021 .
  38. ^ "LibreOffice 7.4: Notas de la versión". Wiki de The Document Foundation . Consultado el 10 de septiembre de 2022 .
  39. ^ "Notas de la versión/24.2". Wiki de The Document Foundation . Consultado el 24 de marzo de 2024 .
  40. ^ abc "Cómo proteger el FTP mediante SSH". Nurdletech.com.
  41. ^ "Componentes de la Plataforma de Seguridad de la Información (sección Tectia ConnectSecure)". ssh.com . Archivado desde el original el 31 de julio de 2020.

Lectura adicional

Enlaces externos