Tabla de contenidos TFTP("Trivial File Transfer Protocol")

4.4 FTP("File Transfer Protocol")




Figura: FTP

FTP es un protocolo estándar con el STD 9. Su status es recomendado. Se describe en el RFC 959 - FTP("File Transfer Protocol").

La copia de ficheros de una máquina a otra es una de las operaciones más frecuentes. La transferencia de datos entre cliente y servidor puede producirse en cualquier dirección. El cliente puede enviar o pedir un fichero al servidor.

Para acceder a ficheros remotos, el usuario debe identificarse al servidor. En este punto el servidor es responsable de autentificar al cliente antes de permitir la transferencia de ficheros.

Desde el punto de vista de un usuario de FTP, el enlace está orientado a conexión. En otras palabras, es necesario que ambos hosts estén activos y ejecutando TCP/IP para establecer una transferencia de ficheros.

4.4.1 Descripción de FTP

FTP usa TCP como protocolo de transporte para proporcionar conexiones fiables entre los extremos. Se emplean dos conexiones: la primera es para el login y sigue el protocolo TELNET y la segunda es para gestionar la transferencia de datos. Como es necesario hacer un login en el host remoto, el usuario debe tener un nombre de usuario y un password para acceder a ficheros y a directorios. El usuario que inicia la conexión asume la función de cliente, mientras que el host remoto adopta la función de servidor

En ambos extremos del enlace, la aplicación FTP se construye con intérprete de protocolo(PI), un proceso de transferencia de datos, y una interfaz de usuario(ver Figura - Principios de FTP).

La interfaz de usuario se comunica con el PI, que está a cargo del control de la conexión. Este intérprete de protocolo ha de comunicar la información necesaria a su propio sistema de archivos.

En el otro extremo de la conexión, el PI, además de su función de responder al protocolo TELNET, ha de iniciar la conexión de datos. Durante la transferencia de ficheros, los DTPs se ocupan de gestionar la transferencia de datos. Una vez que la operación del usuario se ha completado, el PI ha de cerrar la conexión de control.


Figura: Principios de FTP

4.4.2 Operaciones de FTP

Al usar FTP, el usuario realizará alguna de las siguientes operaciones:

4.4.2.1 Conexión a un host remoto

Para ejecutar una transferencia de ficheros, el usuario comienza haciendo un login en el host remoto. Este es el método primario para manejar la seguridad. El usuario debe tener un identificador y un password para el host remoto, a menos que use un FTP anónimo, descrito en FTP anónimo.

Se usan tres comandos:

Open
Selecciona el host remoto de inicia la sesión con el login
User
Identifica al ID del usuario remoto
Pass
Autentifica al usuario
Site
Envía información al host remoto utilizado para proporcionar servicios específicos para ese host

4.4.2.2 Selección de un directorio

Cuando se establece el enlace de control, el usuario puede emplear el subcomando cd("change directory") para seleccionar un directorio remoto de trabajo. Obviamente, el usuario sólo podrá acceder a directorios a los que su ID le da acceso. El usuario puede seleccionar un directorio local con el comando lcd("local change directory"). La sintaxis de estos comando depende del sistema operativo.

4.4.2.3 Listado de ficheros disponibles para una transferencia

Se hace con los subcomandos dir o ls.

4.4.2.4 Especificación del modo de transferencia

La transferencia de datos entre sistemas diferentes suele requerir transformaciones de los datos como parte del proceso de transferencia. El usuario ha de decidir dos aspectos de la manipulación de los datos:

Esto se controla por medio de dos subcomandos:

Mode
Especifica si el fichero se ha de tratar como si tuviera estructura de registros o como un flujo de bytes.
Block
Se respetan las separaciones lógicas entre registros.
Stream
El fichero se trata como un flujo de bytes. Esta es la opción por defecto, y proporciona una transferencia más eficiente, pero puede que no produzca los resultados deseados cuando se trabaja con un ficheros estructurados por registros.
Type
Especifica el conjunto de caracteres usado para los datos.
ASCII
Indica que ambos host están basados en ASCII, o que si uno está basado en ASCII y el otro en EBCDIC, se debería realizar una traducción ASCII-EBCDIC.
EBCDIC
Indica que ambos host se basan en EBCDIC.
Image
Indica que los datos deben tratarse como bits contiguos empaquetados en bytes de 8 bits.

Debido a que estos subcomandos no cubren todas las posibles diferencias entre sistemas, el subcomando SITE está disponible para lanzar comandos dependientes del sistema.

4.4.2.5 Copia de ficheros

Get
Copia un fichero del host remoto al host local.
Put
Copia un fichero del host local al host remoto.

4.4.2.6 Finalización de la sesión de transferencia

Quit
Desconecta del host remoto y cierra el FTP. Algunas implementaciones usan el subcomando BYE.
Close
Desconecta del host remoto pero deja al cliente FTP ejecutándose. Se puede lanzar un comando open para trabajar con otro host remoto.

4.4.3 Códigos de respuesta

Con el fin de gestionar estas operaciones, el cliente y el servidor mantienen un diálogo por medio de TELNET. El cliente lanza comandos, y el servidor contesta con códigos de respuesta. Las respuestas incluyen también comentarios para el usuario, pero el cliente usa sólo los códigos.

Los códigos de respuesta tienen tres dígitos, siendo el primero el más significante.


Tabla: Códigos de respuesta de FTP - Los dígitos primero y segundo proporcionan más detalles de la respuesta.

Ejemplo

Para comando de usuario, mostrado así, el servidor FTP responde con un mensaje que comienza con un código de 3 dígitos, mostrado así:

FTP foreignhost
220 service ready
USERNAME cms01
331 user name okay
PASSWORD xyxyx
230 user logged in
TYPE Image
200 command okay

4.4.5 Ejemplo de una sesión FTP




[C:\SAMPLES]ftp host01.itsc.raleigh.ibm.com
Connected to host01.itsc.raleigh.ibm.com.
220 host01 FTP server (Version 4.1 Sat Nov 23 12:52:09 CST 1991) ready.
Name (rs60002): cms01
331 Password required for cms01.
Password: xxxxxx
230 User cms01 logged in.
ftp> put file01.tst file01.tst
200 PORT command successful.
150 Opening data connection for file01.tst (1252 bytes).
226 Transfer complete.
local: file01.tst remote: file01.tst
1285 bytes received in 0.062 seconds (20 Kbytes/s)
ftp> close
221 Goodbye.
ftp> quit


Figura: ejemplo de una sesión FTP - Transferencia de un fichero a un host remoto

4.4.5.1 FTP anónimo

Muchos sitios TCP/IP implementan lo que se conoce como FTP anónimo, lo que significa que permiten el acceso público a los ficheros de algunos directorios. El usuario remoto sólo tiene que usar el ID anonymous y el password guest o alguna otra convención de password, por ejemplo el identificador de usuario para el E-mail. La convención que usa cada sistema se le explica al usuario durante el proceso de login.

Tabla de contenidos DNS ("Domain Name System")