PASSIVE MODE
Uno de los términos que se suelen oir cuando se habla de problemas con el ftp es el de passive mode. Aqui vamos a ver de que se trata, y por que es la solución a muchos problemas de conectividad
Como
sabemos en toda transferencia ftp interviene un programa servidor y un
programa cliente. El programa servidor se ejecuta donde estan
almacenados los ficheros que se quieren bajar (o donde se almacenarán
los que deseamos subir) y el programa cliente es el programa ftp que
usamos desde la maquina local, para subir o bajar los ficheros.
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, abre dos canales: Uno será el puerto de comandos, command port o control port (normalmente puerto 21) por donde se transfieren las órdenes. El otro es el puerto de datos (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)
modo activo
Cuando usamos ftp en modo activo (tambien considerado modo normal)
se establecen dos conexiones distintas. El 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 server) y por
esa misma conexion, mediante un comando PORT se indica al server cual es
el puerto (distinto) de nuestro ordenador que está a la escucha de los
datos.
Entonces, si bajamos algun 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.
modo pasivo
En modo pasivo es siempre el programa cliente el que inicia la conexion 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 maquina local al puerto 21 del server). Al pasar a modo pasivo (comando PASV), el cliente pide un puerto abierto al servidor (será otro puerto inferior al 1024 del server) y recibida la contestacion, será el cliente el que establezca la conexión de datos al server a traves de ese puerto.
A modo de resumen podemos decir que en modo pasivo las conexiones son siempre abiertas por el pc cliente, mientras que en modo pasivo se abren por el que envia los datos (el server si se trata de bajar archivos al pc local, el cliente si se trata de subir archivos al server).
Y por qué supone un problema el modo activo ?
Como
hemos visto, en el modo activo se abre una conexión para datos desde el
server a la maquina cliente, esto es, una conexión de fuera a dentro.
Entonces,
si la maquina cliente está protegida por un firewall, este filtra o
bloquea la conexión entrante, al serle un proceso desconocido.
En modo pasivo es el cliente el que inicia ambas conexiones, de control y de datos, con lo cual el firewall no tiene ninguna conexion entrante que filtrar
Pasive mode y la linea de comandos
Lamentablemente
la utilidad de ftp que viene por defecto con windows 95/98 y que puedes
usar en línea de comandos, no dispone de modo pasivo.
Por ello
si tienes problemas de conexion y sospechas que es por un firewall,
deberás buscar un programa cliente ftp que disponga de esta posibilidad
(la inmensa mayoria).
Para terminar con el modo pasivo, parte de un log de conexión:
FTP > PASV
FTP < 227 Entering Passive Mode (222,222,222,22,196,39).
FTP > LIST
Como ves el server reacciona al comando PASV entrando en modo pasivo e indicando una serie de numeros (entre parentesis la segunda linea). Los cuatro primeros bloques de números se corresponden con la IP del servidor. Los dos números restantes son el puerto que el server abre a la escucha para el canal de datos
El puerto esta indicado mediante dos numeros de 8 bits; traducido a número de 16 bits obtenemos el numero "real"
6 comentarios:
Muy buen post. Hace un tiempo escribí uno sobre FTP pasivo y activo también. Dejo el link, quizá pueda aportar algo con él:
http://www.netstorming.com.ar/soft/blog/2009/06/22/ftp-activo-vs-pasivo/
¡Buen trabajo!
Qué bien explicado, es la explicación más clara que he visto. Muy útil.
Muchas gracias por la explicación.
Una cosa, en la parte que dice "A modo de resumen..." dice las dos veces modo pasivo.
Saludos!
esta mal esto, los puertos no son los inferiores a 1024, sino los superiores.. Confunde demasiado eso.
Cierto, son los puerto > 1023 . Saludos
eres un gilipollas por que lo digo yo y punto. perro.
es broma buen post, aunque es inútil tu piensas... por que pones el titulo del modo pasivo en ingles y el del activo en castellano...
Publicar un comentario en la entrada