File Transfer Protocol : protocole de transfert de fichiers.

Besoin

Définir un protocole réseau standard pour l'échange de fichier entre machines distantes (sur Internet typiquement).

Conception

FTP est un protocole de l'Internet, basé sur TCP/IP :

Application
FTP
Transport
Réseau

En théorie, tous les transferts de données doivent être réalisés via une seule connexion : une ouverture active est faite par le serveur, depuis son port 20 vers un port sur la machine cliente. Le client effectue alors une ouverture passive.

Une commande FTP est chaîne Telnet terminée par une fin de ligne Telnet. Le mot-clé d'une commande lui-même est une chaîne de caractères, eventuellement suivi d'un espace et de paramètres.

Notes

  • En pratique, la plupart des clients FTP crée une nouvelle connexion pour chaque transfert. Pour éviter la prolifération d'état TCP TIMEWAIT, le client prend un nouveau numéro de port à chaque fois et envoie une commande PORT pour en avertir le serveur.
    Version Caractéristiques standard
    Release
    RFC
    Domaine Technologie Année
    Commandes Basiques ABR Oui ABORt : abandon.
    ACCT Oui ACCounT : compte.
    ALLO Oui ALLOcate : allocation.
    APPE Oui APPEnd : ajout.
    DELE Oui DELEte : suppression.
    HELP Oui Aide.
    LIST Oui Liste.
    NLST Oui Name LiST : liste de noms.
    NOOP Oui NO OPeration : pas d'opération/opération nulle.
    PASS Oui PASSword : mot de passe.
    PASV Oui PASsive
    PORT Oui PORT de données.
    MODE Oui Mode de transfert
    Extensions de sécurité (RFC 2228) ADAT Oui Authentication/security DATa : authentification/données de sécurité.
    AUTH Oui Authentication/security mechanism : authentification/méchanisme de sécurité.
    CCC Oui Clear Command Channel
    CONF Oui CONFidentiality protected command : commande protégée par confidentialité.
    ENC Oui ENCoded command : commande à confidentialité garantie.
    PBSZ Oui Protection Buffer SiZe : taille du tampon de protection.
    PROT Oui Niveau de PROTection du canal de données.
    QUIT Oui QUITTer.
    REIN Oui REINitialisation.
    REST Oui RESTart : redémarrage.
    RETR Oui RETRieve : récupération.
    RNFR Oui ReName FRom : renommer depuis.
    RNTO Oui ReName TO : renommer vers.
    SITE Oui paramètres du SITE.
    STAT Oui Statut.
    STOR Oui STORe : stockage.
    STRU Oui STRUcture des fichiers.
    TYPE Oui TYPE de représentation
    USER Oui Utilisateur.
    MIC Oui Commande à intégrité garantie.
    Commande CWD de FTP (RFC 697) CWD Oui Change Working Directory : changement de répertoire de travail.
    FTP (RFC 959) MKD Oui MaKe Directory : création de répertoire.
    PWD Oui Print Working Directory : Affichage du répertoire de travail.
    RMD Oui ReMove Directory : suppression répertoire.
    SMNT Oui Structure MouNT
    STOU Oui STOre Unique.
    SYST Oui SYSTème.
    CDUP Oui Change Directory UP : changement vers le répertoire parent.
    Extensions pour IPv6 et NATs (RFC 2428) EPRT Oui Extended PoRT : port de données étendu.
    EPSV Oui Extensded PaSsiVe
    Négociation de fonctionnalités FTP (RFC 2389) FEAT Oui FEATure : fonctionnalité.
    OPTS Oui Options
    I18N (RFC 2640) LANG Oui LANGuage negotiation : négociation de la langue.
    FOOBAR (RFC 1639) LPRT Oui Long data PoRT : port de données long
    LPSV Oui Long PaSsiVe
  • Les serveurs FTP sont également appelés serveurs de fichiers
  • Des clients FTP possibles sont les navigateurs Web

Exemples

Des exemples de clients FTP sont :

Des exemples de serveurs FTP sont :

Un exemple de session FTP est :

220 SuperFTPD 1.2.6 Server (Serveur de mise a jour des pages de Javarome.net)
USER javarome
331 Password required for javarome.
PASS superpassword
230-User javarome logged in.
230 Quotas on: using 30998725.00 of 104857600.00 bytes
SYST
215 UNIX Type: L8
PWD
257 "/" is current directory.
TYPE A
200 Type set to A.
PORT 195,132,179,223,4,146
200 PORT command successful
LIST
150 Opening ASCII mode data connection for file list
drwxr-sr-t 9 web site 4096 Oct 25 21:39 .
drwxr-sr-t 9 web site 4096 Oct 25 21:39 ..
-rw-r--r-- 1 web site 3477 Sep 13 00:20 BD.html
drwxr-xr-x 3 web site 4096 Sep 13 21:06 Dessin
-rw-r--r-- 1 web site 7850 Sep 13 00:20 Fantastique.html
drwxr-xr-x 4 web site 4096 Sep 13 19:52 Fantomes
-rw-r--r-- 1 web site 3992 Sep 13 00:20 Photos.html
-rw-r--r-- 1 web site 792064 Sep 13 23:22 setiathome_win_3_07.exe
226-Transfer complete.
226 Quotas on: using 30998725.00 of 104857600.00 bytes
QUIT
221 Goodbye.

Limitations

  • Non sécurisé (les logins et mots de passe circulent en clair sur le réseau). Ce problème est pallié par SSH.

Voir

  • RFC 959