FTP : File Transfert Protocol

Le protocole FTP est sans nul doute le protocole applicatif le plus complexe en informatique en plus d’être celui qui est malheureusement le moins utilisé au maximum de ses performances.

Pourtant, il s’agit bien du protocole le plus sûr lorsqu’il s’agit de téléchargement de fichiers même si l’opération peut être réalisée entièrement à l’aide du protocole HTTP.

Le File Transfer Protocol (protocole de transfert de fichiers), ou FTP, est un protocole de communication dédié à l’échange de fichiers sur un réseau. 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.

Un protocole applicatif pour le transfert de fichiers sur Internet

Le recours à ce protocole est nécessaire pour transférer son site Web d’une machine locale au Web mondial. Tout site internet est de ce fait toujours hébergé dans « un espace de stockage » qui est justement un serveur FTP qui contiendra tous les fichiers nécessaires pour faire fonctionner votre site sur le Web.

principe de fonctionnement ftp

Le FTP (File Transfert Protocol) est donc un protocole de transfert de fichiers à travers le réseau, il permet de charger les fichiers et pages de votre site internet ou à l’inverse de télécharger vos fichiers. Cette distinction « charger/télécharger » peut se traduire simplement en anglais pas « upload/download », termes que l’on retrouvera plus souvent.

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.

Le serveur est une machine analogue à votre ordinateur sur laquelle travaille un logiciel qui porte le même nom, aussi appelé serveur FTP, qui rend publique une arborescence de fichiers similaire à un système de fichiers Unix.

Pour rappel, FileZilla Server est un logiciel servant justement à cela.

Pour accéder à un serveur FTP, on utilise un logiciel client FTP (possédant une interface graphique ou s’utilisant en ligne de commande). FileZilla propose justement 2 versions : FileZilla Client et FileZilla Server pour gérer son propre serveur FTP via ce dernier et faire ce que l’on veut à distance grâce au Client FTP.

À quoi sert un le protocole FTP ?

Parmi les utilisations les plus fréquentes du protocole FTP à l’aide d’un client FTP comme FileZilla sont :

• Le téléchargement de fichiers depuis un serveur FTP vers le client FTP (c’est du « download »)
• Le téléchargement de fichiers depuis un client FTP vers le serveur FTP (c’est de « l’upload ») et permettra par exemple la mise à jour de son blog ou site internet personnel

A une certaine époque le protocole pouvait même servir à envoyer un document à imprimer sur une imprimante distante, exactement comme si l’imprimante jouait le rôle du serveur.

Pour ceux qui administrent plusieurs sites internet, une autre utilisation intéressante du protocole FTP est d’effectuer des transferts de fichiers entre deux serveurs distants puisque FileZilla est un client FTP capable de faire cela.

Pourtant, contrairement à ce qu’il peut paraître, FTP est un protocole très complexe capable de bien d’autres choses encore mais pourtant il reste cantonné à surtout effectuer des téléchargements depuis un lien d’une page internet. D’ailleurs, les clients FTP fournis avec les navigateurs sont souvent minimalistes et n’exploitent qu’une infime partie des possibilités qu’offre le protocole FTP.

Quelle différence entre NFS/FTP ?

FTP est pour rappel l’abréviation de File Transfer Protocol et est le protocole utilisé sur l’Internet pour échanger des dossiers et fichiers via des serveurs (et non en Peer-to-Peer qui possède son propre protocole s’affranchissant au maximum des serveurs).

Le FTP fonctionne comme le HTTP pour les pages Web de transfert d’un serveur au navigateur d’un utilisateur et le SMTP pour le courrier électronique de transfert à travers l’Internet.

Pour cela, comme ces technologies, FTP utilise les protocoles du TCP/IP de l’Internet dirons-nous plus « classique ».

Le FTP est le plus utilisé généralement pour télécharger un dossier d’un serveur utilisant l’Internet ou pour envoyer un dossier à un serveur.

NFS, l’abréviation de Network File System, est un client/application serveur conçu par Sun Microsystems qui permet à tous les utilisateurs de réseau d’accéder à des fichiers centraux communs stockés sur des ordinateurs de différents types, par une interface appelée système de fichiers virtuel (VFS) qui fonctionne sur TCP/IP.

Les utilisateurs peuvent ainsi accéder aux fichiers centraux communs comme si ces derniers étaient stockés localement sur leurs propres disques durs.

Avec le NFS des ordinateurs reliés à un réseau fonctionnent comme clients en accédant aux dossiers à distance, et comme serveurs en permettant aux utilisateurs distants d’accéder aux fichiers centraux communs en local.

Les normes de NFS sont publiquement disponibles et employées couramment.

