File Transfer Protocol
Norme utilisée par Up ! File Transfer Service
La norme File Transfer Protocol (FTP) décrit comment envoyer un fichier d'un client vers un serveur ou recevoir un fichier depuis un serveur vers un client.
La communication au format File Transfer Protocol (FTP) s'effectue sur deux flux dont le transport est TCP-IP :
- Flux de contrôle.
Flux texte en Ascii où le client poste des requêtes. Le port d'écoute du serveur est usuellement 21.
- Flux de données.
Flux texte ou binaire où le client et le serveur s'échangent le contenu des fichiers mentionnés dans les commandes. Le port usuellement 20, sauf si un proxy est utilisé.
La communication sur le flux de contrôle est à l'initiative du client : il pose une requête et le serveur répond. Une requête est une ligne de texte comportant une des commandes suivantes :
- ABOR - Abort.
Abandon du transfert en cours. Le client doit être connecté.
- ACCT - Account.
Déclaration du compte de connexion en plus de l'identifiant de l'utilisateur, si cela est nécessaire. Le paramètre est le compte. Cette commande doit être précédée de la commande USER.
- ALLO - Allocate.
Réservation de la place sur le serveur avant le transfert. Le paramètre est la taille en octets. Cette commande est utile pour certaines plates-formes. Le client doit être connecté.
- APPE - Append.
Transfert d'un fichier du client vers le serveur via le flux de données. Le paramètre est le nom du fichier. Le contenu est ajouté à la suite du fichier cible. Le client doit être connecté.
- CWD - Current Working Directory.
Lecture du répertoire courant. Le paramètre est le nom du répertoire. Le client doit être connecté.
- CDUP - Change Directory Up.
Changement de répertoire courant. Le client doit être connecté.
- DELE - Delete.
Suppression d'un fichier sur le serveur. Le paramètre est le nom du fichier. Le client doit être connecté.
- HELP - Help.
Ecriture de l'usage des commandes ou d'une commande particulière ne correspondant pas à une extension de la norme. Le paramètre optionnel est le nom de la commande. Le client doit être connecté.
- LIST - List.
Listage du contenu d'un répertoire ou du répertoire courant. Le paramètre optionnel est le nom du répertoire. Le détail des fichiers est fourni. Le client doit être connecté.
- MKD - Make Directory.
Création d'un répertoire sur le serveur. Le paramètre est le nom du répertoire. Le client doit être connecté.
- MODE - Mode.
Déclaration du mode de transfert. Le paramètre est le code du mode de transfert. Le client doit être connecté.
- NLST - Name List.
Listage du contenu du répertoire courant. Seul le nom des fichiers est fourni. Le client doit être connecté.
- NOOP - No Operation.
Ne fait rien. Dans les faits, teste l'état du flux de contrôle. Le client doit être connecté.
- PASS - Password.
Déclaration du mot de passe de connexion. Le paramètre est le mot de passe. Elle doit être précédée de la commande USER.
- PASV - Passive.
Le client devient serveur et le serveur devient client pour le flux de données le temps du prochain transfert. Le client doit être connecté.
- PWD - Print Working Directory.
Affichage du répertoire courant. Le client doit être connecté.
- PORT - Port.
Définition du proxy du flux de données. Les paramètres sont les quatre octets de l'adresse Ip puis le port sur deux octets, tous séparés par des caractères virgule , . Le client doit être connecté.
- QUIT - Quit.
Le client se déconnecte. Le client doit être connecté.
- RENF - Rename From.
Renomme un fichier. Le paramètre est le nom du fichier de départ. Elle doit être suivie de la commande RNTO. Le client doit être connecté.
- RETO - Rename To.
Renomme un fichier. Le paramètre est le nom du fichier d'arrivée. Elle doit être précédée de la commande RNFR. Le client doit être connecté.
- REST - Restore.
Reprend un transfert de fichier. Le paramètre est le point de reprise. Le client doit être connecté.
- RETR - Retrieve.
Transfert d'un fichier du serveur vers le client via le flux de données. Le paramètre est le nom du fichier. Le client doit être connecté.
- RMD - Remove Directory.
Suppression d'un répertoire sur le serveur. Le paramètre est le nom du répertoire. Il doit être vide. Le client doit être connecté.
- REIN - Reinitialize.
Reinitialisation de la connexion aux paramètres par défaut. Le client doit être connecté.
- SITE - Site.
Listage des commandes spéciales supportées par le serveur. Le paramètre optionnel est le nom de la commande. Le client doit être connecté.
- SITE CHMOD - Site Change Mode.
Changement des droits d'accès d'un fichier ou d'un répertoire. Le client doit être connecté.
- SMNT - Structure Mount.
Montage d'une partition du système de fichiers. Le client doit être connecté.
- STAT - Statistics.
Ecriture des statistiques d'usage du serveur. Le paramètre optionnel est le thème. Le client doit être connecté.
- STOR - Store.
Transfert d'un fichier du client vers le serveur via le flux de données. Le paramètre est le nom du fichier. Le contenu remplace le fichier cible. Le client doit être connecté.
- STOU - Store Unique.
Transfert d'un fichier du client vers le serveur via le flux de données. Le paramètre est le nom du fichier. Le fichier cible ne doit pas exister. Le client doit être connecté.
- STRU - Structure.
Déclaration de la structure du flux de données. Le paramètre est le code de la structure. Le client doit être connecté.
- SYST - System.
Ecriture du mot-clé identifiant le système d'exploitation du serveur. Le client doit être connecté.
- TYPE - Type.
Déclaration du type de transfert. Le paramètre est le code du type. Le client doit être connecté.
- USER - User.
Déclaration de l'utilisateur de connexion. Le paramètre est le nom de l'utilisateur. Elle doit être suivie de la commande PASS.
La ligne de la requête est terminée par les caractères saut de ligne \r et retour chariot \n.
La réponse à la requête est une ou plusieurs lignes de texte comportant :
- Le code retour.
Un code retour 1xx, 2xx ou 3xx traduit un bon fonctionnement. Un code retour 4xx ou 5xx traduit une erreur de fonctionnement.
- Le séparateur.
Le séparateur espace signifie que la ligne est la dernière de la réponse. Un autre séparateur signifie que la ligne n'est pas la dernière de la réponse.
- Le texte libre.
Il s'agit du message correspond au code ou d'un message formaté ou, selon la commande :
- CWD - Current Working Directory.
Répertoire avec son chemin d'accès entre deux caractères guillemets " .
- CDUP - Change Directory Up.
Répertoire avec son chemin d'accès entre deux caractères guillemets " .
- HELP - Help.
Usage des commandes.
- LIST - List.
Droits d'accès, taille, date de dernier accès et nom du fichier listé. Le format n'est pas normalisé !
- MKD - Make Directory.
Répertoire avec son chemin d'accès entre deux caractères guillemets " .
- NLST - Name List.
Nom du fichier listé.
- PWD - Print Working Directory.
Répertoire avec son chemin d'accès entre deux caractères guillemets " .
- SITE - Site.
Usage des commandes spéciales.
- STAT - Statistics.
Statistiques d'usage du serveur.
- SYST - System.
Mot-clé identifiant le système d'exploitation. Par exemple UNIX.
Les lignes de la réponse sont terminées par les caractères retour chariot \r et retour chariot \n.
Codifications utilisées par Up ! File Transfer Service
Commande MODE
Code | Sémantique |
S | Mode flux. |
B | Mode bloc. |
C | Mode compressé. |
Commande STRU
Code | Sémantique |
F | Structure flux. |
P | Structure page - obsolète. |
R | Structure enregistrement. |
Commande TYPE
Code | Sémantique |
A | Type texte en Ascii. |
A N | Type Ascii sans impression. |
A T | Type Ascii pour Telnet. |
A C | Type Ascii pour Fortran. |
E | Type texte en Ebcdic. |
E N | Type Ebcdic sans impression. |
E T | Type Ebcdic pour Telnet. |
E C | Type Ebcdic pour Fortran. |
I | Type binaire. |
L 8 | Type texte dans la page de code locale. |
Messages de File Transfer Protocol
Voici les messages déclarés dans la norme :
110 Restart marker reply.
120 Service ready in nnn minutes.
125 Data connection already open; transfer starting.
150 File status okay; about to open data connection.
200 Command okay.
202 Command not implemented, superfluous at this site.
211 System status, or system help reply.
212 Directory status.
213 File status.
214 Help message.
215 ${NAME} system type.
220 Service ready for new user.
221 Service closing control connection.
225 Data connection open; no transfer in progress.
226 Closing data connection.
227 Entering Passive Mode (h1,h2,h3,h4,p1,p2).
230 User logged in, proceed.
250 Requested file action okay, completed.
257 "${PATHNAME}" created.
331 User name okay, need password.
332 Need account for login.
350 Requested file action pending further information.
421 Service not available, closing control connection.
425 Can't open data connection.
426 Connection closed; transfer aborted.
450 Requested file action not taken.
451 Requested action aborted. Local error in processing.
452 Requested action not taken.
500 Syntax error, command unrecognized.
501 Syntax error in parameters or arguments.
502 Command not implemented.
503 Bad sequence of commands.
504 Command not implemented for that parameter.
530 Not logged in.
532 Need account for storing files.
550 Requested action not taken.
551 Requested action aborted. Page type unknown.
552 Requested file action aborted.
553 Requested action not taken.
Syntaxe d'une conversation au format File Transfer Protocol
Commandes :
Commande :
ABOR
\r\n
| ACCT
CompteConnexion \r\n
| ALLO
Taille SuiteTaille \r\n
| APPEN
NomDuFichier \r\n
| CDUP
\r\n
| CWD
NomRepertoire \r\n
| DELE
NomDuFichier \r\n
| HELP
SuiteAide \r\n
| LIST
SuiteListe \r\n
| MKD
NomDuRepertoire \r\n
| MODE
Mode \r\n
| NLST
SuiteListe \r\n
| NOOP
\r\n
| PASS
MotDePasse \r\n
| PASV
\r\n
| PORT
Ip1,Ip2,Ip3,Ip4,Port1,Port2 \r\n
| PWD
\r\n
| QUIT
\r\n
| REIN
\r\n
| REFR
NomDuFichierDepart \r\n
| REST
PointDeRestauration \r\n
| RETO
NomDuFichierArrivee \r\n
| RETR
NomDuFichier \r\n
| RMD
NomDuRepertoire \r\n
| SITE
SuiteSite \r\n
| STAT
SuiteStatistiques \r\n
| STMT
PointDeMontage \r\n
| STOR
NomDuFichier \r\n
| STOU
NomDuFichier \r\n
| STRU
Structure \r\n
| SYST
\r\n
| TYPE
Type \r\n
| USER
NomUtilisateur \r\n
;
SuiteTaille :
SuiteAide :
SuiteListe :
SuiteSite :
SuiteStatistiques :
Exemple d'une conversation au format File Transfer Protocol
Cette conversation ne concerne que le flux de contrôle :
USER scott\r\n
PASS tiger\r\n
SITE\r\n
PORT 192,15,8,8,16,120,0\r\n
CWD "/pub"\r\n
NLST "essai.*"\r\n
LIST "essai.doc"\r\n
LIST "essai.txt"\r\n
REFR essai.txt\r\n
RETO essai2.txt\r\n
STOR essai.txt\r\n
RETR essai.doc\r\n
QUIT\r\n