4. PROTOCOLO FTP ( File Transfer Protocol)

FTP comenzó siendo una utilidad Unix para transferir archivos , así ftp es un acrónimo de protocolo de archivo de transferencia. Debido a que muchos sistemas Unix estaban en Internet, ftp era usado por muchos usuarios para transferir archivos a través de la red.

 

La primera propuesta sobre mecanismos para el envio y recepción de ficheros data de 1971 y fue desarrollada para su implementación en los sistemas del M.I.T (Instituto Tecnológico de Massachussets), esta propuesta se recoge en las RFC´s 114 y 141. Hasta que en Julio de 1973 se produjeron considerables cambios en las nuevas versiones de FTP , apareciendo una RFC oficial del protocolo , que fue la 454.

 

Más tarde surgieron nuevos comentarios sobre FTP en posteriores documentos RFC , pero el más importante fue el motivado por el cambio del protocolo subyacente de NCP a TCP , que en lo que se refería a FTP lo recogía la RFC 765. Hasta llegar a la RFC 959 de Octubre de 1985 . J.Reynolds & J.Postel .

 

En realidad ftp es más que una utilidad de transferencia de archivos , es también un estandar que establece como deben ser transferidos los archivos. FTP trabaja sobre el concepto de relación cliente/servidor , en Internet , muchos servidores ftp son utilizados como emplazamientos donde se almacenan archivos, y que se puede acceder siempre que se disponga de un programa ftp cliente.

 

Se trata una aplicación que permite realizar la transferencia de ficheros entre ordenadores , es decir, que hace posible que un usuario copie en un ordenador los ficheros que están almacenados en otro. Los programas y protocolos diseñados para llevar a cabo esta función se conocen con el nombre de FTP. Los ficheros a transferir pueden ser documentos ,textos, imágenes , sonidos, programas ,etc. . El procedimiento mediante el cual se accede a un ordenador para copiar ficheros en forma libre y sin restricciones se conoce como FTP anónimo y en este caso por tanto no se necesita de un password (contraseña) para entrar en el ordenador remoto. La aplicación FTP funciona de forma muy similar en todos los sistemas , los distintos comandos que pueden ejecutarse tienen , en su mayoría , el mismo formato.

El ordenador local es aquel en el que el usuario está trabajando inicialmente . Al anfitrión con el que se desea conectar , se le llama ordenador remoto. Cuando se ejecuta FTP en el ordenador local, esta aplicación es un programa cliente , que entrará en contacto con el correspondiente servidor FTP en el ordenador remoto.

 

 

Desde el punto de vista de una aplicación FTP ,existen dos tipos de ficheros básicos : Ascii y Binarios. Un fichero ASCII o texto estándar es aquel en el que la información que contiene está escrita en caracteres de código ASCII. El binario es cualquier otro tipo de fichero , programas ,imágenes , sonidos , etc. Todo esto implica que cuando se realiza una transferencia con FTP debe indicarse el tipo de fichero de que se trata.

 

Las velocidades de transferencia para FTP dependen de las caracteristicas de la conexión , como puedan ser los baudios del modem , no es lo mismo utilizar un modem de 2400 baudios que otro a 56K o mediante RDSI .

 

Aunque FTP es el protocolo más conocido y utilizado para la transferencia de archivos en Internet, también existen otros protocolos similares como:

 

. Protocolo Trivial de Transferencia de Archivos (TFTP) :

Este protocolo omite intencionadamente gran parte de las capacidades de FTP y se centra minuciosamente en las operaciones de leer y escribir un archivo, para la ejecución de las cuales utiliza UDP (Protocolo de Datagrama de usuario). A diferencia de FTP no utiliza directorios ni autoriza usuarios. Utiliza un sistema de confirmaciones para asegurar la entrega de datos entre el servidor y el cliente. Es una aplicación muy facil de implementar y que ocupa muy poco espacio , por lo cual se propusó utilizarlo para transferir bootstrap loaders (programas de arranque).

 

. Protocolo Simple de Transferencia de Archivos (SFTP) :

Es un intento por encontrar un punto intermedio entre FTP y TFTP. Soporta el control de acceso, transferencia de archivos, listas de directorios, cambio de directorios, renombramiento y borrado de archivos. Utiliza el protocolo TCP pero con una sola conexión.

 