Mais encore ?

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 fonctionnant lui aussi avec le protocole TCP/IP.

Il permet, depuis un ordinateur, de copier des fichiers depuis ou vers un autre ordinateur du réseau et/ou d’administrer un site web.

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 (comme le fait FileZilla Server).

C’est le fonctionnement même du protocole FTP :

Le « Client » envoi des requêtes au « Server » qui lui accordera alors une connexion afin de pouvoir agir sur les fichiers (comme si il s’agissait d’un espace de stockage de type disque dur). C’est aussi simple que cela.

Pour accéder à un serveur FTP, on utilise donc un logiciel client FTP (possédant une interface graphique ou en ligne de commande) comme FileZilla qui est l’un des plus connus au monde.

Pour aller plus loin dans la compréhension du protocole FTP, il faut savoir qu’il appartient à la couche session du modèle OSI et à la couche application du modèle ARPA, qui utilisent une connexion TCP.

Qu’est-ce que le mode actif et Mode passif en FTP ?

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 initiera la connexion à l’aide du port 21 pour les commandes puis de son port de données (port 20) vers le port spécifié par le client FTP.

 

 

Le client devra alors configurer son pare-feu pour autoriser les nouvelles connexions entrantes afin que l’échange des données se fasse. Ce mode est donc moins sécurisé que le FTP passif pour le client.

De plus il peut s’avérer problématique pour les utilisateurs essayant d’accéder à des serveurs FTP lorsqu’ils sont derrière une passerelle NAT.

Vu la façon dont fonctionne la NAT, le serveur FTP initie la connexion de données en se connectant à l’adresse externe de la passerelle NAT sur le port choisi.

La passerelle NAT n’ayant pas de correspondance pour le paquet reçu dans sa table d’état le paquet sera ignoré et ne sera pas délivré au client.

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.

Dans le cas de l’existence d’un pare-feu devant le serveur FTP celui-ci devra être configuré pour autoriser la connexion de données.

L’avantage de ce mode est que le serveur FTP n’initie aucune connexion.

Dans le cas des clients FTP sur un réseau local, ce mode est beaucoup plus sécurisé que le FTP en mode actif, car le pare-feu ne devra laisser passer que les flux sortant vers internet pour permettre aux clients d’échanger des données avec le serveur.

ftp actif passif

Cela fonctionne donc sans problème avec une passerelle NAT.

Deux ports sont standardisés pour les connexions FTP : le port 21 pour les commandes et le port 20 pour les données.

Le protocole utilise deux types de connexions TCP :

• Une connexion de contrôle initialisée par le client FTP vers le serveur FTP via le port 21 en général afin de transmettre les commandes concernant les fichiers (suppression de fichiers, liste des fichiers…).
• Une connexion de données initialisée par le client FTP ou le serveur FTP pour transférer les données requises (contenu des fichiers, liste de fichiers).

La connexion de contrôle

Voici une connexion qui fonctionne en mode texte et peut donc être utilisé via Telnet. Le client FTP envoie une commande sous la forme d’une ligne de texte qui est terminée par CR suivi de LF, soit \r\n ou encore les caractères 13 et 10.

A la suite de l’envoi de la commande, le client FTP reçoit une ou plusieurs réponses du serveur. Chaque réponse permettant au client FTP de traiter une réponse est précédée d’un code hexadécimal alors que la requête peut comporter une ou plusieurs lignes de texte.

Selon ce que le FTP client et le FTP serveur auront convenu, le premier écoute sur le port TCP décidé à l’avance pendant que l’autre s’y connecte quand nécessaire pour établir une connexion et pouvoir envoyer/recevoir des données.

Ensuite le serveur FTP envoie au client FTP le contenu du fichier ou dossier demandé, termine la connexion d’envois de données et renvoie une réponse au client comme quoi tout est bon en attendant la connexion de contrôle suivante.

La connexion de données

La commande PASV indique au serveur FTP de rester en attente, passivement, mais de rester également à l’écoute du port TCP. Le port écouté par le serveur FTP sera celui qui sera indiquée en réponse.

La connexion de données est possible pour la durée de transmission de données (des fichiers ou listes de fichiers…) et en général elle est établie pour le transfert d’une seule commande.

Dans le cas où le client FTP attend la connexion sur un port TCP, il indiquera alors sous la même forme que décrite précédemment le port écouté en envoyant cette fois-ci la commande PORT.

Mode de transfert FTP ASCII et binaire

Lors du transfert de fichier sur la connexion de données vous pourrez utiliser deux modes différents :

