VÍA: pope_666
El Protocolo de Transferencia de Archivos (FTP) es una de las utilidades de la familia de Protocolos de TCP/IP. FTP permite a los usuarios copiar archivos entre sistemas remotos en una red IP. FTP se ha diseñado para su uso de forma interactiva por usuarios finales o por programas de aplicación. Las funciones esenciales de Transferencia de Archivos permiten a los usuarios realizar tareas básicas como copiar, mover, renombrar y trabajar con directorios de forma remota.
Tipos de servicios FTP
Normalmente los sistemas se configuran para autentificar los inicios de sesión, esto es, colocando un nombre de usuario y una contraseña, de esta manera se puede acceder al sistema. FTP tiene dos modalidades de uso:
FTP Anonymous: Esto supone un servidor FTP configurado para permitir el acceso público, es decir, el sistema se ajusta a una clave de acceso público para permitir el acceso anónimo a todos los archivos que se han compartido.
FTP Privado: En este caso el servidor se basa en autentificación a partir de la base de datos de usuarios locales, por lo tanto, sólo pueden iniciar sesión los usuarios que hayan sido dados de alta en dicho sistema, normalmente este tipo de FTP es utilizado por compañías que requieren de acceso remoto o en entornos donde la información es confidencial.
Comandos de FTP:
A través de una conexión de control FTP se pueden enviar tres tipos de comandos:
- Comandos de Transferencia de Archivos.
- Comandos de Gestión de Archivos.
- Comandos de Control.
Comando de Transferencia de Archivos: Los comandos de Transferencia de Archivos permiten al usuario copiar un único archivo de un host a otro, copiar varios archivos de un host a otro, añadir un archivo local a un archivo remoto, copiar un archivo y añadir un número al nombre para que sea único.
Comandos de Gestión de Archivos: Los Comandos de Gestión permiten a los usuarios listar los archivos de un directorio, identificar el directorio en uso y cambiar de directorio, crear y eliminar directorios, cambiar el nombre a un archivo o borrarlo.
Comandos de Control: Los Comandos de Control permiten a los usuarios indicar si se va a transferir texto ASCII o Binario, establecer si el archivo está estructurado como una serie de bytes o como una secuencia de registro, describir cómo se va a transferir el archivo, por ejemplo, como un flujo de octetos.
La interfaz de usuario incluye, en general, comandos adicionales que permiten a los usuarios personalizar su entorno local como:
- Pedir a FTP que emita un sonido al final de la transferencia.
- Para una interfaz de usuario de tipo texto, pedir a FTP que imprima el símbolo <<#>> por cada bloque de datos que se transfiera.
- Establecer la traducción automática de letras mayúsculas a minúsculas o viceversa en un nombre de archivo o crear una tabla para traducir automáticamente los caracteres de los nombres de los archivos traducidos.
Aunque muchos usuarios prefieren la interfaz gráfica ,el usuario dispone en su sistema de una interfaz de texto que revela muchos de los aspectos internos del Protocolo de Transferencia de Archivos.
Se pueden copiar varios archivos usando (mget) o (mput) utilizando denominaciones con comodines globales, por ejemplo: (mget a*) obtiene una copia de todos los archivos cuyo nombre empiece con la letra a. Esto funcionará si la acción global está activada, esto se logra tecleando (glob).
Para obtener un listado de todos los comandos de FTP basta con teclear help una vez que se haya iniciado la sesión de FTP.
Lista de comandos de FTP
Comandos de control de acceso
| Comando | Definición | Parámetro(s) |
| USER | Identifica al usuario | Identificador |
| PASS | Suministra una contraseña | Contraseña |
| ACCT | Suministra una cuenta | Identificador de la cuenta |
| REIN | Reinicializa el estado de sesión | Ninguno |
| QUIT /BYE | Desconecta la sesión | Ninguno |
| ABOR | Aborta el comando anterior y la transferencia | Ninguno |
Comandos de gestión de archivos y directorios
| Comando | Definición | Parámetro(s) |
| CWD | Cambia a otro directorio del servidor | Nombre de directorio |
| CDUP | Cambia al directorio padre | Ninguno |
| DELE | Borra un archivo | Nombre de archivo |
| LIST | Lista la información de archivos | Nombre de directorio, listado de archivos |
| MKD | Crea un directorio | Nombre de directorio |
| NLST | Lista de archivos de un directorio | Nombre de directorio o ninguno para el directorio de trabajo |
| PWD | Imprime el nombre del directorio de trabajo | Ninguno |
| RMD | Elimina un directorio | Nombre de directorio |
| RNFR | Identifica un archivo para cambiarlo de nombre | Nombre de archivo |
| RNTO | Cambia de nombre un archivo | Nombre de archivo |
| SMNT | Monta un sistema de archivos diferente | Identificador |
Comandos que definen el tipo, la estructura y el modo
| Comando | Definición | Parámetro(s) |
| TYPE | Identifica el tipo de datos y, opcionalmente, el formato de impresión, si existe, para la transferencia | A (ASCII), E (BINARIO), I (IMAGEN BINARIA), N (NO IMPRESION), T (TELNET), C (ASA) |
| STRU | Organización del archivo | F (ARCHIVO) o R (REGISTRO) |
| MODE | Formato de transmisión | S (FLUJO), B (BLOQUE), C (COMPRIMIDO) |
Comandos que realizan la Transferencia de Archivos
| Comando | Definición | Parámetro(s) |
| ALLO | Reserva espacio suficiente para los datos que siguen | Número entero de bytes |
| APPE | Añade un archivo local a uno remoto | Nombre de los archivos |
| PASV | Pide al servidor que identifique una dirección de IP y un puerto para que el cliente inicie una conexión de datos | Ninguno. El servidor devolverá una dirección de IP y un número de puerto |
| PORT | Identifica una dirección de red y un puerto para que el servidor inicie una conexión de datos | Dirección de IP y número de puerto |
| REST | Identifica un marcador de reinicio seguido del comando de transferencia que hay que reiniciar | Valor del marcador |
| RETR | Recupera un archivo | Nombres de archivos |
| STOR | Guarda un archivo | Nombres de archivos |
| STOU | Crea una versión de un archivo con un nombre único | Nombres de archivos |
Otros comandos de información de usuario
| Comando | Definición | Parámetro(s) |
| HELP | Devuelve información sobre la implementación del servidor | Ninguno |
| NOOP | Pide al servidor que responda OK | Ninguno |
| SITE | Usado para subcomandos específicos del servidor que no forman parte del estándar pero se pueden necesitar para ese servidor | Ninguno |
| SYST | Pide al servidor que identifique sus sistema operativo | Ninguno |
| STAT | Solicite información sobre los parámetros y estado de la conexión | Ninguno |
Códigos de respuestas
En un diálogo, se responde a cada comando con un código de respuesta y un mensaje, es decir, los servidores de FTP manejan códigos estándar para dar información al usuario sobre una operación concreta, por ejemplo:
ftp > get archivo
--> PORT 128,36,0,22,10,54
200 PORT COMMAND SUCCESSFUL
-- RETR archivo
150 Opening ASCII mode data connection for archivo (4112 bytes).
226 Transfer complete.
Los códigos de respuestas se componen de tres dígitos. Cada uno tiene un cometido específico:
- Los códigos en el rango de los 200 indican que el comando se realizó con éxito.
- Los códigos en el rango de los 100 indican que se ha comenzado a realizar una acción.
- Los códigos en el rango de los 300 indican que se ha alcanzado con éxito un punto intermedio
- Los códigos en el rango de los 400 indican errores pasajeros
- Los códigos en el rango de los 500 son realmente malas noticias e indica un error permanente.
- Los dígitos segundo y tercero de un código de respuesta, clasifican la respuesta de forma más precisa.
¿De qué depende la eficiencia de FTP?
El rendimiento de las operaciones de transferencia de archivos están relacionadas directamente con la capacidad de hardware del equipo servidor y la calidad del enlace, sin embargo, he aquí unas sugerencias:
- Eficiencia del disco y el sistema de archivos del hots (Me refiero a controladores SCSI con caché).
- Procesamiento requerido para volver a dar formato a los datos (Me refiero a procesadores SEON).
- Servicio TCP que sirve de base.
- Enlaces dedicados LAN o WAN (Me refiero a RDSI, FRAME, RELAY, ADSL, FDDI o DIAL UP).