4.1 CONFIGURACION Y DISEÑO :

FTP emplea dos conexiones TCP para ejecutar las transferencias de archivos, identificando una como conexión de control y otra como conexión de datos. La conexión de control es una configuración cliente/servidor común. El servidor FTP hace una apertura pasiva en el puerto de protocolo 21 y espera las conexiones del cliente. A su vez el cliente contacta al servidor FTP y los programas negocian una conexión TCP, permaneciendo la conexión de control activa durante toda la transacción FTP.

FTP crea una conexión de datos independiente para cada transferencia de archivos. El tipo de servicio IP para la conexión de datos es maximizar la productividad ya que se trata de transferencia de ficheros completos.

 

 

El usuario normalmente no tiene que tratar directamente con las ordenes y respuestas que fluyen a través de la conexión de control. De estos detalles se encarga el interprete del protocolo. El interfaz de usuario representa cualquier tipo de interfaz que utilice el usuario para la transferencia. Las acciones del usuario son traducidas a órdenes FTP que se envian a través de la conexión de control. Asi mismo las respuestas que devuelve el servidor por la conexión de control pueden convertirse en cualquier formato para ser presentadas en la interfaz de usuario.

 

Los dos Interpretes de protocolo son los encargados de invocar a las funciones de transferencia de datos cuando sea necesario. En el núcleo de la operación estan los interpretes de protocolos (PI) y los procesos de transferencia de datos (DTP). Cliente y Servidor tienen cada uno su propio intérprete de protocolos y su propio proceso de transferencia de datos. Los procesos de transferencia de datos establecen y manejan la conexión de datos. Los interpretes de protocolo interpretan los comandos FTP y se comunican a través de la conexión de control, que el PI cliente establece al principio de la sesión.

 

 

 

4.2 MANEJO DE LA INFORMACIÓN :

FTP requiere que los usuarios seleccionen de una gran variedad de opciones para las operaciones de transferencia de archivos. Las opciones de FTP se clasifican en 4 categorias : tipos de archivos, formatos de archivos, estructuras de archivos y modos de transmisión.

 

4.2.1 TIPOS DE ARCHIVO:

Puede utilizar cuatro tipos de archivos : local, binario, EBCDIC y ASCII.

 

1. Local : Permite la transferencia de archivos entre anfitriones que utilizan diferentes tamaños de bytes.

 

2. Binario : También llamado imagen , trata la información del archivo como un flujo de datos contiguo. Por lo general , la mayoria de usuarios de FTP transfieren los archivos como archivos imagen.

 

3. EBCDIC : Es un método alterno para la transferencia de archivos de texto entre dos computadoras como los mainframes de IBM y minicomputadoras que emplean la codificación EBCDIC (Código para intercambio decimal en codificación binaria extendida). Este tipo se puede utilizar si los sistemas remotos en cada lado de la conexión utilizan EBCDIC, para simplificar la transmisión de archivos basados en texto.

 

4. ASCII : Son las transferencias preestablecidas en FTP. Para utilizar este tipo de transferencia, el sistema remoto transmisor debe convertir el archivo de texto local a NVT ASCII (ASCII de 7 bits) , y el receptor debe traducirlo a texto local. El fin de linea se transfiere utilizando los caracteres (en NVT ASCII) retorno de carro seguido de fin de linea. Lo cual implica que el receptor debe rastrear todos los bytes que le llegan buscando la pareja CR, LF.

 

4.2.2 FORMATOS DE ARCHIVO FTP :

Un usuario también debe de especificar un control de formato. FTP define tres tipos de controles de formato :

- De no impresión

- Control de formato Telnet.

- Control de carro FORTRAN.

Para los archivos de texto , el control predeterminado es el de no impresión.

 

4.2.3 MODOS DE TRANSMISIÓN :

Otra de las caracteristicas que el usuario debe especificar es el modo de transmisión. FTP define 3 modos de transmisión : de bloque , comprimido y de flujo.

 

. De Bloque : Transfiere un archivo como una serie de bloques, cada uno de los cuales con uno o más bytes de encabezado, que especifican el tamaño del bloque enviado, así como los códigos descriptores, que identifican el fin del archivo.

 

. Comprimido : Un algoritmo sencillo de codificación de longitud de ejecución comprime ocurrencias consecutivas del mismo byte, utilizando un simbolo especial seguido por un conteo. Aunque en general la mayoria de los usuarios utilizan algoritmos de compresión , los cuales tienen un mejor funcionamiento.

 

