FTP: PROTOCOLO DE TRANSFERENCIA DE ARCHIVOS introducción Es el standard de Internet para transferencia de archivos. La transferencia provee una copia FTP de un archivo completo de un sistema a otro. Para usar FTP nosotros necesitamos una cuenta para poder loguearnos en el servidor, o necesitamos un servidor que permita FTP anónimo. Como Telnet, FTP se diseñó desde su inicio para trabajar entre diferentes host, ejecutando sistemas operativos diferentes, usando distintas estructuras de archivo y quizás juegos de caracteres diferentes. FTP soporta un número limitado de tipos del archivo (ASCII, binario, etc.) y estructuras del archivo (flujo de byte o orientación a registro). RFC 959 [Postel y Reynolds 1985] es la especificación oficial para FTP. Este RFC contiene una historia de la evolución de las transferencias de archivos durante los años. Nota: Este resumen así como los ejemplos de cada uno de los casos, además de las gráficas fueron extractados de TCP/IP Illustrated, Volumen 1, de W. Richard Stevens. Protocolo FTP FTP difiere de las otras aplicaciones porque usa dos conexiones TCP para transferir un archivo. La conexión de control se establece en la modalidad cliente-servidor normal. El servidor hace una apertura pasiva en el puerto bien conocido FTP (21) y espera por una conexión del cliente. El cliente hace una apertura activa al puerto TCP21 (del servidor) para establecer la conexión de control. Las conexiones de control se mantienen durante todo el tiempo que el cliente se comunica con este servidor. Esta conexión se usa para los comandos del cliente al servidor y para las respuestas del servidor al cliente. El tipo-de-servicio de IP para la conexión de control debe ser "de mínimo retraso" a partir de que los comandos normalmente se teclean por un usuario humano. Una conexión de datos se crea cada vez que un archivo se transfiere entre el cliente y servidor. El tipo-de-servicio de IP para la conexión de datos debe ser "de máximo throughput" debido a que esta conexión es para la transferencia del archivo. La figura siguiente muestra el dialogo entre un cliente y el servidor y las dos conexiones entre ellos. Esta figura muestra que el usuario interactivo normalmente no trata con los comandos y respuestas que se intercambian por la conexión de control. Esos detalles se dejan a los dos intérpretes protocolares. La caja etiquetada como "interfaz del usuario" presenta el tipo de interfaz de usuario interactiva que convierte según sea el caso, los requerimientos del usuario en comandos de FTP que se envían por la conexión del control. De manera semejante las contestaciones devueltas por el servidor a través de la conexión de control pueden convertirse a cualquier formato presentable para el usuario interactivo. Esta figura también muestra que son los dos intérpretes protocolares los que invocan a las dos funciones de transferencia de datos cuando es necesario. Representación de los datos Numerosas opciones son provistas por la especificación del protocolo FTP para gobernar la manera en que se transfiere y se guarda un archivo. Si nosotros calculamos el número de combinaciones de todas las opciones podría haber 72 maneras diferentes para transferir y guardar un archivo. Afortunadamente nosotros podemos ignorar muchas de las opciones, porque son anticuadas o no se utilizan por la mayoría de las aplicaciones. Las aplicaciones comunes de UNIX (cliente-servidor) FTP nos restringen a las opciones siguientes: Tipo de archivo: ASCII o imagen. Control de formato: solo nonprint. Estructura: solo estructura del archivo Modo de transmisión: solo modo de flujo. Esto nos limita a uno de dos modos: ASCII o imagen (binario). Comandos para el control FTP Los comandos y contestaciones enviadas por la conexión de control entre el cliente y el servidor están en NVT ASCII. Esto requiere que el par CR, LF aparezca al final de cada línea (es decir, cada comando o cada respuesta). Los comandos son 3 o 4 bytes de caracteres en ASCII mayúscula, algunos con los argumentos optativos. Más de 30 comandos de FTP diferentes pueden ser enviados por el cliente al servidor. La Figura siguiente muestra algunos de los comandos normalmente usados. Comandos ABOR LIST filelist PASS password PORT n1,n2,n3,n4,n5,n6 QUIT RETR filename STOP filename SYST TYPE type USER username Descripción Aborte comandos FTP anteriores y cualquier transferencia de los datos Lista archivos o directorios Contraseña en el servidor Dirección IP del cliente (nl.n2.n3.n4) y puerto (n5 x 256 +n6) Logoff del servidor Recupere (get) un archivo Almacene (put) un archivo El servidor devuelve el tipo de sistema Especifica el tipo del archivo: A para ASCII, I para imagen, Username en el servidor Comandos FTP más comunes Posteriormente veremos que a veces hay una correspondencia uno a uno entre lo que el usuario interactivo teclea y la orden de FTP enviada por la conexión de control, pero para algunas operaciones un comando de usuario simple resulta en múltiples comandos FTP a través de la conexión de control. Respuestas FTP Las respuestas son números del 3-digitos en ASCII, con un mensaje optativo que sigue al número. El propósito es que el software necesita sólo mirar el número para determinar cómo procesar la respuesta, y el string optativo es para la interpretación humana. Los clientes normalmente envían una respuesta numérica y el mensaje, un usuario interactivo puede determinar lo que la respuesta dice simplemente leyendo el string. Cada uno de los tres dígitos en el código de la respuesta tiene un significado diferente. (SMTP, usa las mismas convenciones para los comandos y respuestas.) La tabla siguiente muestra los significados de los primeros y segundos dígitos del código de la respuesta. Descripción de la respuesta 1yz Contestación preliminar positiva. La acción está comenzando pero se espera otra respuesta antes de enviar otro comando. 2yz Respuesta positiva, un nuevo comando puede enviarse. 3yz Respuesta positiva intermedia. El comando se ha aceptado pero debe enviarse otro. 4yz Respuesta negativa Transeúnte. La acción requerida no tuvo lugar, pero la condición del error es temporal para que el comando pueda reeditarse después. 5yz Respuesta negativa Permanente. El comando no fue aceptado y no se reintentó. X0z Errores de sintaxis. x1z Información. x2z Conexiones. Respuestas referidas al control de la conexión de datos. . x3z Autentificación . Las contestaciones para los login (o accounting). x4z No especificado. x5z Estado del sistema de archivos. Significados del primero y el segundo dígito de las respuestas de tres dígitos. Los tres dígitos dan un mensaje adicional con el significado del error. Ej. , Aquí hay algunas respuestas típicas, acompañadas por sus posibles mensajes. 125 Data connection already open; transfer starting. (Conexión de datos abierta y lista comience la transferencia). 200 Command OK. (Comando correcto). 214 Help message (para un usuario humano). 331 Username OK, password required. (Nombre de usuario OK se requiere el password). 425 Can't open data connection.(No es posible abrir la conexión de datos). 452 Error writing file. (Error en escritura del archivo). 500 Syntax error. (Comando no reconocido). 501 Syntax error. (Argumentos inválidos). 502 Unimplemented MODE type. (Tipo de modo no implementado). Normalmente cada comando FTP genera una línea de respuesta. Ej. El comando QUIT generara la respuesta: 221 Goodbye. Si se necesita una contestación de mas de una línea, la primera línea contiene un guión en lugar de un espacio después del código de respuesta de 3-digitos, y la línea final contiene el mismo código de respuesta de 3-digitos , seguida por un espacio. Por ejemplo, el comando HELP podría generar la respuesta: 214- The following commands are recognized (* =>'s unimplemented). USER PORT STOR MSAM* RNTO PASS PASV APPE MRSQ* ABOR ACCT* TYPE MLFL* MRCP* DELE SMNT* STRU MAIL* ALLO CWD REIN* MODE MSND* REST XCWD QUIT RETR MSOM* RNFR LIST NLST SITE SYST STAT HELP NOOP MKD XMKD RMD XRMD PWD XPWD CDUP XCUP STOU SIZE MDTM 214 Direct comments to [email protected]. Manejo de la conexión Hay tres usos para la conexión de datos. 1. Enviar un archivo del cliente al servidor. 2. Enviar archivo del servidor al cliente. 3. Enviar un listado de archivos o directorios del servidor al cliente. El servidor de FTP envía los listados de archivos a través de la conexión de datos, en lugar de una respuesta multilinea a través de la conexión de control. Nosotros hemos dicho que la conexión de control se mantiene activa mientras que dure la conexión entre el cliente y el servidor, pero la conexión de datos puede establecerse o no según sea requerida. ¿Cómo se escogen los números del puerto para la conexión de datos, y quién hace la apertura activa y la pasiva? Como ya se dijo el modo de la transmisión común es el modo de flujo, y que el fin de archivo se denota por el cierre de la conexión de datos. Esto implica que se requiere una nueva conexión de datos para todas las transferencias de archivos o listados de directorios. El procedimiento normal es como sigue: 1. La creación de la conexión de datos está bajo el control del cliente, porque es el cliente el que emite la orden solicitando la conexión de datos (get, put, list, etc.). 2. El cliente normalmente escoge un número de puerto efímero en el host del cliente para la conexión de datos. El cliente emite una apertura pasiva desde este puerto. 3. El cliente envía el número de puerto al servidor a través de la conexión de control usando el comando PORT. 4. El servidor recibe el número de puerto en la conexión de control, y emite una apertura activa del puerto sobre el host del cliente. El servidor finaliza la conexión de datos usando siempre el puerto 20. La figura siguiente muestra el estado de las conexiones mientras que el paso 3 se esta efectuando. Nosotros asumimos que el puerto efímero del cliente para la conexión de control es 1173, y el puerto efímero del cliente para la conexión de datos es 1174. El comando enviado por el cliente es el comando PORT y sus argumentos son seis números decimales en ASCII, separados por comas. Los primeros 4 números especifican la dirección IP del cliente que el servidor debe emitir para activar la apertura (en este ejemplo 140.252.13.34), y los próximos dos especifican los 16-bit del número de puerto donde el cliente estará escuchando (para la conexión de los datos). Como el número de puerto de 16-bit esta formado por dos números, su valores en este ejemplo son 4 x 256 + 150 = 1174. Comando PORT enviado a través de la conexión de control FTP La figura siguiente muestra el estado de la conexión cuando el servidor emite la apertura activa de la conexión de datos al cliente. El servidor siempre hace la apertura activa de la conexión de datos. Normalmente el servidor también hace el cierre activo de la conexión de datos excepto cuando el cliente envía un archivo al servidor en modo secuencia el cual requiere que el cliente cierre la conexión (el cual envía la notificación del fin-de-archivo al servidor). También es posible que el cliente no emita el comando PORT, dicho caso el servidor emite una apertura activa al mismo número de puerto que esta siendo usado por el cliente para la conexión de control(1173 en este ejemplo). Esto es correcto porque que el numero de puerto del servidor para las dos conexiones es diferente: uno es el 20 y el otro es el 21. Ejemplos de FTP En la bibliógrafa sugerida se encontraran ejemplos de la utilización FTP contemplando: Manejo de la conexión de datos. Cómo se envían los archivos del texto usando NVT ASCII. Uso de la señal synch de Telnet para abortar una transferencia en progreso. FTP" anónimo". NOTA: nosotros hemos recopilado para este resumen los casos mas comunes. Manejo de la conexión: Puerto de Datos efímero Primero miremos el manejo de la conexión con una sesión FTP simple que sólo lista un archivo en el servidor. Nosotros ejecutamos al cliente en el HOST “svr4” con el parámetro - d (de Debug). Esto hace que se impriman los comandos y respuestas que se intercambian por la conexión de control. Todas las líneas precedidas por---> se envían por el cliente al servidor, y las líneas que empiezan con un número de 3-digitos son las contestaciones del servidor. El prompt interactivo del cliente es "ftp>." svr4 % ftp -d bsdi -d opción para debug El cliente hace apertura activa de la con. de control Connected to bsdi. El servido responde que esta listo 220 bsdi FTP server (Version 5.60) ready. Se promptea al cliente, nombre de logueo Name (bsdi:rstevens): Nosotros tipeamos RETURN ---> USER rstevens Nosotros tipeamos nuestro password; no habrá 331 Password required for rstevens. eco Password: ---> PASS XXXXXXX 230 User rstevens logged in. Ftp> dir hello.c Se pide el listado del archivo Vea la figura siguiente ---> PORT 140,252,13,34,4,150 200 PORT command successful ---> LIST hello.c 150 Opening ASCII mode data connection for /bin/ls. -rw-r--r-- 1 rstevens staff 38 Jul 17 12:47 hello.c 226 Transfer complete. Remote: hello.c 56 bytes received in 0.03 seconds (1.8 Kbytes/s) Ftp> quit ---> QUIT 221 Goodbye. Cuando el cliente de FTP sé loguea, imprime un valor predeterminado. Cuando nosotros tecleamos la tecla return, este valor predeterminado se envía. Pedir un listado de directorio de un archivo en particular causa que sea establecida y utilizada una conexión de datos. Este ejemplo sigue el procedimiento que nosotros mostramos en las Figuras anteriores. El cliente le pide un número de puerto efímero a su TCP con la finalidad de establecer la conexión de datos, y envía este número de puerto (1174) al servidor en un comando PORT. Nosotros también podemos ver que un solo comando de usuario interactivo (dir) se vuelve dos comandos FTP (PORT y LIST). La figura siguiente es la línea de tiempo del intercambio del paquete por la conexión de control. (Nosotros hemos quitado el establecimiento y el cierre de la conexión de control, junto con todos los anuncios de tamaño de ventana.) Nosotros anotamos en esta figura dónde la se abre, se realiza la transferencia, y el cierre de la conexión de datos. La Figura siguiente es la línea de tiempo para la conexión de datos. Los tiempos en esta figura parten del mismo punto que la figura anterior. Nosotros hemos quitado todos los anuncios de ventana, pero ha salido el campo del TOS, para mostrar que la conexión de los datos usa un tipode-servicio diferente (aumenta al máximo el throughput) que la conexión de control (de mínimo retraso). (Los valores de TOS están en Figura que se encuentra a continuación de la figura siguiente.) La tabla siguiente muestra los valores recomendados para el campo TOS para la aplicación FTP. Aplicación FTP control data Minimizar delay Maximizar throughput Maximizar fiabilidad Minimizar costo de envío Valor hexa 1 0 0 1 0 0 0 0 0x10 0x08 Valores recomendados para el campo TOS. En esta línea de tiempo el servidor de FTP hace la apertura activa de la conexión de datos, del puerto 20, al número del puerto especificado por el comando PORT (1174). También en este ejemplo el servidor inicia la conexión de los datos y el servidor hace el cierre activo de la conexión de los datos que le dice al cliente cuando se completo el listado. FTP anónimo Un formulario de FTP anónimo es tan popular que nosotros mostraremos un ejemplo de él. Se llama FTP anónimo, y cuando es soportado por un servidor, permite a cualquiera el logueo y el uso FTP para transferir los archivos. Inmensas cantidades de información libre utilizan esta técnica. Cómo encontrar qué sitio tiene lo que usted está buscando es un problema totalmente diferente. Nosotros usaremos FTP anónimo al sitio ftp.uu.net (un sitio de FTP anónimo popular). Para usar FTP anónimo nosotros debemos loguearnos con el username "anonymous". Cuando se nos pida que ingresemos una contraseña nosotros tecleamos nuestra dirección del correo electrónico. sun % ftp ftp.uu.net Connected to ftp.uu.net. 220 ftp.UU.NET FTP server (Version 2.0WU(13) Fri Apr 9 20:44:32 EDT 1993) ready. Name (ftp.uu.net:rstevens): anonymous 331 Guest login ok, send your complete e-mail address as password. we type [email protected]; it's not echoed Password: 230230- Welcome to the UUNET archive. 230- A service of UUNET Technologies Inc, Falls Church, Virginia 230- For information about UUNET, call +1 703 204 8000, or see the files 230- in /uunet-info More greeting lines 230 Guest login ok, access restrictions apply. Ftp> cd published/books Change to the desired directory 250 CWD command successful. Ftp> binary we'll transfer a binary file 200 Type set to I. Ftp> get stevens.tcpipivl.errata.Z Fetch the file 200 PORT command successful. 150 Opening BINARY mode data connection for stevens.tcpipivl.errata.Z (105 bytes). (you may get a different file size) 226 Transfer complete, Local: stevens.tcpipivl.errata.Z remote: stevens.tcpipivl.errata.Z 105 bytes received in 4.1 seconds (0.83 Kbytes/s) Ftp> quit 221 Goodbye. Sun % uncompress stevens.tcpipivl.errata.Z sun % more stevens.tcpipivl.errata El uncompress es porque muchos archivos disponible para FTP anónimo son comprimidos usando el programa de compresión de UNIX (l),produciendo una extensión del archivo . Z. Estos archivos deben transferirse usando el tipo del archivo binario, no el ASCII. Referencia: TCP/IP Illustrated, Volumen 1, de W. Richard Stevens
Puede agregar este documento a su colección de estudio (s)
Iniciar sesión Disponible sólo para usuarios autorizadosPuede agregar este documento a su lista guardada
Iniciar sesión Disponible sólo para usuarios autorizados(Para quejas, use otra forma )