Protocolo FTP (protocolo de transferencia de archivos)

Agosto 2017

Introducción a FTP

El protocolo FTP es, como su nombre lo indica, un protocolo para transferir archivos.

La implementación del FTP se remonta a 1971 cuando se desarrolló un sistema de transferencia de archivos (descrito en RFC 141) entre equipos del Instituto Tecnológico de Massachusetts (MIT, Massachusetts Institute of Technology). Desde entonces, diversos documentos de RFC (petición de comentarios) han mejorado el protocolo básico, pero las innovaciones más importantes se llevaron a cabo en julio de 1973.

Actualmente, el protocolo FTP está definido por RFC 959 (protocolo de transferencia de archivos (FTP) - especificaciones).

La función del protocolo FTP

El protocolo FTP define la manera en que los datos deben ser transferidos a través de una red TCP/IP.

El objetivo del protocolo FTP es permitir el intercambio de archivos entre equipos remotos, de una manera eficaz e independientemente del sistema de archivos utilizado en cada equipo.

El modelo FTP

El protocolo FTP está incluido dentro del modelo cliente-servidor, es decir, un equipo envía órdenes (el cliente) y el otro espera solicitudes para llevar a cabo acciones (el servidor).

Durante una conexión FTP, se encuentran abiertos dos canales de transmisión: un canal de comandos (canal de control) y un canal de datos:
El modelo FTP

Por lo tanto, el cliente y el servidor cuentan con dos procesos que permiten la administración de estos dos tipos de información:

DTP (proceso de transferencia de datos) es el proceso encargado de establecer la conexión y de administrar el canal de datos. El DTP del lado del servidor se denomina SERVIDOR DE DTP y el DTP del lado del cliente se denomina USUARIO DE DTP.

PI (intérprete de protocolo) interpreta el protocolo y permite que el DTP pueda ser controlado mediante los comandos recibidos a través del canal de control. Esto es diferente en el cliente y el servidor. El SERVIDOR PI es responsable de escuchar los comandos que provienen de un USUARIO PI a través del canal de control en un puerto de datos, de establecer la conexión para el canal de control, de recibir los comandos FTP del USUARIO PI a través de este, de responderles y de ejecutar el SERVIDOR DE DTP. El USUARIO PI es responsable de establecer la conexión con el servidor FTP, de enviar los comandos FTP, de recibir respuestas del SERVIDOR PI y de controlar al USUARIO DE DTP, si fuera necesario.

Cuando un cliente FTP se conecta con un servidor FTP, el USUARIO PI inicia la conexión con el servidor de acuerdo con el protocolo Telnet. El cliente envía comandos FTP al servidor, el servidor los interpreta, ejecuta su DTP y después envía una respuesta estándar. Una vez que se establece la conexión, el servidor PI proporciona el puerto por el cual se enviarán los datos al Cliente DTP. El cliente DTP escucha el puerto especificado para los datos provenientes del servidor.

Es importante tener en cuenta que, debido a que los puertos de control y de datos son canales separados, es posible enviar comandos desde un equipo y recibir datos en otro. Entonces, por ejemplo, es posible transferir datos entre dos servidores FTP mediante el paso indirecto por un cliente para enviar instrucciones de control y la transferencia de información entre dos procesos del servidor conectados en el puerto correcto.
Transferencia de datos por FTP entre dos servidores

En esta configuración, el protocolo indica que los canales de control deben permanecer abiertos durante la transferencia de datos. De este modo, un servidor puede detener una transmisión si el canal de control es interrumpido durante la transmisión.

Los comandos FTP

Toda comunicación que se realice en el canal de control sigue las recomendaciones del protocolo Telnet. Por lo tanto, los comandos FTP son cadenas de caracteres Telnet (en código NVT-ASCII) que finalizan con el código de final de línea Telnet (es decir, la secuencia <CR>+<LF>, Retorno de carro seguido del carácter Avance de línea indicado como <CRLF>). Si el comando FTP tiene un parámetro, este se separa del comando con un espacio (<SP>).

Los comandos FTP hacen posible especificar el puerto utilizado, el método de transferencia de datos, la estructura de datos, la naturaleza de la acción que se va a realizar (recuperar, enumerar, almacenar, etc.).

Existen tres tipos de comandos FTP diferentes: comandos de control de acceso, comandos de parámetros de transferencia y comandos de servicio FTP.