. De Flujo (stream mode) : Se transfiere un archivo como un flujo de bytes de datos. Si el tipo de estructura que se transmite es un registro , FTP utiliza una secuencia especial de caracteres de dos bytes para marcar el fin de un registro y el fin de un archivo. Mientras que cuando es un archivo, señala su fin al cerrar la conexión de datos TCP.

 

 

 

4.2.4 ESTRUCTURA DE ARCHIVO :

FTP define tres tipos de estructuras : archivo, registro y página. Se utiliza el comando STRU para especificar qué estructura se va a utilizar para las operaciones de transferencia de archivos.

STRU

Descripción

F

Archivo

R

Registro

P

Página

 

 

 

 

 

 

 

4.3 RELACIÓN ENTRE FTP Y TELNET :

FTP depende de la definición del protocolo TELNET para alguna de sus operaciones. A parte de utilizar cadenas de texto NVT ASCII( esquema de codificación de comandos de 7 bits) para definir comandos, FTP emplea códigos de control TELNET para señalar la existencia de datos urgentes. Si se desea interrumpir la transferencia de un archivo, FTP transmite la señal Synch de TELNET, para indicar al servidor que detenga la transferencia. Por lo tanto FTP utiliza el protocolo TELNET en la conexión de control para manejar las operaciones de transferencia de archivos.

TELNET permite que los comandos fluyan en ambas direcciones , no utiliza cadenas de caracteres NVT ASCII para representar sus comandos, sino que los transmite como secuencias de escape definidas de manera especial. Una secuencia de escape utiliza un carácter reservado para identificar el principio de un comando. Refiriendose a ese carácter reservado como IAC (interpret as command). Por lo tanto cada comando de TELNET debe empezar con IAC para que puedan ser interpretados.

 

4.3.1 La señal SYNCH de TELNET :

El campo apuntador de urgencia en el encabezado TCP, de 16 bits, especifica una ubicación de bytes en el área de datos TCP que contiene información urgente. Su proposito es notificar al módulo TCP receptor que existe algun tipo de información urgente y que apunte hacia ella.

La mayoria de los sistemas permiten al usuario terminar con un proceso bloqueado. TELNET incluye las funciones IP (Interrupt Process) y AO , (Output Abort) abortar la salida de información.

En las computadoras interconectadas en la red , los mecanismos de control de flujo pueden entorpecer la llegada de una señal de interrupción, debido a congestiones o errores de transmisión. Para contrarestar el problema TELNET define el mecanismo Synch, que consiste en una notificación urgente de TCP y el comando Data Mark de TELNET.

La notificación urgente TCP, no está sujeta a control de flujo con lo que TELNET puede utilizarla para omitir tal control y solicitar al módulo TCP receptor que procese de inmediato tal información urgente. Así deberá de notificar a la aplicación receptora que atienda la petición de inmediato.

 

Una aplicación que utiliza la señal Synch debe de seguir los siguientes pasos :

 

 

 

4.4 DEFINICIÓN DE LOS COMANDOS DE FTP :

FTP incluye más de 30 comandos que se pueden emplear para manejar las operaciones de transferencia de archivos.

Los comados FTP se clasifican en :

ORDEN

DESCRIPCION

ORDENES DE CONEXIÓN Y AUTORIZACIÓN :

ABOR

Aborta la orden FTP previa y la transferencia de datos asociada.

PASS contraseña

Palabra clave para el servidor

QUIT

Desconexión

USER nombredeusuario

Identifica al usuario en el servidor.

 

 

GESTION DE FICHEROS Y DIRECTORIOS :

CWD nombredirectorio

Cambia de directorio en el servidor.

CDUP

Cambia al directorio padre en el servidor.

DELE nombredefichero

Borra un fichero.

LIST listadeficheros

Lista Información de ficheros y directorios.

MKD nombredirectorio

Crea un directorio

NLST nombredirectorio

Lista de ficheros o directorios

PWD

Muestra el nombre del directorio actual.

RMD nombredirectorio

Elimina un directorio.

 

 

 

ORDEN

DESCRIPCION

RNFR nombredefichero

Identifica un fichero para cambiarlo de nombre.

RNTO nombredefichero

