El protocolo FTP
Clientes y Servidores
En este curso intentaremos explicar de manera clara y sencilla, qué es y para qué sirve el protocolo FTP tanto en sistemas Windows como Unix.
Actualmente resulta casi imprescindible tener unos conocimientos básicos del funcionamiento, teoría y práctica de este protocolo, que nos permitirá realizar intercambios de archivos, descargar programas, compartir aplicaciones y funciones tan específicas como por ejemplo, efectuar el mantenimiento de un sitio web.
Comenzaremos explicando un poco los inicios del FTP, los comandos básicos que se utilizan, aprenderemos a realizar conexiones en modo texto y las operaciones más usuales de transmisión, envío y borrado de datos, además de aprender como movernos por los directorios del servidor.
Posteriormente, instalaremos y configuraremos un cliente de FTP en modo gráfico desde Windows y realizaremos pruebas de conexión.
En nuestra tercera parte, daremos una pequeña introducción a los Servidores de FTP tanto en Windows como Linux y después, aprenderemos a instalar y configurar un Servidor en Windows.
Por último y para solventar las posibles dudas y aclarar los conceptos aquí expuestos, existen palabras con enlaces que llevan a la definición del término en cuestión.
Introducción
¿Qué es el protocolo FTP?,¿Como surgió?
FTP, perteneciente a la familia TCP/IP, comenzó siendo una utilidad incluida en el sistema operativo Unix, usada para transferir archivos entre los distintos equipos conectados en una red. No en vano, FTP es un acrónimo de File Transfer Protocol o Protocolo de Transferencia de Archivos.
Comienza a ser usado en 1971 con el fin de implementarlo en el MIT (instituto tecnológico de Massachussets), sin embargo, no fue hasta 1973 cuando el protocolo traería considerables mejoras para su utilización.
Concepto Cliente y Servidor
Para poder comunicarse mediante este protocolo es preciso que un PC se conecte como cliente y exista otro que haga de servidor. Esto quiere decir que nosotros mismos podemos realizar una comunicación como clientes hacia otro PC servidor, que puede estar en nuestra red o Internet (por ejemplo). Esta operación se realiza con el fin de navegar e investigar qué es lo que tiene este PC servidor, para poder subir, bajar, borrar, escribir....dependiendo de los permisos que tengamos.
Nosotros como cliente, debemos usar un programa denominado "Cliente de FTP" ya sea en modo texto o gráfico. En el PC servidor, deberá haber instalado un programa "Servidor de FTP" que pueda atender las peticiones de los clientes y permitir la conexión de todos ellos.
En resumen podemos decir que el protocolo FTP y los programas que lo manejan y usan, nos serviran para compartir archivos y permitir la transmisión fiable de los mismos, con opciones avanzadas.
Teoría del FTP
Tipos de conexión
Control y Datos
Para iniciar una sesión FTP, aunque no nos demos cuenta, nuestro programa cliente usa dos conexiones simultaneas. Una de ellas sirve para el diálogo entre el cliente y el servidor, con el fin de que ambos se entiendan frente a las operaciones que deben realizar. Este tipo de conexión se denomina "de control". Por otro lado, tenemos la conexión de intercambio de archivos propiamente dicha, a la que denominamos conexión "de datos".
Puertos
Por lo general, y de manera estandar a nivel mundial, el protocolo FTP usa el puerto 21. Sin embargo, este puerto es el que se utiliza para la transmisión de las señales de control y no para la transmisión de datos que usa generalmente el puerto número 20.
Como dato significativo, es preciso señalar que el protocolo FTP permite comunicaciones "full duplex" es decir, que se pueden enviar y recibir datos al mismo tiempo.
Formatos
Existen varios formatos de transferencia de archivos, aunque hablaremos únicamente de los conocidos como ASCII o Binario.
Por lo general, siempre que se transfieran archivos de texto, aquellos que pueden abrirse por ejemplo con un Bloc de notas o un procesador de textos, deberán transmitirse en modo ASCII. Si por el contrario, subimos imágenes, programas ejecutables, archivos comprimidos,...deberemos usar el formato Binario. Muchos clientes de FTP permiten predefinir qué archivos deberán tratarse como ASCII y suelen tener ya incluidos los más usuales como TXT, HTML, PHP y otros. El resto serán tratados en modo Binario.
Comandos básicos
El File Transfer Protocol, usa una serie de comandos básicos a nivel de control, que permiten concretar la comunicación entre el cliente y el servidor. Estos comandos se ejecutan de forma automática en los clientes más modernos con interfaz gráfica, aunque si trabajamos con FTP en modo texto, será necesario contar con una tabla de comandos o aprendernos los más usuales.
Si no contamos con ninguna tabla a mano, podemos usar el comando HELP y se nos mostrará en pantalla una lista de ellos.
A continuación puedes ver una lista de los comandos más usuales y su significado:
account [contraseña]: Suministra una contraseña suplementaria para tener acceso a los recursos. Una vez se haya ejecutado login con éxito.
ACCT : Mensaje del servidor que requiere un argumento del cliente para identificar la cuenta de usuario.
append [archivo local] [archivo remoto]: Añadir archivo local al final del remoto.
ascii : Transferir los archivos en modo ASCII. Valor por defecto.
binary: Transferir los archivos en modo binario.
bye : Cerrar la conexión con el servidor. También sirve tecleando EOF.
cd [directorio]: Entrar en un directorio.
cdup : Retroceder a un nivel superior del directorio.
chmod [modos] [archivo]: Cambiar o asignar permisos del archivo (escritura, lectura, etc... según quien sea el usuario, los códigos de modo corresponden al de los sistemas UNIX).
close: Terminar la conexión con el servidor pero no salir del cliente de ftp.
cr : Cambiar el retorno de carro alterado durante la recuperación de un archivo ASCII.
cwd : Menaje del servidor que muestra en que directorio se encuentra el cliente.
delete [archivo]: eliminar archivo o directorio vacío.
dir [directorio remoto] | [archivo local] : hacer un listado del directorio o archivo local, y si no se especifican estos parámetros se hará un listado del directorio de trabajo actual.
disconnect : Igual que close .
form [formato]: Establecer la forma de transferencia de un archivo.
get [directorio remoto] [archivo local]: Copiar el archivo remoto al local, en caso de que el segundo parámetro no se introduzca se copiara o sobreescribirá un archivo local con el nombre del archivo remoto.
ls ([directorio remoto] | [archivo local]): Listar el directorio remoto en el archivo local, si no se introducen los parámetros se listara el directorio de trabajo remoto.
mdelete [archivos]: Eliminar archivos.
mdir [archivos] [archivo local]: escribe un listado de los archivos remotos en un archivo local.
mget [archivos]: Copiar archivos remotos en el directorio local.
mkdir [nombre directorio]: Crear un directorio.
mls [archivos] [archivo local]: Escribe un listado abreviado de archivos remotos en un archivo local.
mode [modo]: establece el modo de transferencia de archivo ( Stream , block o compress mode ).
modtime [archivo]: muestra la fecha de última modificación de un archivo.
mput [archivo local]: Copiar el archivo local del sistema local al sistema remoto.
nlist [directorio] [archivo local]: Escribir un listado abreviado del directorio en un archivo local. Si no se especifica el directorio remoto se utilizará el de trabajo actual.
open [dirección] [puerto]: Conectar a un servidor, el numero de puerto es opcional, el numero predeterminado es 21.
PASS: Mensaje del servidor que requiere que el cliente envíe la contraseña del nombre de usuario.
pasv [puerto]: pedir proceso de conexión de datos en un determinado numero de puerto del cliente.
port [socket]: especificar al servidor un socket (combinación de dirección IP de 32 bits y numero de puerto de 16 bits, dividido en campos de 8 bits) del cliente para establecer una conexión de datos.
put [archivo local] [archivo remoto]: escribir o sobrescribir (copiar) una archivo local en uno remoto.
pwd : Listar el nombre del directorio de trabajo actual.
quit : terminar sesión y desconectar la conexión.
recv [archivo] [archivo local] : idéntico a get .
reget [archivo] [archivo local] : Actúa como get , pero si comprueba que el archivo remoto es de menor tamaño que el local supone que el archivo local es una copia inacabada del remoto y la transferencia continua desde el punto donde acaba el archivo parcial. Sirve para continuar descargas inacabadas.
rein : regresar al estado que sigue inmediatamente al establecimiento de la conexión de control (reiniciar).
retr [archivo]: Comando mas utilizado para manda un archivo del servidor al cliente.
rhelp [archivo] : solicitar ayuda al servidor.
rstatus [archivo] : muestra el estado de la máquina remota. Si se especifica un archivo se mostrará el estado de un archivo.
rename ([archivo] [archivo]) | ([directorio] [directorio]): renombrar un archivo o directorio.
rmdir [directorio]: eliminar directorio vacio.
send [archivo local] [archivo remoto] : igual que put .
size [archivo]: Mostrar el tamaño del archivo.
smnt : montar una estructura de datos para el sistema de archivos.
stru [estructura de archivo] : indicar la estructura de archivo ( file , record o page ).
stor [archivo]: comando mas utilizado para mandar un archivo de la máquina local al remoto.
system : Mostrar el tipo de sistema operativo del servidor.
type [tipo de transferencia] : Establecer el tipo de transferencia de archivo FTP ( Local , binario , imagen , EBCDIC o ASCII ) o también especificar el control de formato ( NON Print , TELNET o control de carro FORTRAN ). Si no se especifica el parámetro se utilizarán los tipos standards ASCII y binario.
USER: Cuando el servidor lo solicite con este mensaje se requiere un parámetro por parte del cliente para identificar su nombre de usuario.









Vamos a tratar en esta ocasión el cliente de FTP en Linux gFTP por ser uno de los más utilizados y que se distribuye con la mayoría de las distribuciones Linux. En cualquier caso, si no dispones de este cliente tu sistema, puedes adquirirlo de manera gratuita (y en español) en la siguiente dirección:





Si necesitas o deseas usar un cliente de FTP desde Windows, existen también múltiples posibilidades, sin embargo, la más completa que hemos encontrado se llama FILEZILLA. Se trata de un programa gratuito y disponible en español, que nos permitirá acceder a cualquier servidor FTP haciendo uso de unas interesantísimas opciones. Puedes obtener más información y descargar el programa desde la dirección oficial en:





