7 | Application |
---|---|
6 | Présentation |
5 | Session |
4 | Transport |
3 | Réseau |
2 | Liaison de données |
1 | Physique |
Modèle OSI |
Le File Transfer Protocol (protocole de transfert de fichiers), ou FTP, est un protocole de communication dédié à l'échange informatique de fichiers sur un réseau TCP/IP. Il permet, depuis un ordinateur, de copier des fichiers depuis ou vers un autre ordinateur du réseau, d'administrer un site web, ou encore de supprimer ou modifier des fichiers sur cet ordinateur.
La variante sécurisée de FTP avec les protocoles SSL ou TLS s'appelle FTPS.
FTP obéit à un modèle client-serveur, c'est-à-dire qu'une des deux parties, le client, envoie des requêtes auxquelles réagit l'autre, appelé serveur. En pratique, le serveur est un ordinateur sur lequel fonctionne un logiciel lui-même appelé serveur FTP, qui rend publique une arborescence de fichiers similaire à un système de fichiers Unix. Pour accéder à un serveur FTP, on utilise un logiciel client FTP (possédant une interface graphique ou en ligne de commande).
Le protocole, qui appartient à la couche session du modèle OSI et à la couche application du modèle ARPA, utilise une connexion TCP. Il peut s'utiliser de deux façons différentes :
Deux ports sont standardisés (well known ports) pour les connexions FTP : le port 21 pour les commandes et le port 20 pour les données.
Ce protocole peut fonctionner avec IPv4 et IPv6.
Pour accéder à un serveur FTP, on utilise un client ftp, en ligne de commande ou avec une interface graphique.
Les utilisateurs de GNU-Linux ou d'un Unix peuvent consulter une documentation (la plupart du temps installée par défaut), en tapant " man ftp "
La plupart des navigateurs récents autorisent les connexions FTP en utilisant une URL de type :
Par sécurité, il est conseillé de ne pas préciser le mot de passe, le serveur le demandera. Cela évite de le laisser visible dans l'historique du navigateur, mais ne change rien au fait qu'il soit transmis en clair à travers le réseau.
La partie port_ftp est optionnelle. S'il est omis le port par défaut (21) sera utilisé.
Il existe de nombreux clients en ligne de commande, comme par exemple ftp, Wget, Curl en téléchargement ou Wput pour déposer des fichiers.
La plupart des logiciels possèdent désormais une interface graphique permettant de mettre en place un serveur FTP ou de se connecter à celui-ci pour y copier des données (client FTP). Certains logiciels tels que CuteFTP (Windows) sont payants ; d'autres, tels que FileZilla (Windows), Cyberduck (MacOSX) ou gftp (Linux), tout aussi pratiques et efficaces, sont gratuits et libres. On peut également citer FTP explorer (Shareware pour Windows), aussi pratique à utiliser que l'explorateur de fichiers, ou encore FireFtp, plugin de Firefox. Pour des utilisations plus poussées ( commandes spéciales etc ... ) un logiciel tels que FlashFXP ( payant ) est d'une aide précieuse.
Connexion Data en mode Actif :
Le protocole utilise deux types de connexions TCP :
Cette connexion utilise le protocole Telnet. Le client envoie une commande sous la forme d'une ligne de texte terminée par un retour à la ligne (CR suivi de LF, soit \r\n
, ou 0D0A en hexadécimal).
Par exemple, la commande suivante demande le téléchargement du fichier "fichier.txt" :
RETR fichier.txt
A la suite de l'envoi de la commande, le client reçoit une ou plusieurs réponses du serveur. Chaque réponse est précédée d'un code décimal permettant au client FTP de traiter la réponse qui peut comporter une ou plusieurs lignes de texte.
Pour l'exemple précédent, si le serveur trouve le fichier demandé, il envoie au client :
150 File status okay; about to open data connection.
Selon ce que le client et le serveur ont convenu, l'un des deux écoute sur le port TCP convenu, et l'autre s'y connecte pour établir la connexion de données. Puis le serveur envoie au client le contenu du fichier demandé, ferme la connexion de données, et envoie la réponse suivante sur la connexion de contrôle :
226 Closing data connection.
La connexion de données est établie pour la durée de transmission de données (contenu de fichiers, ou liste de fichiers). En général, elle est établie pour le transfert de données d'une seule commande, à moins qu'un autre mode de transmission soit sélectionné et supporté par le serveur.
La commande PASV
indique au serveur qu'il doit attendre passivement la connexion en écoutant un port TCP (en général, le port 20). Le port écouté par le serveur est indiqué dans la réponse :
227 Entering Passive Mode (h1,h2,h3,h4,p1,p2).
Où h1
à h4
sont 4 nombres entiers entre 0 et 255 représentant l'adresse IP du serveur, et p1
et p2
représentent le port TCP où le serveur attend la connexion, sous la forme de deux entiers entre 0 et 255 (port_TCP = p1 * 256 + p2
).
Dans le cas contraire où le client attend la connexion sur un port TCP, il indique sous la même forme le port écouté en envoyant la commande PORT
:
PORT h1,h2,h3,h4,p1,p2
Si tout se passe bien, le serveur répond :
200 Command okay.
Lors du transfert de fichier sur la connexion de données, 2 modes peuvent être utilisés:
La spécification du protocole FTP (RFC 959) précise qu'il est possible d'effectuer un transfert de fichiers directement entre deux serveurs FTP. Cette fonctionnalité est peu connue, car non disponible dans les logiciels de client FTP.
Pour cela, le client établit une connexion de contrôle par serveur. Au moment d'établir la connexion de données, le client demande à un serveur d'attendre la connexion (commande PASV
), et capture l'adresse IP et le port TCP écouté. Ces deux paramètres sont envoyés à l'autre serveur en utilisant la commande PORT
. A partir de là, la connexion de données est établie entre les deux serveurs.
Le client est informé de la fin du transfert en recevant une réponse positive de chaque serveur.
On appelle couramment ce protocole le FXP.