Cambia de nombre un fichero.

 

ORDENES DE TRANSFERENCIA DE FICHEROS :

APPE nombredefichero

Añade un fichero local a uno remoto.

PASV

Pide al servidor que identifique una direccion IP y un puerto para que el cliente inicie una conexión de datos.

PORT n1,n2,n3,n4,n5,n6

Dirección IP del cliente (n1.n2.n3.n4) y puerto (n5 x 256+n6)

REST marcador, orden

Identifica a un marcador de reinicio (restart marker), seguido de la orden de transferencia que hay que reiniciar.

RETR nombredefichero

Obtiene un fichero desde el servidor.

STOR nombredefichero

Almacena un fichero en el servidor

STOU nombredefichero

Almacena un fichero en el servidor con nombre único.

TYPE tipo

Se especifica el tipo de sistema: A para ASCII, I para imagen

 

OTRAS ORDENES :

HELP

Devuelve información sobre la implementación del servidor.

NOOP

No operación: pide al servidor que responda OK.

STAT

Solicita información sobre los parametros y estado de la conexión.

SYST

El servidor informa sobre el tipo de sistema.

 

En algunos casos existe una correspondencia uno a uno entre lo que teclea un cliente interactivo y las ordenes FTP que se envían a través de la conexión de control. En otras ocasiones, un único comando del cliente genera multiples comandos FTP.

 

 

4.5 CÓDIGOS DE RESPUESTA FTP :

El protocolo FTP , usa un esquema de códigos de respuesta donde cada uno de sus digitos tiene un significado especial. Son números de tres digitos en ASCII, con un mensaje opcional siguiendo al número. El software sólo necesita leer el número para determinar la respuesta del servidor. Cada uno de los códigos tiene un significado diferente :

 

 

Código

Descripción

1yz

Respuesta preliminar positiva, el servidor inició la acción solicitada.

2yz

Respuesta de terminación positiva, el servidor terminó con éxito la acción solicitada.

3yz

Respuesta intermedia positiva, el servidor aceptó el comando pero la acción solicitada necesita más información.

4yz

Respuesta de terminación negativa transitoria, el servidor no aceptó el comando, y la acción solicitada no ocurrió.

5yz

Respuesta de teminación negativa permanente, el servidor no aceptó el comando y la acción solicitada no ocurrió.

 

Para el segundo digito :

Código

Descripción

x0z

Se refiere a errores de sintaxis.

x1z

Se refieren a solicitudes de información, como estado o ayuda.

x2z

Se refieren a las conexiones de control o de datos.

x3z

Para el proceso de inicio de sesión y procedimientos contables.

x4z

Aun no se ha especificado.

x5z

Indican el estado del sistema de archivos del servidor frente a la transferencia solicitada u otra acción.

 

 

 

 

 

4.5.1 LISTADO DE CÓDIGOS DE RESPUESTA FTP :

 

 

CÓDIGO

DESCRIPCIÓN

110

Reiniciar respuesta del marcador

120

Servicio listo en n minutos

125

Conexión de datos abierta. Inicio de la transferencia.

150

Buen estado del archivo.

200

Comando correcto.

202

Comando no implementado.

211

Estado del sistema.

212

Estado del directorio.

213

Estado del Archivo.

214

Mensaje de ayuda.

215

Tipo de sistema NAME

220

Servicio listo para nuevo usuario.

221

Servicio cierra la conexión de control.

225

Conexión de datos abierta. No hay transferencia en curso.

226

Cierra la conexión de datos. Acción de archivo solicitada terminada con éxito.

227

Entra al modo pasivo.

230

Usuario inició la sesión.

250

Acción de archivo solicitada , correcta.

257

"PATHNAME" creado

331

Nombre de usuario correcto. Se pide contraseña

332

Se necesita cuenta para iniciar sesión.

350

Acción de archivo solicitada pendiente en espera de más información.

421

Servicio no disponible, se cierra conexión de control.

425

No se puede abrir la conexión de datos.

426

Conexión cerrada, transferencia abortada.

450

Acción de archivo solicitada no se tomó. Archivo no disponible.

451

Abortada acción solicitada: Error local en el procesamiento.

452

Acción solicitada no se tomó. Espacio de almacenamiento en sistema insuficiente.

500

Error de sintaxis, comando no reconocido.

501

