1. FTP FILE TRNASFER PROTOCOl.
(Protocolo de transferencia de archivos)
CONTENIDO
INTRODUCCIÓN.
OBJETIVOS DEL FTP.
FTP (PROTOCOLO DE TRANSFERENCIA DE ARCHIVOS).
COMANDO DEL PROTOCOLO DE TRANSFERENCIA DE ARCHIVOS FTP.
FTP ANÓNIMO.
INTRODUCCIÓN.
El nombre FTP se deriva de las iniciales de: File Transfer Protocol, iniciales que
corresponden a: Protocolo de Transferencia de Archivos, que como su nombre lo indica,
su función, es permitir el movimiento de archivos de un computador a otro, sin importar
donde están localizados estos dos computadores, como estén interconectados, o incluso
si ellos utilizan o no el mismo sistema operativo. Existen algunas particularidades en su
uso, las cuales dependen del sistema operativo, pero la estructura de los comandos
básicos es la misma de máquina a máquina.
OBJETIVOS DE FTP.
El Protocolo de Transferencia de Archivos, se originó en el predecesor de la Internet, la
Arpanet. FTP fue parte de del desarrollo del Protocolo TCP/IP, y fue desarrollado con los
siguientes objetivos en mente:
Promover el compartir archivos, bien sea, que se trate de programas o archivos de datos.
Impulsar indirectamente o implícitamente (a través de programas) el uso de computadores
remotos.
Aislar al usuario de las variaciones en los sistemas de almacenamiento de archivos o
servidores
Transferir datos confiable y eficientemente.
2. FTP (PROTOCOLO DE TRANSFERENCIA DE ARCHIVOS).
FTP (siglas en inglés de File Transfer Protocol, 'Protocolo de Transferencia de Archivos')
en informática, es un protocolo de red para la transferencia de archivos entre sistemas
conectados a una red TCP (Transmisión Control Protocol), basado en la
arquitectura cliente-servidor. Desde un equipo cliente se puede conectar a un servidor
para descargar archivos desde él o para enviarle archivos, independientemente del
sistema operativo utilizado en cada equipo.
El servicio FTP es ofrecido por la capa de aplicación del modelo de capas de red
TCP/IP al usuario, utilizando normalmente el puerto de red 20 y el 21. Un problema básico
de FTP es que está pensado para ofrecer la máxima velocidad en la conexión, pero no la
máxima seguridad, ya que todo el intercambio de información, desde el login y password
del usuario en el servidor hasta la transferencia de cualquier archivo, se realiza en texto
plano sin ningún tipo de cifrado, con lo que un posible atacante puede capturar este
tráfico, acceder al servidor y/o apropiarse de los archivos transferidos.
Para solucionar este problema son de gran utilidad aplicaciones como scp y sftp, incluidas
en el paquete SSH, que permiten transferir archivos pero cifrando todo el tráfico.
COMANDOS DEL PROTOCOLO DE TRANSFERENCIA DE ARCHIVOS FTP.
Los comandos para el manejo de transferencias de Archivos FTP, se pueden dividir en:
Comandos de Control de Acceso y Comandos de Servicio, bien sea que se trate de
instrucciones que van a permitir el manejo de la conexión ó que van a ejecutar
instrucciones relacionadas con la transferencia en sí misma de archivos. A continuación
se indica una descripción de los principales comandos disponibles:
Comandos de Control de Acceso
Los siguientes comandos son comandos utilizados para el manejo del Control de Acceso
dentro de una sesión FTP:(Los códigos del comando se muestran entre paréntesis).
Nombre de Usuario -USER NAME-(USER)
La identificación del usuario, es aquella requerida por el servidor para el acceso a su
sistema de archivos. Este comando es normalmente el primer comando transmitido por el
usuario después de que se han establecido las conexiones de control.
Adicionalmente, se puede requerir información adicional en la forma de una palabra clave
(password), y/o un comando de cuenta pueden ser también requeridos por algunos
servidores.
Algunos Servidores permiten que un nuevo comando de Usuario (USER) sea emitido en
cualquier momento con el fin de cambiar el control de acceso y/ó la información de la
cuenta. Esto tiene el efecto de eliminar cualquier secuencia de usuario, password, e
información de cuenta suministrada y empezar una nueva sesión a partir del login. Todos
3. los parámetros de transferencia se mantienen sin cambio, y cualquier transferencia de
archivo se completa bajo los parámetros de control de acceso del usuario anterior.
El nombre de usuario que se envíe, va a determinar que archivos remotos pueda accesar
el usuario, y adicionalmente de este nombre dependerán privilegios como la posibilidad de
no solo, obtener archivos desde el servidor remoto sino, cargar ó borrar en el servidor
remoto.
Palabra Clave -PASSWORD- (PASS)
Este comando debe ser precedido por el nombre de usuario, y en el caso de algunos
sitios, completa la identificación del usuario para el control de acceso. Al momento de ser
tecleada esta información, normalmente no se recibe un "eco" de la misma, se muestra
simplemente una representación de cada carácter en la forma de asteriscos.
Cuenta -ACCOUNT- (ACCT)
El comando de Cuenta no está necesariamente relacionado al comando de USER, dado
que, algunos sitios requieren una cuenta para efectos de login y otros, solo para efectos
de accesos específicos tales como almacenamiento de archivos.
Cambio de Directorio de Trabajo -CHANGE WORKING DIRECTORY- (CWD)
Este comando le permite al usuario trabajar con un directorio diferente para efectos de
almacenamiento o de recobrar información, sin alterar su información de login. Así mismo,
los parámetros de transferencia no son modificados. El argumento de este comando es
el path especificando el nuevo directorio.
Cambio a Directorio Superior -CHANGE TO PARENT DIRECTORY- (CDUP)
Este comando, es un caso especial del anterior comando CWD, y es incluido para
simplificar la implementación de programas que permitan transferir árboles de directorio
entre sistemas operativos con diferentes sintaxis para el directorio raíz.
Reinicializar -REINITIALIZE- (REIN)
Este comando termina un Usuario -USER-, eliminando toda la información de su cuenta,
excepto que permite la finalización de cualquier transferencia que se esté ejecutando.
Todos los parámetros son reinicializados a los ajustes por defecto y el control de la
conexión es dejado abierto. Esto es idéntico al estado en que un usuario se encuentra al
momento inicial de abrir la conexión. Se podría esperar que a continuación siguiera un
comando de usuario -USER-.
Salir -LOGOUT. (QUIT)
Este comando termina un Usuario -USER- y si no se encuentra en progreso una
transferencia de archivos, el servidor cierra la conexión de control. Si todavía existe una
transferencia en progreso, la conexión continuará abierta esperando por la finalización de
la transferencia y luego el servidor la cerrará. Si el proceso del usuario está transfiriendo
4. archivos para varios usuarios, pero no desea cerrar y luego reabrir una conexión para
cada uno, entonces, debe utilizar el comando REIN en vez del comando QUIT.
Comandos de Servicio de FTP
Los comando de Servicio de FTP definen la transferencia de archivos o la función del
sistema de archivos requerida por el usuario. El argumento de un comando de servicio
FTP será normalmente un nombre de subdirectorio (Pathname).
La sintaxis de los nombres de archivo deben ajustarse a las convenciones del sitio (con
los estándar por defecto aplicables), y al lenguaje y las convenciones de lenguaje para el
control de la conexión. El manejo sugerido por defecto, es usar el último elemento,
directorio ó nombre de archivo especificado, o el estándar por defecto sugerido para
usuarios locales. Los comandos pueden ser emitidos en cualquier orden, excepto un
comando "rename from" debe ser seguido inmediatamente por un comando "rename to" y
un comando restart debe ser seguido por un comando de servicio interrumpido (por
ejemplo, STOR or RETR). Los datos cuando son transferidos en respuesta a comandos
de servicio FTP, deben ser siempre enviados sobre la conexión de datos, excepto para
ciertas respuestas de tipo informativo. Los siguientes comandos especifican
requerimientos de servicio FTP:
Recobrar - RETRIEVE- (RETR)
Este comando hace que el servidor transfiera una copia del archivo, especificado en
el pathname, al servidor ó al usuario conectado al otro extremo de la conexión .El estado
y contenido del archivo en el sitio del servidor no se verá afectado.
Almacenar -STORE- (STOR)
Este comando hace que el Servidor DTP acepte datos transferidos a través de la
conexión de datos y los almacene como un archivo en el sitio del servidor. Si el archivo
especificado existe en el sitio del servidor, el contenido será reemplazado por los datos
transferidos. Si el archivo no existe, entonces se creará uno nuevo.
Almacenar Único -STORE UNIQUE- (STOU)
Este comando se comporta como STOR excepto que el archivo resultante es creado en el
directorio corriente bajo un nombre único en ese directorio. La respuesta: "250 Transfer
Started" incluirá además el nombre generado.
Adicionar -APPEND- (with create) (APPE)
Este comando hace que el Servidor DTP acepte datos transferidos a través de la
conexión de datos y que los almacene en un archivo en el sitio del Servidor. Si el archivo
especificado en el nombre, existe, en el sitio del servidor, entonces los datos serán
adicionados al final de ese archivo, de otro modo el archivo debe ser creado en el sitio del
servidor.
5. Disponer -ALLOCATE- (ALLO)
Este comando puede ser requerido por algunos servidores para reservar suficiente
almacenamiento que permite acomodar al nuevo archivo a ser transferido. El argumento
debe ser un entero decimal representando el número de bytes (usando el tamaño de byte
lógico) de almacenamiento a ser reservados para el archivo. Para archivos enviados con
registros ó estructura de página, un registro máximo ó tamaño de página (en bytes
lógicos) puede ser también necesaria, esto es indicado por un entero decimal en un
segundo campo de argumento.
Este segundo argumento es opcional, pero cuando esté presente, debe estar separado
del primero por tres caracteres <SP> R <SP>. Este comando debe ser seguido por un
comando STORe or APPEnd. El comando ALLO debe ser tratado como un comando
NOOP (no operación) por aquellos servidores que no requieren que el tamaño máximo del
archivo sea declarado de antemano, y por aquellos servidores interesados en solamente,
el máximo registro tamaño de página, deben aceptar cualquier valor para el primer
argumento e ignorarlo.
Reiniciar -RESTART- (REST)
El campo de argumento representa el marcador del servidor para el cual la transferencia
de archivos va a ser reiniciada. Este comando no causa una transferencia de archivo,
pero salta sobre el archivo al punto de chequeo especificado. Este comando debe ser
seguido inmediatamente por el comando de Servicio de FTP apropiado, que debe hacer
que se continúe con la transferencia de archivos.
Renombrar a partir de -RENAME FROM- (RNFR)
Este comando especifica el nombre y el path del archivo que va a ser renombrado. Debe
ser seguido inmediatamente por un comando "rename to" que especifica el nuevo
nombre de archivo.
Renombrar a -RENAME TO- (RNTO)
Este comando especifica un nuevo nombre de archivo para el archivo especificado en el
comando inmediatamente anterior "rename from”. Juntos los dos comandos permiten que
un archivo sea renombrado. .
Abortar -ABORT- (ABOR)
Este comando hace que el servidor aborte el comando de servicio FTP anterior y
cualquier transferencia asociada de datos. El comando "abort" puede requerir acciones
especiales para que sea reconocido por el Servidor. No se hace necesaria ninguna acción
si el comando previo ya ha sido completado (incluyendo la transferencia de datos). La
conexión de control no va a ser cerrada por este comando, pero la conexión de datos
debe ser cerrada. Existen dos casos para el servidor al momento de recibir este comando:
1. El comando de Servicio de FTP ya ha sido completado, ó
2. El comando de servicio FTP está todavía en progreso.
6. En el primer caso, el servidor cierra la conexión de datos (si todavía está abierta) y
responde con un mensaje de respuesta 226, indicando que el comando de abortar fue
exitosamente ejecutado. En el segundo caso, el servidor aborta el Servicio FTP en
ejecución, y cierra la conexión de datos, retornando un mensaje de respuesta 426 para
indicar que el requerimiento de servicio fue anormalmente terminado. Luego el servidor
envía un mensaje de respuesta 226, indicando que el comando abortar fue exitosamente
procesado.
Eliminar -DELETE- (DELE)
Este comando hace que el archivo especificado en el path sea borrado en el sitio del
servidor. Si se desea un nivel extra de protección (tal como la pregunta: "Quiere realmente
eliminar el archivo", este debe ser suministra por el usuario del proceso de FTP.
Remover Directorio -REMOVE DIRECTORY- (RMD)
Este comando hace que el directorio especificado en el path sea removido como directorio
(Si el path es absoluto), o como subdirectorio del directorio de trabajo corriente (Si
el path es relativo).
Crear Directorio -MAKE DIRECTORY- (MKD)
Este comando hace que el directorio especificado en el path sea creado como directorio
(Si el path es absoluto), o como subdirectorio del directorio de trabajo corriente (Si
el path es relativo).
Imprimir Directorio de Trabajo -PRINT WORKING DIRECTORY- (PWD)
Este comando hace que el directorio de trabajo corriente, con el listado de todos los
archivos que contiene, sea retornado como respuesta.
Listar -LIST- (LIST)
Este comando hace que una lista sea enviada desde, el servidor a la DTP pasiva.
Si el nombre del path especifica un directorio ó otro grupo de archivos, el servidor debe
transferir un listado de archivos contenidos en el directorio especificado. Si el nombre del
path especifica un archivo, entonces el servidor debe enviar la información sobre el
archivo corriente. Un argumento nulo implica el directorio por defecto ó el directorio
corriente del usuario.
La transferencia de datos sobre la conexión se realiza en formato ASCII ó EBCDIC. El
usuario debe asegurarse que el Tipo de Formato sea el apropiado. Dado que la
información en un archivo puede variar ampliamente de sistema a sistema, este tipo de
información puede ser difícil de usar en forma automática, dentro de un programa, pero
puede ser de utilidad para un usuario.
Listar Nombre -NAME LIST- (NLST)
7. Este comando hace que un listado del directorio sea enviado desde el servidor al sitio del
usuario. El nombre del path debe especificar un directorio u otro grupo de archivos
específico del sistema, un argumento nulo implica el directorio corriente. El servidor
retornará un listado de nombre de archivos sin ninguna otra información. Los datos serán
transferidos en formato ASCII ó EBCDIC sobre la conexión de datos como cadenas de
nombres de path válidas separado por <CRLF> ó <NL>. (Aquí de nuevo, el usuario debe
asegurarse que el tipo de formato es correcto). Este comando es utilizado para retornar
información que puede ser utilizada por un programa para procesar archivos
automáticamente. Por ejemplo, en la implementación de una función "múltiple get".
Parámetros de Sitio -SITE PARAMETERS- (SITE)
Este comando es utilizado por el servidor para proveer servicios específicos del sistema
que son esenciales para la transferencia de archivos, pero no suficientemente universales
para ser incluidos como comandos en el protocolo. La naturaleza de este servicio al igual
que la especificación de su sintaxis puede ser establecida a través de una respuesta al
comando HELP SITE.
Sistema -SYSTEM- (SYST)
Este comando es usado para conocer el tipo de sistema operativo que utiliza el servidor.
Estado -STATUS- (STAT)
Este comando debe causar una respuesta de Status que debe ser enviada sobre la
conexión de control en la forma de una respuesta. Este comando puede ser enviado
durante una transferencia de archivos, en cuyo caso el servidor responderá con el estado
de la operación en progreso, ó puede ser enviado entre transferencias de archivos. En el
último caso puede tener un campo de argumento. Si el argumento en un nombre de path,
el comando es análogo al comando "list" excepto que los datos deben ser transferidos
sobre la conexión de control. Si se da un nombre de path parcial, el servidor puede
responder con una list de nombres de archivo ó atributos asociados con esa
especificación. Si no se entrega ningún argumento, el servidor debe retornar información
del estado general del proceso de FTP del servidor. Esto debe incluir valores corrientes
de todos los parámetros de transferencia y el estado de las conexiones.
Ayuda -HELP- (HELP)
Este comando hará que el servidor envíe al usuario, información de ayuda relativa al
estado de la implementación de la conexión de control. El comando puede aceptar un
argumento (por ejemplo: cualquier nombre de comando) y retornar información más
específica como respuesta. La respuesta es del tipo 211 ó 214. Se sugiere que HELP sea
enviado antes de entrar comandos de usuario. El servidor puedes usar la respuesta a este
comando para enviar especificaciones de parámetros dependientes del sitio.
No Operación -NOOP- (NOOP)
Este parámetro no afecta ninguno de los parámetros ó comandos previamente entrados.
Este especifica no otra acción que el servidor envíe una respuesta de OK.
8. FTP ANÓNIMO.
Los requerimientos hasta ahora delineados de una combinación de Login/Password para
lograr el acceso a un sitio en el web, hacen impráctico el uso generalizado de FTP, pues
se tendría que otorgar una combinación de Nombres de Acceso y Password a todos los
posibles interesados en obtener un archivo de un sitio en el Web. Esto implicaría una
carga de trabajo no solo para el administrador del sitio, sino también para el usuario.
Es por esta razón, que se creó el concepto de FTP anónimo, el cual permite evitar esta
restricción, y le va a permitir a usuarios que no se encuentran registrados en una
determinada máquina, tener acceso a algunos archivos. Es obvio que existen
restricciones aplicables a esta categoría de usuario.
Normalmente un usuario anónimo está habilitado para accesar a archivos, pero no puede
colocar nuevos archivos en el sitio (upload), ni puede modificar los allí existentes.
Adicionalmente, los archivos que puede copiar normalmente se encuentran limitados.
Acceso bajo usuario Anónimo.
El acceso Anónimo se puede realizar a todos los sitios que tienen habilitado este tipo de
usuario. En este caso, el servidor tiene un nombre de usuario llamado Anonimous,
cuyo Password puede ser cualquier combinación de letras, aunque, es una costumbre
que se utilice la dirección de correo electrónico del usuario como password, y esto se
espera a fin de que el administrador tenga en un momento dado una idea de quien está
accesando el sitio, y en caso de ser requerido pueda contactarlo fácilmente. Algunos
sistemas de hecho, no permiten el acceso a un usuario anónimo a no ser que se utilice
una dirección de correo electrónico como Password.
Restricciones a Usuarios Anónimos.
Las restricciones que aplican a un usuario anónimo son manejadas a través de la
modificación al comando CD (Cambio de Directorio). Cuando se entra a un sistema en
forma anónima, se coloca al usuario automáticamente dentro de un subdirectorio especial.
Ese directorio inicial es el punto de entrada para para todos los accesos de FTP
anónimos. Desde allí sólo se podrá mover dando el nombre del subdirectorio, ó moverse
de regreso de un subdirectorio al directorio superior, utilizando el comando CD... Ó CDup.
El posicionamiento absoluto mediante la especificación del subdirectorio al que se desea
ir a continuación del slash (/), no es usualmente permitido. Técnicamente es legal hacerlo;
pero cd /pub es normalmente redefinido para significar mover al subdirectorio pub del
directorio FTP anónimo inicial. Puede usar CD / si en algún momento se siente perdido y
necesita regresar al punto inicial.
FTP Anónimo a través de Browsers.
Una alternativa bastante frecuente y de fácil uso es la de accesar los sitios FTP a través
de un Browser, bien sea que se trate de Internet Explorer ó de Netscape. Ambos permiten
hacer uso de las ventajas del FTP dentro de una interfase de fácil uso.