UT4: FTP
Curso CFGM – Servicios en Red (2º SMR)
El servicio FTP (File Transfer Protocolo) o
protocolo de transferencia de archivos
FTP proporciona un mecanismo estándar de
transferencia de archivos entre sistemas a través
de redes TCP/IP
• Promover el intercambio de archivos entre máquinas
remotas a través de la red.
• Fomentar el acceso de máquinas remotas.
Objetivos
• Independizar las necesidades de los usuarios de los
diferentes archivos utilizados en las distintas
máquinas
• Conseguir una transferencia de datos rápida y fiable.
• Utiliza el mecanismo “normal” de autenticación
de usuarios a través de nombres de usuario y
contraseña
Desventajas • Transfiere las contraseñas en texto plano, por lo
tanto, cualquier herramienta de captura de
tramas de red, podría obtenerlas y utilizarlas.
• FTP no cifra la propia sesión en sí misma, por lo
que las transferencias de archivos también son
en texto plano.
Es un servicio basado en la arquitectura cliente-
servidor. Su funcionamiento es el siguiente: un
servicio FTP conectado a la red proporciona el
servicio a través de dos puertos bien conocidos:
• El puerto 20, para transferencia de datos
¿Cómo funciona el • El puerto 21, para la transferencia de órdenes.
servicio FTP? El cliente se conecta al servidor haciendo uso de
un puerto local (origen) mayor que 1024, y
tomando como destino el puerto 21 del servidor.
Una vez se ha establecido la conexión, ya se puede
hacer uso de las órdenes específicas FTP de
manejo de archivos y directorios remotos.
¿Cómo funciona el
servicio FTP?
> ftp 10.2.3.254
Connected to 10.2.3.254.
220 10.2.3.254 FTP server (Version 1.7.111.1 Mon Jan 6 20:26:20
GMT 2025) ready.
Name (10.2.3.254): anonymous
331 Guest login ok, send ident as password.
Password:
230 Guest login ok, access restrictions apply.
Ejemplo(I) Remote system type is UNIX.Using binary mode to transfer files.
ftp>
ftp> cd pub
250 CWD command successful.
ftp> cd iesjoserodrigobotet
250 CWD command successful.
ftp> cd SMX
250 CWD command successful.
ftp> cd 2SER
250 CWD command successful.
ftp> get leeme.txt info.txt
200 PORT command successful.
150 Opening BINARY mode data connection for Manual.doc
Ejemplo (II) (1681920 bytes).
226 Transfer complete.
1681920 bytes received in 1.67 seconds (980.66 Kbytes/s)
ftp> quit
221 Goodbye.
En toda transferencia ftp interviene un programa servidor y un
programa cliente.
• El programa servidor se ejecuta donde están almacenados los
ficheros que se quieren bajar (o donde se almacenarán los que
deseamos subir)
•
Modo de Operación
El programa cliente es el programa ftp que usamos desde la
maquina local, para subir o bajar los ficheros.
de FTP En este proceso de comunicación entre cliente y servidor, el cliente
puede actuar en modo activo o en modo pasivo.
Una conexión ftp usa dos puertos:
• Uno será el puerto de comandos, command port, o control
port (normalmente puerto 21) por donde se transfieren las
órdenes.
• Otro es el puerto de datos , o data port, que es por donde
circulan los datos que integran los ficheros (normalmente el
puerto 20, pero puede ser cualquiera por debajo del 1024).
Se establecen 2 conexiones distintas
En primer lugar, se establece una conexión para la transmisión de
comandos (desde cualquier puerto de nuestro ordenador inferior a
1024 hacia el puerto 21 del servidor) y por esa misma conexión,
Modo Activo mediante un comando PORT se indica al servidor cual es el puerto
(distinto) de nuestro ordenador que está a la escucha de los datos.
(Modo Normal) Entonces, si bajamos algún archivo, es el servidor el que inicia la
transmisión de datos, desde su puerto 20 al puerto que le hemos
indicado.
Se llama modo activo porque la transmisión de datos es iniciada
como proceso distinto desde el servidor, hacia el puerto que le
hemos indicado.
En este modo abre la conexión el encargado de enviar los datos
Modo Activo
(Modo Normal)
En modo pasivo es siempre el programa cliente el que
inicia la conexión con el servidor.
Al abrir una conexión ftp se abre primero una conexión
de control (desde un puerto inferior a 1024 de la
Modo Pasivo maquina local al puerto 21 del servidor).
Al pasar a modo pasivo (comando PASV), el cliente
pide un puerto abierto al servidor (será otro puerto
inferior al 1024 del servidor) y recibida la contestación,
será el cliente el que establezca la conexión de datos
al servidor a través de ese puerto.
Modo Pasivo
En modo pasivo las conexiones son siempre abiertas por el
cliente, mientras que en modo activo se abren por el que envía
los datos (el server si se trata de bajar archivos, y el cliente si se
trata de subir archivos al server).
Modo Activo vs El posible problema del Modo Activo: En este modo se abre una
conexión para datos desde el servidor a la maquina cliente, esto
Pasivo es, una conexión de fuera a dentro... Si la maquina cliente está
protegida por un firewall, es posible que filtre o bloquee la
conexión entrante, al ser un proceso desconocido.
En el modo pasivo es el cliente el que inicia ambas conexiones,
de control y de datos, con lo cual el firewall no tiene ninguna
conexión entrante que filtrar.
Tipo ASCII
Adecuado para transferir archivos que sólo contengan
caracteres imprimibles (archivos ASCII, no archivos
resultantes de un procesador de texto), por ejemplo,
Tipos de páginas HTML, pero no las imágenes que puedan
contener.
Transferencia
Tipo BINARIO
Este tipo es usado cuando se trata de archivos
comprimidos, ejecutables para PC, imágenes,
archivos de audio...
Ejemplos de cómo transferir algunos tipos de
archivo dependiendo de su extensión:
Extensión de archivo Tipo de transferencia
Ejemplos tipos de txt (texto)
html (página WEB)
ascii
ascii
transferencia doc (documento) binario
ps (poscript) ascii
ZIP (comprimido) binario
tar (empaquetado) binario
Las directivas (órdenes) de FTP se dividen en
tres tipos:
Comandos 1. Órdenes de Control de Acceso.
internos de FTP 2. Parámetros de Transferencia.
3. Comandos de Servicio.
https://www.ionos.es/digitalguide/servidores/know-how/comandos-ftp/
• USER (nombre de usuario)
• PASS (contraseña)
• ACCT (account, cuenta)
Comandos
• CWD (Cambio de directorio de trabajo)
internos de FTP
(Acceso) • CDUP (Cambio al directorio padre)
• SMNT (Montar directorio)
• REIN (Reinicializar)
• QUIT (Salir)
• PORT (Puerto de datos)
Comandos • PASV (Pasivo)
internos de FTP
• TYPE (tipo de representación)
(Transferencia)
• STRU (Estructura de fichero)
• MODE (Modo de transferencia)
• RETR (Recuperar)
• STOR (Almacenar)
• MKD (Crear directorio)
• STOU (Almacenamiento Unico)
• PWD
• APPE (Añadir)
• LIST
Comandos • ALLO (Solicitar espacio)
• NLST (Listar nombres)
internos de FTP • REST (Recomenzar)
(Servicio) • RNFR (Renombrar desde)
• SITE (Parámetros del sistema)
• SYST
• RNTO (Renombrar a)
• STAT
• ABOR (abortar)
• HELP
• DELE (Borrar)
• RMD (Borrar directorio)
• 110 Respuesta al marcador de reinicio. En este
caso, el texto debe ser: MARK yyyy = mmmm
Donde yyyy es el marcador del flujo de datos en
Códigos de el proceso de usuario y mmmm es el equivalente
en el servidor.
respuesta • 120 El servicio estará en funcionamiento en nnn
minutos.
• 125 La conexión de datos ya está abierta;
comenzando transferencia.
• 150 Conexión abierta.
• 200 OK (Orden correcta).
• 202 Orden no implementada, no necesaria en este sistema.
• 211 Estado del sistema o respuesta de ayuda del sistema.
Códigos de • 212 Estado del directorio.
respuesta • 213 Estado del fichero.
• 214 Mensaje de ayuda. Sobre cómo usar el servidor o el
significado de una orden particular no estándar.
• 215 Identificación del tipo de sistema.
• 220 Servicio preparado para nuevo usuario.
• 221 Cerrando la conexión de control. Desconectado si
procede.
• 225 Conexión de datos abierta; no hay transferencia en
proceso.
Códigos de
• 226 Cerrando la conexión de datos. La acción sobre fichero
respuesta requerida ha sido correcta (por ejemplo, una transferencia o
interrupción).
• 227 Iniciando modo pasivo.
• 230 Usuario conectado, continúe.
• 250 La acción sobre fichero solicitado finalizó correctamente.
• 257 "path" creado.
• 331 Usuario OK, necesita contraseña.
• 332 Necesita nombre de cuenta.
Códigos de
• 350 La acción requiere más información. Pendiente
respuesta
• 421 Servicio no disponible, cerrando la
conexión de control. Esta puede ser la
respuesta a cualquier comando si el servidor
sabe que debe finalizar.
• 425 No se puede abrir la conexión de datos.
Códigos de • 426 Conexión cerrada; transferencia
interrumpida.
respuesta
• 450 Acción no realizada. Fichero no disponible
(por ejemplo, fichero bloqueado).
• 451 Acción interrumpida. Error local.
• 452 Acción no realizada. Falta de espacio en el
sistema de ficheros.
• 500 Error de sintaxis, comando no reconocido.
Esto puede incluir errores como línea de orden
demasiado larga.
• 501 Error de sintaxis en parámetros o
argumentos.
Códigos de • 502 Orden no implementada.
respuesta • 503 Secuencia de órdenes incorrecta.
• 504 Parámetro incorrecto para esa orden.
• 530 No está conectado.
• 532 Necesita una cuenta para almacenar
ficheros.
• 550 Acción no realizada, Fichero no disponible (por
ejemplo, fichero no existe, no se tiene acceso al
mismo).
• 551 Acción interrumpida. Tipo de página
Códigos de desconocido.
respuesta
• 552 Acción interrumpida. Se ha sobrepasado el
espacio disponible de almacenamiento (para el
directorio actual).
• 553 Acción no realizada. Nombre de fichero no
permitido.
Existe una gran diversidad de servidores FTP para
UNIX/Linux:
• Pure-FTPd: https://www.pureftpd.org/project/pure-ftpd/
https://shape.host/resources/guia-completa-para-la-instalacion-de-pure-ftpd-en-ubuntu-22-04
https://xatakalinux.wordpress.com/2014/11/20/como-instalar-y-configurar-un-servidor-ftp-con-pure-ftpd-
usuarios-virtuales/
• ProFTPD: http://www.proftpd.org/
https://www.redeszone.net/tutoriales/servidores/proftpd/
• VSFTPD: http://vsftpd.beasts.org/
Servidores FTP https://www.redeszone.net/tutoriales/servidores/vsftpd-configuracion-servidor-ftp/
https://blog.infranetworking.com/servidor-ftp-linux/
• WUFTPD: http://www.wu-ftpd.org/
• FileZilla Server: https://filezilla-project.org/index.php
• Bftpd: https://bftpd.sourceforge.net/
• NcFTPD: http://www.ncftpd.com/
https://www.redeszone.net/tutoriales/servidores/mejores-servidores-ftp-ftpes-linux/
• https://www.cloudcenterandalucia.es/blog/formas-de-
conectarse-a-un-servidor-ftp/
• https://www.redeszone.net/tutoriales/servidores/conectar
-servidor-ftp-sin-programas-windows/
Formas • https://dinahosting.com/ayuda/como-conectar-mediante-
conectarse a ftp-con-windows/
• https://dinahosting.com/ayuda/como-conectar-ftp-
servidores FTP filezilla/
• https://dinahosting.com/ayuda/conexion-mediante-sftp-
con-filezilla/
• https://dinahosting.com/ayuda/como-conectar-mediante-
ftp-en-linux/