Error de sintaxis en parametros o argumentos.

502

Comando no implementado.

503

Secuencia de comandos erronea.

504

Comando no implementado para ese parametro.

530

No se inició sesión.

532

Necesita cuenta para almacenar archivos.

550

Acción solicitada no se tomó.

551

Abortada acción solicitada. Se desconoce tipo de página.

552

Abortada acción de archivo solicitada. Asignación de almacenamiento excedida.

553

Acción solicitada no se tomó. Nombre de archivo no permitido.

 

 

 

4.6 MANEJO DE CONEXIONES :

Los comandos de servicio de FTP que envia el cliente a través de la conexión de control le piden al servidor realizar alguna acción relacionada con archivos en el sistema servidor, o transferir información a través de la conexión de datos. El cliente FTP crea la conexión con el servidor remoto , utilizando un socket que luego conecta al puerto del servidor.

 

Una sesión FTP común pasa por cuatro etapas :

 

1. Un programa cliente se conecta a un servidor FTP en el puerto 21.

2. El usuario inicia la sesión con el anfitrión servidor FTP.

3. El cliente y el servidor FTP realizan un intercambio de comandos y respuestas.

4. El cliente FTP cierra la conexión con el servidor.

 

La conexión de datos tiene 3 utilidades :

 

- Enviar ficheros del cliente al servidor

- Enviar ficheros del servidor al cliente

- Enviar listados de ficheros o directorios desde el servidor al cliente.

Cuando el cliente o el servidor utilizan la conexión de datos para transferir archivos u otro tipo de información, primero el cliente creará la conexión de datos, puesto que el inicia todos los comandos que se necesitan usar en la conexión, y también debe crear la conexión para recibir los datos solicitados. Mientras que la conexión de control permanece abierta durante todo el proceso, la conexión de datos sólo se mantiene mientras este en curso una operación de transferencia. Cada vez que el cliente necesita intercambiar datos con el servidor crea una conexión de datos nueva.

 

Un cliente FTP debe hacer una apertura pasiva en el socket de conexión de datos y luego indicar al servidor que puerto conectar en el host cliente, para que el servidor sepa donde enviar los datos que le solicitó el cliente, a través de la conexión de control. Después el servidor hace una apertura activa y el cliente emplea el socket y el puerto de protocolo que especificó.

Para la conexión de datos , el cliente FTP actúa como un servidor : crea un socket, lo une a una dirección local, le indica al servidor con que dirección conectar y luego espera a que llegue una conexión entrante. Un cliente FTP almacena la dirección del servidor FTP en el socket creado para la conexión de datos, luego el socket solo aceptará conexiones de ese servidor.

 

Para abortar la transferencia de archivos , sabemos que FTP utiliza el protocolo TELNET a través de la conexión de control para comunicarse con el servidor. TELNET es el protocolo terminal virtual de TCP/IP, y define ASCII para terminal virtual de red (NVT).

 

Un cliente FTP puede enviar ciertos comandos a través de la conexión de control mientras esta en curso una transferencia de datos. Y es probable que algunos servidores no puedan monitorear las conexiones de datos y control a la vez. Entonces se necesita de una acción especial para obtener la atención del servidor. Para ello el sistema del usuario inserta la señal (IP) proceso de interrupción de TELNET a través de la conexión de control y seguidamente envia la señal SYNCH, que se vió con anterioridad.

 

El usuario inserta el comando de FTP (por ej. ABORT) a través de la conexión de control. El interprete para protocolos (PI) servidor, después de recibir el byte del comando IP, busca en el flujo TELNET de la conexión de control un comando de FTP. En resumen , durante una operación de transferencia de archivos FTP utiliza información urgente de TCP para colocar al servidor FTP en modo urgente y después el cliente transmite el comando FTP.

 

Hay que tener en cuenta que el servidor siempre realiza la apertura activa de la conexión de datos, y normalmente siempre es el encargado de realizar el cierre activo, excepto cuando el cliente envia un fichero, en este caso la utilización del modo flujo requiere que sea el cliente quien cierre la conexión , que por otro lado es la forma de indicar el fin de fichero.

 

Se puede dar el caso de que el cliente no envie la orden PORT, en este caso el servidor realiza una conexión utilizando el mismo numero de puerto que el que utilizó el cliente para la conexión de datos. Esto es correcto ya que el numero de puerto en el servidor es distinto para las conexiones de datos y de control.

 