Comandos de control de acceso
ComandoDescripción
USERCadena de caracteres que permite identificar al usuario. La identificación del usuario es necesaria para establecer la comunicación a través del canal de datos.
PASSCadena de caracteres que especifica la contraseña del usuario. Este comando debe ser inmediatamente precedida por el comando USER. El cliente debe decidir si esconder la visualización de este comando por razones de seguridad.
ACCTCadena de caracteres que especifica la cuenta del usuario. El comando generalmente no es necesario. Durante la respuesta que acepta la contraseña, si la respuesta es 230, esta etapa no es necesaria; Si la respuesta es 332, sí lo es.
CWDChange Working Directory (cambiar el directorio de trabajo): este comando permite cambiar el directorio actual. Este comando requiere la ruta de acceso al directorio para que se complete como un argumento.
CDUPChange to Parent Directory (cambiar al directorio principal): este comando permite regresar al directorio principal. Se introdujo para resolver los problemas de denominación del directorio principal según el sistema (generalmente "..").
SMNTStructure Mount (montar estructura):
REINReinitialize (reinicializar):
QUITComando que permite abandonar la sesión actual. Si es necesario, el servidor espera a que finalice la transferencia en progreso y después proporciona una respuesta antes de cerrar la conexión.


Comandos de parámetros de transferencia
ComandoDescripción
PORTCadena de caracteres que permite especificar el número de puerto utilizado.
PASVComando que permite indicar al servidor de DTP que permanezca a la espera de una conexión en un puerto específico elegido aleatoriamente entre los puertos disponibles. La respuesta a este comando es la dirección IP del equipo y el puerto.
TYPEEste comando permite especificar el tipo de formato en el cual se enviarán los datos.
STRUCarácter Telnet que especifica la estructura de archivos (F de file [archivo], R de record [registro], P de page [página]).
MODECaracter Telnet que especifica el método de transferencia de datos (S de stream [flujo], B de block [bloque], C de compressed [comprimido]).


Comandos de servicio FTP
ComandoDescripción
RETREste comando (retrieve [recuperar]) le pide al servidor de DTP una copia del archivo cuya ruta de acceso se da en los parámetros.
STOREste comando (store [almacenar]) le pide al servidor de DTP que acepte los datos enviados por el canal de datos y que los almacene en un archivo que lleve el nombre que se da en los parámetros. Si el archivo no existe, el servidor lo crea; de lo contrario, lo sobrescribe.
STOUEste comando es idéntico al anterior, solo le pide al servidor que cree un archivo cuyo nombre sea único. El nombre del archivo se envía en la respuesta.
APPEGracias a este comando (append [adjuntar]) los datos enviados se concatenan en el archivo que lleva el nombre dado en el parámetro si ya existe; si no es así, se crea.
ALLOEste comando (allocate [reservar]) le pide al servidor que reserve un espacio de almacenamiento lo suficientemente grande como para recibir el archivo cuyo nombre se da en el argumento.
RESTEste comando (restart [reiniciar]) permite que se reinicie una transferencia desde donde se detuvo. Para hacer esto, el comando envía en el parámetro el marcador que representa la posición en el archivo donde la transferencia se había interrumpido. Después de este comando se debe enviar inmediatamente un comando de transferencia.
RNFREste comando (rename from [renombrar desde]) permite volver a nombrar un archivo. En los parámetros indica el nombre del archivo que se va a renombrar y debe estar inmediatamente seguido por el comando RNTO.
RNTOEste comando (rename from [renombrar a]) permite volver a nombrar un archivo. En los parámetros indica el nombre del archivo que se va a renombrar y debe estar inmediatamente seguido por el comando RNFR.
ABOREste comando (abort [cancelar]) le indica al servidor de DTP que abandone todas las transferencias asociadas con el comando previo. Si no hay conexión de datos abierta, el servidor de DTP no realiza ninguna acción; de lo contrario, cierra la conexión. Sin embargo, el canal de control permanece abierto.
DELEEste comando (delete [borrar]) permite que se borre un archivo, cuyo nombre se da en los parámetros. Este comando es irreversible y la confirmación solo puede darse a nivel cliente.
RMDEste comando (remove directory [eliminar directorio]) permite borrar un directorio. El nombre del directorio que se va a borrar se indica en los parámetros.
MKDEste comando (make directory [crear directorio]) permite crear un directorio. El nombre del directorio que se va a crear se indica en los parámetros.
PWDEste comando (print working directory [mostrar el directorio actual]) hace posible volver a enviar la ruta del directorio actual completa.
LISTEste comando permite que se vuelva a enviar la lista de archivos y directorios presentes en el directorio actual. Esto se envía a través del DTP pasivo. Es posible indicar un nombre de directorio en el parámetro de este comando. El servidor de DTP enviará la lista de archivos del directorio ubicado en el parámetro.
NLSTEste comando (name list [lista de nombres]) permite enviar la lista de archivos y directorios presentes en el directorio actual.
SITEEste comando (site parameters [parámetros del sistema]) hace que el servidor proporcione servicios específicos no definidos en el protocolo FTP.
SYSTEste comando (system [sistema]) permite el envío de información acerca del servidor remoto.
STATEste comando (state [estado]) permite transmitir el estado del servidor; por ejemplo, permite conocer el progreso de una transferencia actual. Este comando acepta una ruta de acceso en el argumento y después devuelve la misma información que LISTA pero a través del canal de control.
HELPEste comando permite conocer todos los comandos que el servidor comprende. La información se devuelve por el canal de control.
NOOPEste comando (no operations [no operación]) solo se utiliza para recibir un comando OK del servidor. Solo se puede utilizar para no desconectarse después de un período de inactividad prolongado.

