FTP : quelle est la différence entre le mode actif et passif ?
Quand on utilise un client FTP comme Filezilla pour se connecter à un serveur FTP, on a le choix entre 2 modes différents : Actif et Passif.
Avant d'expliquer la différence entre ces modes, il faut que savoir comment fonctionne le protocole FTP.
Tout comme HTTP, FTP est un protocole de la couche application qui utilise des connexions TCP pour faire communiquer un client et un serveur.
Là où HTTP ne nécessite qu'une seule connexion TCP, ouverte par le client lors de l'envoi de la requête HTTP, FTP en utilise deux :
- Control Channel
C'est la première connexion TCP qui est ouverte, toujours par le client. Cette connexion est utilisée pour communiquer avec le serveur, sur un principe de commande / réponse.
La commandeCWD
permet de changer de dossier,PWD
indique l'emplacement du dossier courant,MLSD
etLIST
listent le contenu du dossier courant...
- Data Channel
Le Control Channel est très utile mais il permet juste au client et au serveur de dialoguer, pas de transférer les données. C'est à ça que sert le Data Channel, ou devrais-je dire les Data channel.
À chaque fois que qu'on upload ou download un fichier, une nouvelle connexion TCP est créée (matérialisée par un thread), et va être utilisée pour le transfert des octets.
Vous allez peut-être vous demander pourquoi ne pas utiliser le Control Channel pour transférer les données. La réponse est simple, si le control channel était utilisé pour le transfert des données, on ne pourrait plus communiquer avec le serveur durant le transfert. Or ça n'est pas le cas, même si un ou plusieurs téléchargements sont en cours, on peut toujours se balader dans l'arborescence du serveur.
La différence entre mode passif et mode actif
Venons-en au fait. La différence entre modes passif et actif concerne uniquement la gestion du Data Channel.
En mode Actif, c'est le serveur qui ouvre la connexion TCP pour établir Data Channel, après avoir recu la demande de transfert envoyée par le client par le Control Channel. Du coup, dans le Data Channel, le client devient en fait le serveur (celui qui attends une connexion TCP), et le serveur... le client (celui qui initialise la connexion TCP), et cela implique qu'il y ait une redirection de port côté client, sinon l'ouverture de la connexion est impossible (elle peut d'ailleurs être bloquée par un firewall).
La page du jour est validation de la valeur d'une cellule excel, bonne lecture.
C'est pour ça qu'on a inventé le mode Passif.
Dans ce mode, la connexion TCP du Data channel est créée par le client, tout comme le Control Channel. Dans ce sens il n'y a aucun problème de redirection de port.
La commande FTP PASV
Le mode passif fonctionne grâce à la commande FTP PASV
(qui est envoyée par le client sur le Control Channel). À cette commande, le serveur va répondre une liste de ports vers lesquels le client pourra ouvrir une connexion TCP pour un data channel, exemple :
Command: PASV Response: 227 Entering Passive Mode (213,186,33,201,249,35)
Voilà, vous savez tout sur les modes FTP.
Allez donc jeter un oeil sur cette page : look hancock.