File Transfer Protocol (protocole de transfert de fichier), ou FTP, est un protocole de communication destinรฉ au partage de fichiers sur un rรฉseau TCP/IP. Il permet, depuis un ordinateur, de copier des fichiers vers un autre ordinateur du rรฉseau, ou encore de supprimer ou de modifier des fichiers sur cet ordinateur. Ce mรฉcanisme de copie est souvent utilisรฉ pour alimenter un site web hรฉbergรฉ chez un tiers.
| Fonction | Partage de fichiers |
|---|---|
| Sigle | FTP |
| Date de crรฉation | 16 avril 1971 |
| Port |
21 (รฉcoute) 20 (donnรฉes par dรฉfaut) |
| RFC | RFCย 3659[1] |
La variante de FTP protรฉgรฉe par les protocoles SSL ou TLS (SSL รฉtant le prรฉdรฉcesseur de 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). Il y a plusieurs dรฉcennies, les clients FTP nโรฉtaient que des applications dโinterface de ligne de commande (CLI). Ils disposent dรฉsormais de leurs propres interfaces faciles ร utiliser et intuitives pour simplifier et faciliter le transfert de fichiers, qui sont disponibles sous forme dโapplications autonomes, de clients web et de simples extensions de navigateur web.
FTP, qui appartient ร la couche application du modรจle OSI et du modรจle ARPA, utilise une connexion TCP.
Par convention, deux ports sont attribuรฉs (well known ports) pour les connexions FTPย : le port 21 pour les commandes et le port 20 pour les donnรฉes. Pour le FTPS dit implicite, les ports conventionnels sont le 990 pour les commandes et le 989 pour les donnรฉes.
Histoire
modifierFTP est issu de la RFCย 114[2] crรฉรฉe le 16 avril 1971. Cette spรฉcification fut remplacรฉe par la RFCย 765[3] en juin 1980. Elle fut elle-mรชme rendue obsolรจte par la RFCย 959[4] en octobre 1985, version finale de la spรฉcification.
Plusieurs RFC viennent complรฉter cette spรฉcification, comme la RFCย 2228[5] de juin 1997 pour l'ajout d'extensions de sรฉcuritรฉ ou la RFCย 2428[6] de septembre 1998 qui ajoute la prise en charge du protocole IPv6 et dรฉfinit un nouveau type de mode passif.
Interopรฉrabilitรฉ
modifierLe protocole FTP ne permet pas toujours d'assurer l'interopรฉrabilitรฉ entre plates-formes diffรฉrentes et rรฉgions diffรฉrentes par une gestion adรฉquate de l'encodage des noms de fichiers. Seuls les logiciels serveur et client respectant le standard RFCย 2640[7] en donnent la garantie[8], grรขce ร l'utilisation de l'encodage UTF-8 et accessoirement d'une nouvelle commande LANG permettant de choisir la langue des messages retournรฉs par le serveur lors de la session FTP. L'encodage UTF-8 permet d'encoder les noms des fichiers provenant de n'importe quel pays, bien qu'un encodage plus spรฉcifique puisse toujours รชtre utilisรฉ localement par le serveur, la conversion vers l'UTF-8 restant ร sa discrรฉtion.
Utilisation
modifierPour accรฉder ร un serveur FTP, on utilise un logiciel (client FTP). Ces logiciels existent avec ligne de commande ou avec une interface graphique. Le standard FTP est si rรฉpandu que ces logiciels sont ร prรฉsent inclus avec les derniรจres distributions Windows & Linux.
L'utilisation en ligne de commande, sous Windows comme sous Linux, se fait gรฉnรฉralement au moyen de la commande ftp adresse_du_serveur saisie dans une console. (ici, ftp est le nom du logiciel, et le paramรจtre le nom du serveur)
Dans les interfaces graphiques, comme les navigateurs Web, la forme usuelle est utilisรฉe, ร savoirย : ftp://adresse_du_serveur. Ici, ftp est le nom du protocole, suivi du nom du serveur.
Sous Windows (Vista et 7), un logiciel client FTP est installรฉ sur la machine, car inclus dans Windows. On peut y accรฉder ร travers le dossier Ordinateur puis la commande Ajouter un emplacement rรฉseau.
Le support de FTP est dรฉprรฉciรฉ sur Google Chrome depuis octobre 2020[9] et sur Mozilla Firefox depuis juillet 2021.
Implรฉmentations
modifierLogiciels clients de FTP
modifierLogiciels libres
modifier- GNU inetutilsย : paquet logiciel GNU contenant un client FTP en ligne de commande
- ftp (en ligne de commande sous Unix/Linux/Windows)
- cURL (en ligne de commande sous Linux/OS X/Windows)
- Cyberduck (pour Mac OS X et Windows)
- FileZilla (pour Linux, Mac OS X et Windows)
- FireFTP (extension pour Firefox)
- gFTP (pour GNOME)
- NcFTP (Windows et systรจmes de type UNIX)
- Secure FTPย (en) (pour Java SE)
- WinSCP
- Yafc
- Dolphin
Logiciels propriรฉtaires
modifier- CrossFTPย (en) (pour Java SE)
- CuteFTP (pour Mac OS X et Windows)
- Fetchย (en) (pour Mac OS X)
- FTP Rush (Windows 2000, Windows XP (32/64ย bits), Windows 2003 (32/64ย bits), Windows Vista (32/64ย bits), Windows 7(32/64ย bits)FTP Rush prend en charge les protocoles FTP, FXP, SFTP et TFTP. C'est un partagiciel.
- FTP Voyagerย (en) (pour Windows)
- Steedย (en) (pour Windows)
- Transmitย (en) (pour Mac OS X)
- WebDrive (Windows 7, Windows 10, Windows 2008, Windows 2012, Windows 2016, Mac OS X) WebDrive prend en charge les protocoles FTP, SFTP, WebDAV et S3.
- Yummy FTPย (en) (pour Mac OS X)
Logiciels serveurs de FTP
modifierLogiciels serveurs de FTP[10]ย :
Logiciels libres
modifier- FileZilla Server (Windows) et FileZilla Client (Windows)
- VsFTPd (Unix)
- ProFTPd (Unix)
- Pure-FTPd (Unix)
Logiciels propriรฉtaires
modifier- Titan FTP ServerTitan FTP Server prend en charge les protocoles FTP, SFTP et SSL
- AXWAY Gateway
Le protocole
modifierLe protocole utilise deux types de connexions TCPย :
- Une connexion de contrรดle initialisรฉe par le client, vers le serveur (port 21 en gรฉnรฉral), pour transmettre les commandes concernant les fichiers (suppression de fichiers, renommage, liste des fichiersโฆ).
- Une connexion de donnรฉes initialisรฉe par le client ou le serveur pour transfรฉrer les donnรฉes requises (contenu des fichiers, liste de fichiers).
รtablissement des connexions
modifierFTP peut s'utiliser de deux faรงons diffรฉrentes.
Mode actifย : ย
En mode actif, c'est le client FTP qui dรฉtermine le port de connexion ร utiliser pour permettre le transfert des donnรฉes. Ainsi, pour que l'รฉchange des donnรฉes puisse se faire, le serveur FTP initialisera la connexion de son port de donnรฉes (port 20) vers le port spรฉcifiรฉ par le client. Le client devra alors configurer son pare-feu pour autoriser les nouvelles connexions entrantes afin que l'รฉchange des donnรฉes se fasse. De plus, il peut s'avรฉrer problรฉmatique pour les utilisateurs essayant d'accรฉder ร des serveurs FTP lorsque ces utilisateurs sont derriรจre une passerelle NAT. รtant donnรฉ la faรงon dont fonctionne le NAT, le serveur FTP lance la connexion de donnรฉes en se connectant ร l'adresse externe de la passerelle NAT sur le port choisi. Certaines passerelles NAT n'ayant pas de correspondance pour le paquet reรงu dans la table d'รฉtat, le paquet sera ignorรฉ et ne sera pas dรฉlivrรฉ au client.
Mode passifย : ย
En mode passif, le serveur FTP dรฉtermine lui-mรชme le port de connexion ร utiliser pour permettre le transfert des donnรฉes (data connexion) et le communique au client. La plage de port est variable de 1024 ร 65535. En cas de prรฉsence d'un pare-feu devant le serveur, celui-ci devra รชtre configurรฉ pour autoriser la connexion de donnรฉes. L'avantage de ce mode est que le serveur FTP n'initialise aucune connexion. Ce mode fonctionne sans problรจme avec des clients derriรจre une passerelle NAT. Dans les nouvelles implรฉmentations, le client initialise et communique directement par le port 21 du serveurย ; cela permet de simplifier les configurations des pare-feu serveur.
La connexion de contrรดle
modifierCette connexion fonctionne en mode texte et est donc aisรฉe ร simuler avec 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,0D0A en hexadรฉcimal, ou le caractรจre 13 et le caractรจre 10).
Par exemple, la commande suivante demande le tรฉlรฉchargement du fichier ยซย fichier.txtย ยปย :
RETR fichier.txt
N.B.ย : Les commandes telles que GET ou PUT ne sont pas reconnues dans le protocole FTP, mais souvent utilisรฉes par les logiciels de client FTP.
ร 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 sont convenus, 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 contrรดle rรฉutilise le protocole de contrรดle du terminal NVT introduite au dรฉpart pour Telnet, sous une forme simplifiรฉe. Cela signifie en particulier que le code de code dรฉcimal 255 sert ร introduire des sรฉquences de contrรดle de l'affichage.
La connexion de donnรฉes
modifierLa 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.
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.
Mode de transfert
modifierLors du transfert de fichier sur la connexion de donnรฉes, deux modes peuvent รชtre utilisรฉsย :
- Le mode binaireย : le fichier est transmis tel quel.
- Le mode ASCIIย : uniquement destinรฉ aux fichiers texte. Le fichier est examinรฉ et des transformations apportรฉes pour conserver un format correct. Par exemple, la fin de ligne est reprรฉsentรฉe par le caractรจre <LF> sur un systรจme UNIX, et par la paire <CR><LF> sous Windows. Une machine Windows recevant un fichier texte par FTP rรฉcupรจre donc finalement un fichier avec des <CR><LF> en mode ASCII et des <LF> en mode binaire. Ce mode a donc ses avantages, mais peut รชtre source de corruption de fichiers (non texte) pendant le transfert si on utilise un client ancien / en ligne de commande, incapable de s'adapter au type de fichier. Il faut alors basculer en mode binaire (en utilisant gรฉnรฉralement la commande BIN) avant le transfert, afin de le conserver intact.
Transfert entre deux serveurs
modifierLa spรฉcification du protocole FTP prรฉcise qu'il est possible d'effectuer un transfert de fichiers directement entre deux serveurs FTP.
Notes et rรฉfรฉrences
modifier- โ (en) ยซย Extensions to FTPย ยป, Request for comments noย 3659, mars 2007
- โ (en) ยซย A FILE TRANSFER PROTOCOLย ยป, Request for comments noย 114, 16 avril 1971
- โ (en) ยซย FILE TRANSFER PROTOCOLย ยป, Request for comments noย 765, juin 1980
- โ (en) ยซย FILE TRANSFER PROTOCOL (FTP)ย ยป, Request for comments noย 959, octobre 1985
- โ (en) ยซย FTP Security Extensionsย ยป, Request for comments noย 2228, octobre 1997
- โ (en) ยซย FTP Extensions for IPv6 and NATsย ยป, Request for comments noย 2428, septembre 1998
- โ (en) ยซย Internationalization of the File Transfer Protocolย ยป, Request for comments noย 2640, juillet 1999
- โ http://www.linuxfromscratch.org/blfs/view/cvs/introduction/locale-issues.html#locale-wrong-filename-encoding Beyond Linuxยฎ From Scratch - Version 2012-08-12 - Chapter 2. Important Information - Going Beyond BLFS - Locale Related Issues.
- โ (en) ยซย Deprecations and removals in Chrome 87 | Webย ยป, sur Google Developers (consultรฉ le 14 dรฉcembre 2020)
- โ ยซย 4 Popular FTP Servers Reviewedย ยป, sur TechWench / All Things Tech, 21 mars 2019 (consultรฉ le 3 novembre 2021).
Voir aussi
modifierArticles connexes
modifier- Protocole rรฉseau passant difficilement les pare-feu
- Clients FTP
- Autres protocoles de transfert de fichiersย :
- Variable d'environnement pour la langue
Liens externes
modifier- Le protocole FTP
- (en) ยซย RFC1579ย : Firewall-Friendly FTPย ยป, fรฉvrier 1994
- (en) Exemple d'un serveur et d'un client FTP pour les รฉtudiants
- (en) Test de serveur FTP en ligne Authentification, connectivitรฉ, chiffrement et mode.








