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.

File Transfer Protocol

Informations
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.

Ce protocole peut fonctionner avec IPv4 et IPv6.

Histoire

modifier

FTP 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รฉ

modifier

Le 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

modifier

Pour 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

modifier

Logiciels clients de FTP

modifier

Logiciels libres

modifier

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

modifier

Logiciels serveurs de FTP[10]ย :

Logiciels libres

modifier

Logiciels propriรฉtaires

modifier
  • Titan FTP ServerTitan FTP Server prend en charge les protocoles FTP, SFTP et SSL
  • AXWAY Gateway

Le protocole

modifier

Le 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

modifier

FTP 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

modifier

Cette 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

modifier
ย 
Connexion de donnรฉes.

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. 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

modifier

Lors 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

modifier

La 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
  1. โ†‘ (en) ยซย Extensions to FTPย ยป, Request for comments noย 3659, mars 2007
  2. โ†‘ (en) ยซย A FILE TRANSFER PROTOCOLย ยป, Request for comments noย 114, 16 avril 1971
  3. โ†‘ (en) ยซย FILE TRANSFER PROTOCOLย ยป, Request for comments noย 765, juin 1980
  4. โ†‘ (en) ยซย FILE TRANSFER PROTOCOL (FTP)ย ยป, Request for comments noย 959, octobre 1985
  5. โ†‘ (en) ยซย FTP Security Extensionsย ยป, Request for comments noย 2228, octobre 1997
  6. โ†‘ (en) ยซย FTP Extensions for IPv6 and NATsย ยป, Request for comments noย 2428, septembre 1998
  7. โ†‘ (en) ยซย Internationalization of the File Transfer Protocolย ยป, Request for comments noย 2640, juillet 1999
  8. โ†‘ 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.
  9. โ†‘ (en) ยซย Deprecations and removals in Chrome 87 | Webย ยป, sur Google Developers (consultรฉ le 14 dรฉcembre 2020)
  10. โ†‘ ยซย 4 Popular FTP Servers Reviewedย ยป, sur TechWench / All Things Tech, 21 mars 2019 (consultรฉ le 3 novembre 2021).

Voir aussi

modifier

Articles connexes

modifier

Liens externes

modifier

๐Ÿ“š Artikel Terkait di Wikipedia

SSH File Transfer Protocol

Comment ajouter mes sourcesย ? SSH File Transfer Protocol Dans le contexte de Secure Shell (SSH), SSH File Transfer Protocol (SFTP) est un Internet Draft de

File Transfer Protocol Secure

File Transfer Protocol Secure Le File Transfer Protocol Secure, abrรฉgรฉ FTPS, est un protocole de communication destinรฉ ร  l'รฉchange informatique de fichiers

Trivial File Transfer Protocol

Trivial File Transfer Protocol TFTP (pour Trivial File Transfer Protocol ou protocole simplifiรฉ de transfert de fichiers) est un protocole simplifiรฉ de

Hypertext Transfer Protocol

crรฉer le World Wide Web. ร€ cette รฉpoque, le File Transfer Protocol (FTP) รฉtait dรฉjร  disponible pour transfรฉrer des fichiers, mais il ne supportait pas la

Liste de ports logiciels

Generator Protocolย ยป, IETF, mai 1983 (DOIย 10.17487/RFC0864, consultรฉ le 27 septembre 2016), p.ย 1. (en) J. Postel, ยซย File Transfer Protocol specificationย ยป

Suite des protocoles Internet

Wikimediaย : Modรจle TCP-IP, sur Wikiversity Rรฉseaux TCP/IP, sur Wikibooks File Transfer Protocol (en) RFC 1122 TCP/IP pour les experts Comparaison entre le modรจle

SFTP

SSH File Transfer Protocol, un protocole de transferts de fichiers sรฉcurisรฉs par SSH (protocole ยซย secure shellย ยป) Simple File Transfer Protocol, un protocole

WebDAV

File Transfer Protocol Secure (FTPS) est ajoutรฉe pour sรฉcuriser le protocole. SSH File Transfer Protocolย (SFTP), est une extension du protocole Secure