FTP : quelle est la différence entre le mode actif et passif ?

Février 2013

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 :

  1. 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 commande CWD permet de changer de dossier, PWD indique l'emplacement du dossier courant, MLSD et LIST listent le contenu du dossier courant...
  2. 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.

2 commentaires :
commentaire n°3357 par rv
rv mardi 2 août 2016, 16:02
je ne crois pas que ce soit une liste de ports dans la réponse à la commande PASV mais plutot l'ip du serveur ftp plus le port de com en cours pour les données: soit ici 249*256+35
commentaire n°6952 par Fan_d'Aoun_le_bg
Fan_d'Aoun_le_bg mardi 13 avril 2021, 09:13
Aoun ila vraiment plié le game du TCP/IP
facultatif
Facebook Twitter RSS Email
Forum Excel
Venez découvrir le nouveau forum excel question/réponse à la stackoverflow.com !
Forum Excel
hit parade n'en a rien a foutre du W3C Positionnement et Statistiques Gratuites Vincent Paré