• Un format binaire ou le fichier sera transmis tel quel,
• Le format ASCII qui ne sert qu’aux fichiers textes. Le fichier sera examiné et des transformations y seront apportées afin de conserver un format correct. Par exemple la fin de ligne sera alors représentée par la paire pour le système d’exploitation Windows et le caractère sous Unix/Linux. Heureusement, FileZilla est multiplateforme et permet donc ces deux formats y compris sur un système Unix ou encore sous Mac OS X.

En réalité, une machine Windows reçoit donc un fichier texte en FTP en récupérant un fichier avec des <CR><LF> (en format ASCII) et des <LF> (en format binaire).

Ce premier mode de transfert FTP a donc plein d’avantages mais peut devenir une source de corruption dans les transferts de fichiers si l’on utilise un FTP client trop ancien encore en ligne de commande et qui ne sait s’adapter à ce type de fichiers.

Heureusement FileZilla sait parfaitement faire la part des choses dans le traitement des transferts FTP. Il est capable de basculer en mode binaire (à l’aide le plus souvent de la commande BIN) avant un transfert afin de conserver l’intégrité de celui-ci.

Récapitulons ce qu’il faut absolument comprendre du protocole FTP

Le principe de base est celui-ci :

Le client ouvre une session FTP sur un serveur. Le serveur requiert une identification de la part du client FTP (contourné par un compte « anonyme » lorsque l’on veut laisser un accès libre à tous mais avec un accès uniquement en lecture seule de la partie publique du serveur). Dans le où le serveur requiert une réelle identification, il vous faudra alors renseigner le duo utilisateur/mot de passe via votre client FTP pour vous authentifier auprès du serveur.

 

 

La première chose à bien comprendre c’est que, contrairement à d’autres protocoles (surtout comme le HTTP) il y a une utilisation de deux canaux bien distincts (en rouge ci-dessus) :

• Un canal pour l’échange des commandes du protocole
• Un canal pour le transfert des données

Votre FTP Client (à droite) et via une interface graphique pour l’utilisateur, va cacher les commandes du protocole FTP grâce à des manipulations plus agréables qui ne ressemblent jamais qu’à un simple gestionnaire de fichier (ou même d’un explorateur de fichiers) comme le client FTP FileZilla. Derrière chacune de vos actions via l’interface graphique et utilisateur de FileZilla s’opèrent en fait des commandes (en code) envoyées au serveur pour « dialoguer ».

Vous parviendrez à vos fins avec un FTP Client comme FileZilla à coups de glisser/déposer et de quelques clics seulement pour renommer ou créer des dossiers, aussi simplement que comme si vous étiez en train de créer et de gérer une arborescence et ses fichiers sur votre disque dur.

Le serveur FTP pourrait d’ailleurs être réduit à cette simple comparaison : c’est un gros disque dur que l’on nomme serveur mais qui stocke les données que l’on souhaite dans le cadre d’un stockage personnel, pour le partage de fichier au sein d’un groupe ou d’une organisation, ou bien évidemment pour héberger les fichiers nécessaires au bon fonctionnement de sites internet.

La dernière chose à retenir est la distinction à faire entre modes actif et passif : le protocole FTP supporte deux manières de fonctionner et qui sont pourtant à peine différentes mais pour des résultats bien distincts, surtout lorsque l’on doit passer au travers d’un firewall par filtrage de paquets.

Contentons-nous d’affirmer que pour passer un firewall il faut grosso-modo privilégier le mode passif car le mode actif pourrait bien amener son lot de soucis de connexion ou de corruptions de fichiers lors de transferts.

D’autres points importants

Revenons sur le mode passif et le transfert de fichiers qui ne contiennent pas de texte.

Comment activer le mode passif sous FileZilla ?

L’une des toutes premières choses à faire lorsque l’on prend en main un logiciel FTP Client c’est de savoir où se trouve ce paramétrage mode actif/passif. Sous FileZilla, cela se passe dans le menu Édition > Paramètres, comme ci-dessous :

En mode passif, le client FTP FileZilla joue toujours le rôle du client TCP. C’est ensuite au serveur FTP d’ouvrir les ports nécessaires sur lesquels il jouera le rôle d’un serveur TCP pour le support des canaux de données. Pour faire simple, le client FTP n’est jamais dans le rôle d’un serveur TCP, ce qui alourdit la charge des serveurs FTP.

À chaque fois que vous le pourrez, préférez alors le mode actif de FileZilla (ou de tout autre client FTP) surtout si vous travaillez sur des petits serveurs FTP afin de limiter leur charge. A l’inverse si vous travaillez sur des gros fichiers, nous vous conseillons d’utiliser le mode passif même si cela alourdit malheureusement le travail à faire pour le serveur : cela évitera des erreurs de corruptions de fichiers lourds lors de leur transfert FTP.

Qu’est-ce que le transfert non ASCII ?

