Toutes les communications effectuées sur le canal de contrôle suivent les
recommandations du protocole Telnet. Ainsi les commandes FTP sont des chaînes de caractères
Telnet (en code NVT-ASCII) terminées par le code de fin de ligne Telnet (c'est-à-dire la séquence
<CR>+<LF>, Carriage Return (retour chariot) suivi du caractère Line Feed, notée <CRLF>).
Si la commande FTP admet un paramètre, celui-ci est séparé de la commande par un espace (<SP>).
Commande de contrôle d'accès |
Commande |
Description |
USER |
Chaîne de caractère permettant d'identifier l'utilisateur. L'identification de l'utilisateur est nécessaire pour établir une communication sur le canal de données |
PASS |
Chaîne de caractère spécifiant le mot de passe de l'utilisateur. Cette commande doit être immédiatement précédée de la commande USER. Il revient au client
de masquer l'affichage de cette commande pour des raisons de sécurité |
ACCT |
Chaîne de caractère représentant le compte (account) de l'utilisateur. Cette commande n'est généralement pas nécessaire. Lors de la réponse à l'acceptation du mot de passe, si la réponse est 230 cette phase n'est pas nécessaire, si la réponse est
332, elle l'est |
CWD |
Change Working Directory : cette commande permet de changer le répertoire courant. Cette commande nécessite le chemin d'accès au répertoire à
atteindre comme argument |
CDUP |
Change to Parent Directory : cette commande permet de remonter au répertoire parent. Elle a été introduite pour remédier aux problèmes de nommage de répertoire parent selon les système (généralement "..") |
SMNT |
Structure Mount : |
REIN |
Reinitialize : |
QUIT |
Commande permettant de terminer la session en cours. Le serveur attend de finir le transfert en cours le cas échéant, puis de fournir une réponse avant de fermer la connexion |
Commande de paramètres de transfert |
Commande |
Description |
PORT |
Chaîne de caractère permettant de préciser le numéro de port à utiliser |
PASV |
Commande permettant d'indiquer au serveur DTP de se mettre en attente une connexion sur un port spécifique choisi aléatoirement parmi
les ports disponibles. La réponse à cette commande est l'adresse IP de la machine et le port. |
TYPE |
Cette commande permet de préciser le type de format dans lequel les données seront envoyées |
STRU |
Caractère Telnet précisant la structure du fichier (F pour File, R pour Record, P pour Page) |
MODE |
Caractère Telnet précisant le mode de transfert des données (S pour Stream, B pour Block, C pour Compressed) |
Commande de paramètres de transfert |
Commande |
Description |
RETR |
Cette commande (RETRIEVE) demande au serveur DTP une copie du fichier dont le chemin d'accès est passé en paramètre. |
STOR |
Cette commande (store) demande au serveur DTP d'accepter les données envoyées sur le canal de données et de les stocker dans le fichier portant le nom
passé en paramètre. Si le fichier n'existe pas, le serveur le crée, sinon il l'écrase |
STOU |
Cette commande est identique à la précédente, si ce n'est qu'elle demande au serveur de créer un fichier dont le nom est unique. Le nom
du fichier est retourné dans la réponse |
APPE |
Grâce à cette commande (append) les données envoyées sont concaténées dans le fichier portant le nom passé en paramètre s'il existe déjà,
dans le cas contraire il est créé |
ALLO |
Cette commande (allocate) demande au serveur de prévoir un espace de stockage suffisant pour contenir le fichier dont le nom est passé en argument. |
REST |
Cette commande (restart) permet de reprendre un transfert là où il s'était arrété.
Pour cela cette commande envoie en paramètre le marqueur représentant la position dans le fichier à laquelle le transfert
avait été interrompu. Cette commande doit être immédiatement suivi d'une commande de transfert. |
RNFR |
Cette commande (rename from) permet de renommer un fichier. Elle indique en paramètre le nom du fichier à renommer et doit être immédiatement suivie de la commande RNTO |
RNTO |
Cette commande (rename to) permet de renommer un fichier. Elle indique en paramètre le nom du fichier à renommer et doit être immédiatement précédée de la commande RNFR |
ABOR |
Cette commande (abort) indique au serveur DTP d'abandonner tous les transferts associés à la commande précédente. Si aucune connexion de données n'est ouverte, le serveur DTP ne fait rien, sinon il la ferme. Le canal de contrôle reste par contre ouvert. |
DELE |
Cette commande (delete) permet de supprimer le fichier dont le nom est passé en paramètre. Cette commande est irrémédiable, seule une confirmation au niveau du client peut être faite. |
RMD |
Cette commande (remove directory) permet de supprimer un répertoire. Elle indique en paramètre le nom du répertoire à supprimer |
MKD |
Cette commande (make directory) permet de créer un répertoire. Elle indique en paramètre le nom du répertoire à créer |
PWD |
Cette commande (print working directory) permet de renvoyer le chemin complet du répertoire courant |
LIST |
Cette commande permet de renvoyer la liste des fichiers et répertoires présents dans le répertoire courant. Cette liste est envoyée sur le DTP passif. Il est possible de passer en paramètre de cette commande un nom de répertoire, le serveur DTP enverra la liste des fichiers dans le répertoire passé en paramètre |
NLST |
Cette commande (name liste) permet d'envoyer la liste des fichiers et répertoires dans le répertoire courant |
SITE |
Cette commande (site parameters) permet au serveur de proposer des services spécifiques, non définis dans le protocole FTP |
SYST |
Cette commande (system) permet d'envoyer des informations sur le serveur distant |
STAT |
Cette commande (status) permet d'émettre l'état du serveur, par exemple pour connaître la progression d'un transfert en cours. Cette commande accepte en argument un chemin d'accès, elle retourne alors les mêmes informations que LIST mais sur le canal de contrôle |
HELP |
Cette commande permet de connaître l'ensemble des commandes comprises par le serveur. Les informations sont retournées sur le canal de contrôle |
NOOP |
Cette commande (no operations) sert uniquement à obtenir une commande OK du serveur. Elle peut servir uniquement pour ne pas être déconnecté après
un temps d'inactivité trop élevé |