Las respuestas FTP

Las respuestas FTP garantizan la sincronización entre el cliente y el servidor FTP. Por lo tanto, por cada comando enviado por el cliente, el servidor eventualmente llevará a cabo una acción y sistemáticamente enviará una respuesta.

Las respuestas están compuestas por un código de 3 dígitos que indica la manera en la que el comando enviado por el cliente ha sido procesado. Sin embargo, debido a que el código de 3 dígitos resulta difícil de leer para las personas, está acompañado de texto (cadena de caracteres Telnet separada del código numérico por un espacio).

Los códigos de respuesta están compuestos por 3 números, cuyos significados son los siguientes: el primero indica el estatuto de la respuesta (exitosa o fallida), el segundo indica a qué se refiere la respuesta, el tercero brinda un significado más específico (relacionado con cada segundo dígito).

Primer número
DígitoSignificadoDescripción
1yzRespuesta positiva preliminarLa acción solicitada está en progreso. Se debe obtener una segunda respuesta antes de enviar un segundo comando.
2yzRespuesta de finalización positivaLa acción solicitada se ha completado y puede enviarse un nuevo comando.
3yzRespuesta intermedia positivaLa acción solicita está temporalmente suspendida. Se espera información adicional del cliente.
4yzRespuesta de finalización negativaLa acción solicitada no se ha realizado debido a que el comando no se ha aceptado temporalmente. Se le solicita al cliente que intente más tarde.
5yzRespuesta negativa permanenteLa acción solicitada no se ha realizado debido a que el comando no ha sido aceptado. Se le solicita al cliente que formule una solicitud diferente.


Segundo número
DígitoSignificadoDescripción
x0zSintaxisLa acción tiene un error de sintaxis o sino, es un comando que el servidor no comprende.
x1zInformaciónÉsta es una respuesta que envía información (por ejemplo, una respuesta a un comando STAT).
x2zConexionesLa respuesta se refiere al canal de datos.
x3zAutenticación y cuentasLa respuesta se refiere al inicio de sesión (USUARIO/CONTRASEÑA) o a la solicitud para cambiar la cuenta (CPT).
x4zNo utilizado por el protocolo FTP 
x5zSistema de archivosLa respuesta se relaciona con el sistema de archivos remoto.

Consulta también


FTP protocol (File Transfer Protocol)
FTP protocol (File Transfer Protocol)
Das FTP Protokoll (File Transfer Protocol)
Das FTP Protokoll (File Transfer Protocol)
Le protocole FTP (File Transfer Protocol)
Le protocole FTP (File Transfer Protocol)
Il protocollo FTP (File Transfer Protocol)
Il protocollo FTP (File Transfer Protocol)
O protocolo File Transfer Protocol
O protocolo File Transfer Protocol
Última actualización: 7 de marzo de 2017 a las 04:21 por Carlos-vialfa.
El documento «Protocolo FTP (protocolo de transferencia de archivos)» se encuentra disponible bajo una licencia Creative Commons. Puedes copiarlo o modificarlo libremente. No olvides citar a CCM (es.ccm.net) como tu fuente de información.