C’est le second point très important à aborder lorsque l’on utilise pour la première fois un client FTP car de base FileZilla Client paramètrera tout cela pour vous, ce qui n’est pas toujours le mieux selon vos usages du protocole FTP.

Rendez-vous encore une fois dans le menu Édition > Paramètres, puis allez dans Paramètres de transfert/ASCII/Binaire. Vous obtiendrez ceci :

Le client FTP FileZilla brille une fois de plus de par son ingéniosité : par défaut il est paramétré pour faire une détection automatique selon l’extension du fichier, ce qui est très malin. Si vous décidez donc d’uploader ou de télécharger un fichier .txt, FileZilla choisira automatiquement le mode ASCII.

Vous pouvez bien évidemment paramétrer cela et forcer l’usage d’un mode en particulier. N’allez surtout pas forcer FileZilla à être en mode ASCII si les fichiers ne sont pas du texte car le seul résultat que vous obtiendrez sera alors des fichiers corrompus.

En fait, si l’on doit forcer FileZilla Client à utiliser un mode en particulier il s’agira du mode binaire puisqu’il est conçu pour fonctionner avec toutes sortes de fichiers, mais pas de manière optimale ce qui peut réduire les performances de votre client FTP.

Faisons le test avec un simple fichier texte que l’on transfèrerait au format ASCII puis en format binaire. Voici ce que donne un fichier texte en passant par le format ASCII :

Impeccable, c’est conçu pour ! Maintenant voyons ce même fichier mais téléchargé au format binaire :

Sans être illisible c’est tout de même moins bon… et pourtant il ne faut surtout pas vous inquiéter ! Le document final est au format UNIX alors que le document local est lui passé au format Microsoft. La différence n’est pas immense mais pourtant elle est perturbante :

en ASCII, il existe deux caractères non imprimables que l’on appelle CR (Carriage Return ou Retour Chariot) et LF (Line Feed ou Saut de Ligne). Pour un fichier qui serait en texte UNIX les retours à la ligne sont signalés par un LF quand pour Microsoft il y a besoin du couple CR/LF.

Nous pouvons donc remarquer que lors du transfert FTP en mode ASCII une conversion s’est effectuée, alors que lors d’un transfert FTP en mode binaire rien n’aurait été modifié.

Alors pour ceux qui s’inquiètent, n’ayez aucune crainte : Notepad ne sait pas interpréter de manière optimale le code LF lorsqu’il est seul, mais Wordpad sait le faire de son côté et vous retrouverez un fichier bien lisible même en forçant FileZilla à utiliser le format binaire pour des fichiers textes.

Est-ce tout ce qu’il y a à savoir du protocole FTP ?

Non, mais cela rentre dans des domaines bien plus complexes. Le protocole FTP sait en réalité faire bien plus de choses que nous n’avons pu le voir (certaines parties étant parfaitement documentées quand d’autres sont laissées comme telles et à découvrir pour les développeurs), mais nous avons pu faire un bon tour des possibilités du protocole FTP.

Nous avons pu voir que :

Le transfert binaire ou ASCII est une notion à connaître pour une utilisation plus performante de FileZilla Client : transférer n’importe quel fichier en mode binaire réduit les risques de corruptions quand essayer de transférer en mode ASCII un fichier qui n’est pas du texte est bien hasardeux.
• Les modes Actif et Passif qui sont une notion essentielle là aussi, surtout si vous devez passer par un firewall à filtrage de paquets non configuré pour accepter le mode actif, c’est-à-dire le mode où le client FTP FileZilla se retrouve être dans le rôle du serveur TCP sur le canal de données.
• Les différents canaux (commandes et données) qui sont le principe de base de fonctionnement du protocole FTP.

Plus de documentations sur notre site dédié à FileZilla

Nous n’avons hélas pas vu comment se configurait un compte FTP FileZilla pour se connecter à un serveur FTP depuis le Client.

Comprendre comment installer FileZilla et transférer un fichier sur un serveur FTP est là aussi quelque chose d’enfantin qui ne serait pas en rapport avec le présent article.

Du côté de la sécurisation, nous voyons rapidement les principes d’une connexion sécurisée SFTP même s’il aurait été intéressant de pouvoir voir comment utiliser le protocole FTP à travers un serveur PROXY ou SOCKS.

Pour conclure

En conclusion, le protocole FTP est tout ce qu’il y a de plus pratique pour gérer un site internet ou encore un espace de stockage sous forme de serveur FTP.

En client FTP nous ne pouvons que vous conseiller FileZilla Client qui est largement plus complet que les interfaces HTTP des hébergeurs de sites internet. I

l est le plus fiable, robuste et surpuissant pour les experts et pourtant d’une simplicité extrême pour les débutants.