FTP actif versus FTP passif
Date: 17/04/2008 | Catégories: Open-source,Reseau | Tags: ftp,port,tcp
Je me pose régulièrement la question de la différence entre les deux modes de transfert de fichiers FTP: actif ou passif. Voici donc un billet mémo à destination des petites têtes (dont je fais parti...).
Le mode FTP actif
C'est le mode par défaut des clients FTP. Le client établi dans un premier temps une session TCP sur le port 21 (FTP) du serveur ("control channel"). Une fois la session établie et l'authentification FTP acceptée, c'est le serveur qui établi une session TCP (avec le port source 20, FTP-DATA) vers un port dynamique du client ("data channel").
Le mode FTP passif
Il faut garder en mémoire que le mode passif est conseillé à partir du moment ou les clients peuvent se trouver derrière un Firewall/NAT. En effet dans ce mode, toutes les initialisions de sessions TCP se font à partir du client.
Comme pour le FTP actif, le client établi une première session TCP sur le port 21 (FTP) du serveur ("control channel"). Une fois la session établie et l'authentification FTP acceptée, on demande au serveur de se mettre en attente de session TCP grâce à la commande PASV. Alors le client peut établir une seconde session TCP sur un port dynamique vers le serveur ("data channel").
Le numéro de port dynamique est transmis du serveur vers le client suite à la commande PASV. On peut réduire la plage de port en configurant le serveur FTP. Par exemple, pour le serveur pro-ftpd:
# vi /usr/local/etc/proftpd.conf
...
PassivePortRange 30000 32000
...
Pour les fans, vous pouvez consulter la RFC du protocole FTP (en français).