5.2 Connexions (CONNECTIONS)
L'interpréteur de protocole du serveur doit « écouter » sur le port L pour les connexions de contrôle. L'utilisateur ou l'interpréteur de protocole utilisateur doit initier la connexion de contrôle full-duplex. Les interpréteurs de protocole serveur et utilisateur doivent suivre les conventions du protocole Telnet tel que spécifié dans le manuel des protocoles ARPA-Internet [1]. Les serveurs ne sont pas obligés de fournir l'édition de lignes de commande et peuvent exiger qu'elle soit effectuée dans l'hôte utilisateur. La connexion de contrôle doit être fermée par le serveur à la demande de l'utilisateur après que tous les transferts et réponses sont terminés.
Le user-DTP doit « écouter » sur le port de données spécifié ; cela devrait être fait AVANT d'envoyer la commande de demande de transfert. Le serveur doit initier la connexion de données depuis son propre port de données par défaut en utilisant le port de données utilisateur spécifié. La connexion de données doit être duplex afin que le serveur puisse envoyer des informations de contrôle pendant que les données sont envoyées depuis le user-DTP.
Il convient de noter que toutes les implémentations FTP doivent prendre en charge le transfert de données à l'aide du port par défaut, et que seul le USER-PI peut initier l'utilisation de ports non par défaut.
Lorsque des données doivent être transférées entre deux serveurs, le user-PI doit établir des connexions de contrôle vers les deux serveurs. L'utilisateur doit ensuite envoyer une commande de demande de transfert (RET, STOR ou LIST) avec un port de données de serveur FTP comme argument à un server-PI. Ensuite, une autre demande de transfert avec le port de données du serveur FTP comme argument doit être envoyée à l'autre server-PI. Les codes de réponse doivent déterminer quand le user-PI devrait dire à l'un des server-PI d'initier la connexion. Le user-PI envoie à un server-PI une commande PASV lui indiquant d'« écouter » sur la connexion de données plutôt que de l'initier lors de la réception d'une commande de transfert. L'utilisateur envoie ensuite la commande de transfert à l'autre server-PI. Les serveurs doivent alors se connecter et échanger des données.