TCP exige que cuando se realiza un cierre activo y se envia el ACK final, la conexión debe permanecer en estado de espera durante dos veces el MSL (Maximum Segment Lifetime). Con esto TCP puede reenviar el ACK final en el caso de que este ACK se perdiera. Por lo tanto una vez se ha cerrado la conexión, esta permanece inutilizable durante un periodo de 2MSL. Por eso se recomienda utilizar la orden PORT , para evitar la espera de 2MSL en conexiones de datos sucesivas.

 

 

 

 

4.7 EJEMPLO DE CONEXIÓN FTP :

Primero se debe conocer la dirección del servidor FTP con el que se desea conectar.

Por ejemplo , se va a establecer una conexión con el servidor ftp del laboratorio de redes :

 

Si aún no se ha iniciado ftp : c> ftp zoltar.redes.upv.es

 

o desde ftp : ftp> open zoltar.redes.upv.es

 

Después nos aparecerá un saludo en pantalla del servidor ftp remoto. Si se tienen derechos especiales en el servidor , le tendremos que proporcionar al sistema la identificación de usuario y la contraseña. Y si no se dispone de privilegios , se entra con el estatatus de invitado : anonymous ftp. Para entrar al servidor como invitado , en la identificación de usuario pondremos anonymous y como password la dirección de correo electrónico.

 

220 zoltar.redes.upv.es FTP server (Version wu-2.4.2-academ[BETA-15](1) Wed May 20

13:45:04 CDT 1998) ready.

user anonymous

331 Guest login ok, send your complete e-mail address as password.

pass cavifoda@catarroja.infoville.net

230- Laboratorio de Redes de Computadores.

230- Departamento DISCA

230- zoltar.redes.upv.es

230-

230--Bienvenido usuario ftp procedente de rad212.catarroja.infoville.net.

230--- Todo lo que haga usted en esta maquina queda registrado.

230--- Si no esta de acuerdo con esta politica, desconecte ahora.

230-Es usted el usuario numero 1 actualmente presente de su clase.

230-El limite de usuarios en su clase es de 60 usuarios.

230-Son las: Tue Jun 8 10:59:27 1999.

230-Si su cliente tiene problemas con nuestro servidor, coloque el caracter

230-"-" delante de su password. Esto evitara que su cliente se confunda con

230-los mensajes de continuacion FTP.

230-

230- Para cualquier duda, queja o sugerencia enviar un e-mail a: ftpmaster @redes.upv.es

230 Guest login ok, access restrictions apply.

 

Una vez conectados , para obtener una lista de los comandos ftp , podemos teclear ? ó help. Y podemos obtener una breve descripción de los mismos con help nombre_de_comando. Al hacer un dir sobre el servidor ftp , nos aparecerán varias columnas de información sobre ficheros y directorios , la primera columna de la izquierda indica los atributos de los mismos.

 

 

Atributo

Significado

-

Archivo de disco

d

Directorio

l

referencia enlazada

r

Archivo de lectura

w

Archivo con permiso de escritura

 

 

 

 

Los servidores ftp disponen de unos archivos de texto denominados archivos indice , que explican lo que hay en un directorio particular. Lo más apropiado es transferirlo al sistema local y visualizar su contenido.

 

Para transferir archivos , tendremos que asegurarnos de que estamos utilizando el tipo de transferencia apropiado :

 

 

COMANDO

SIGNIFICADO

ascii

Establece el tipo de transferencia de archivo en ASCII

binary

Establece el tipo de transferencia de archivo en BINARIO

Una vez establecido el tipo de transferencia , este permanecerá en activo hasta que se vuelva a cambiar de nuevo el tipo. Podemos averiguar que tipo de transferencia está en activo , con el comando type.

Si deseamos movernos por los directorios del servidor podemos utilizar los comandos , pwd, cd y cdup . Si lo que queremos es obtener un listado de los ficheros de un directorio utilizaremos el comando ls , etc....

 

ftp> ls

200 PORT command succesful

150 Opening ASCII mode data connection for file list

etc

pub

usr

bin

lib

incoming

welcome.msg

mirror

226 Transfer complete

56 bytes received in 0.00 seconds (56000.00 Kbytes/sec)

ftp>quit

221 Goodbye