Protocole FTP/FTPS

Article abordant la notion de protocole ftp et ftps

Dès lors que l’on accède à une ressource à distance, par exemple son site favoris, nous accédons en réalité à un serveur qui va servir des fichiers.

C’est un petit peu comme dans un restaurant. Lorsqu’on souhaite manger un plat présent sur le menu, nous allons le dire au serveur qui va le communiquer en cuisine pour ensuite nous le cuisiner et le servir.

Chaque demande est donc unique mais peut renvoyer à une même ressource (le plat).

Quand on est développeur, on travaille souvent en local, c’est à dire sur sa propre machine. Mais une fois le travail terminé, il est nécessaire de mettre le code à disposition sur le serveur que les utilisateurs interrogeront. Les internautes enverront une demande unique pour voir une page de notre site et ils accéderont en réalité tous à la même ressource (le fichier sur le serveur)

Il existe alors 2 grandes manières de faire pour mettre son travail sur un serveur:

  • Utiliser un terminal en ligne de commande
  • Utiliser un outil permettant de se connecter au serveur

Et c’est cette dernière qui va nous intéresser dans cet article.

File Transfert Protocol

Ou plus communément appelé FTP, signifie en français protocole de transfert de fichiers, est représente un protocole permettant l’échange de fichiers entre deux machines sur un réseau.

On va, grâce à ce protocole, pouvoir se connecter à distance à notre serveur depuis notre machine personnelle. On aura ainsi accès à l’arborescence fichiers de notre machine mais aussi à celle du serveur, ce qui nous permettra de rapidement transférer des fichiers.

Tu l’auras compris, FTP répond à un modèle client-serveur. Oui, mais il y a une petite subtilité !

La partie serveur signifie une machine cible, pas forcément un serveur. En effet, si tu travailles en collaboration avec une personne et que tu souhaites lui transférer un fichier volumineux, plusieurs choix s’offrent à toi: tu peux le mettre à disposition sur un cloud ou encore le faire passer sur une clé USB/disque dur.

Finalement, tu peux aussi utiliser le FTP en mettant la machine de ton collègue en tant que « serveur », c’est à dire en machine cible. Le transfert de fichiers passant par le réseau local, l’envoie ira beaucoup plus vite que par un transfert USB ou l’upload du fichier sur le cloud.

Je parles de client et de serveur, oui mais, comment ça marche ?

Fonctionnement du FTP

On l’a vu, ce protocole de transfert possède 2 parties: le client et le serveur.

Serveur FTP

Le serveur FTP est un logiciel que l’on installe sur la machine cible. Il va permettre de répondre aux demandes du client.

Reprenons l’exemple du restaurant. Dans ce contexte là, le serveur FTP représente la cuisine du restaurant et le FTP, le protocole, représente le serveur.

Sans cuisine, pas de menu ni de restaurant !

Le serveur FTP va donc recevoir les demandes du client et répondre à celles-ci si c’est possible. Il va, entre autre, vérifier les droits du compte du client connecté lorsque ce dernier va vouloir ajouter, modifier ou supprimer une ressource. Si le client ne possède pas les droits, la demande sera tout simplement rejetée.

Dans notre exemple de cuisine, si l’on souhaite faire remplacer un ingrédient dans l’un des plats, le serveur va demander en cuisine si c’est possible et reviendra nous dire si la cuisine est capable de le faire ou si ce n’est pas possible.

Une machine, véritable serveur ou ordinateur, devient serveur FTP en installant simplement un logiciel qui lui permettra de le devenir.

Client FTP

Le client FTP est à l’initiative de tous les échanges avec le serveur cible. Il utilisera souvent un logiciel avec une interface graphique pour se connecter au serveur, mais il peut aussi se connecter à la machine cible à travers des lignes de commande.

Une fois la connexion effectué, le client effectuera des actions, que ce soit de simples consultations d’arborescence de fichiers ou de l’ajout/modification/suppression de fichiers.

Chaque action renverra une réponse qu’elle soit positive on négative et tout cela au format texte, lisible facilement par un humain.

Reprenons l’exemple du restaurant, le client FTP représente le client du restaurant. Il fera sa demande de plat en cuisine (serveur FTP) à travers le serveur (FTP). Dans la plupart des cas, la réponse (le plat cuisiné) sera toujours positive mais comme on a pu le voir précédemment, si un client demande un plat vegan dans un restaurant spécialisé dans la viande rouge, il y a de forte chance que la réponse soit négative…

Usage du FTP

On connait maintenant le fonctionnement de ce protocole et à quoi il correspond. Quels sont les usages courants que l’on peut avoir avec ce type de logiciel ?

Évidemment, on va retrouver 2 grandes possibilités:

  • Le téléchargement de fichiers présent sur le serveur sur notre machine locale
  • L’envoie de fichiers présent sur notre machine locale sur le serveur

Exemple d’usage dans le web

Dans le premier cas, on retrouvera souvent du téléchargement d’archives.

Imaginons que votre serveur web fasse une sauvegarde d’une base de données présente sur le serveur tous les soirs à 23H. Il génère alors un fichier compressé (zip) avec un nom unique. Vous pourrez vous connecter chaque matin pour récupérer ce fichier et le stocker sur un support externe afin de le garder en toute sécurité.

Dans le deuxième cas, on retrouvera souvent l’envoie de fichiers pour mettre à jour le site internet hébergé sur le serveur.

Une fois que l’on aura fini de développer notre site sur notre machine, il faudra le rendre disponible sur le web et pour cela on enverra des fichiers de type HTML, CSS ou encore Javascript sur le serveur.

Exemple d’usage en dehors du web

L’utilisation d’un FTP peut aussi se faire par des sociétés comme des grossistes ou des fournisseurs.

C’est un exemple que je connais très bien et qui n’a rien à voir avec le domaine du web !

En effet, ces derniers vont mettre à disposition sur un serveur des fichiers de stocks, des photos de produits ou encore des fichiers descriptifs des produits qu’ils vendent.

Ils utiliseront un client FTP pour mettre à disposition leurs ressources sur un serveur possédant un serveur FTP.

De l’autre côté, les clients de ces sociétés posséderont aussi un compte sur ce serveur. Ils pourront ainsi se connecter sur le serveur FTP pour récupérer ces mêmes ressources et les utiliser comme ils le souhaitent.

Et la sécurité ?

C’est là que la machine s’emballe ! Un FTP n’est pas sécurisé, ou en tout cas, ne crypte pas les informations de connexion. Pas fou fou…

Pour rentrer un peu plus dans le détail, lorsque le client FTP se connecte au serveur FTP, il va passer par 2 ports: le port 21 et le port 20 (ceux sont les 2 ports par défaut, ils sont souvent modifiés par les administrateurs réseaux pour des raisons de sécurité).

La première question que tu dois te poser, c’est pourquoi 2 ports ? Et tu as tout à fait raison de te poser cette question.

En réalité, le port 21 va être utilisé pour envoyer et recevoir les réponses du serveur et le port 20 sera utilisé pour envoyer et recevoir les fichiers.

Reprenons encore une fois l’exemple du restaurant. Un serveur possède 2 bras/2 jambes et une bouche/2 oreilles. Il y a donc 2 canaux disponibles, l’un pour transporter les plats, l’autre pour entendre les demandes et y répondre.

Imaginons qu’un serveur t’emmène ton café (équivalent du port 20) et que tu décides de lui demander l’addition (équivalent du port 21). Tu constates que tu as tu as utilisé les 2 canaux à disposition. Le soucis, c’est que dans le restaurant, tu n’es pas anonyme et tout le monde sait ce que tu as mangé.

Les serveurs FTP ont la possibilité de crypter les 2 canaux (données transitant sur le port 20 et le port 21) ou seulement sur un seul, celui de l’envoie et de la réception d’informations.

Pour cela, on utilisera le protocole FTPS, S pour Secured.

Cette sécurisation est possible grâce à l’utilisation du protocole SSL. Il permet d’avoir un certificat d’autorité permettant d’assurer qui nous sommes. Le serveur fera de même en nous transmettant son certificat d’autorité.

Ces 2 certificats sont échangés lors de la toute première connexion entre le client et le serveur et, les 2 parties stockeront respectivement les certificats dans un dossier où l’on retrouve tous les certificats autorisées.

On retrouve cette utilisation sur les sites HTTP et HTTPS notamment.

FTPS vs SFTP

Il existe une possibilité plus largement répandue pour sécuriser les échanges entre le client et le serveur et c’est un protocole à part du protocole FTP, on le nomme SFTP.

Là où FTPS ajoute une couche au protocole FTP existant, SFTP, lui, est un protocole à part entière qui utilise comme base un tout autre protocole à savoir le SSH.

La différence majeure réside dans le fait qu’il n’y a plus 2 ports pour communiquer avec le serveur mais un seul, le port 21 par défaut.

De plus, grâce au SSH et à son fonctionnement, il devient possible de se connecter uniquement avec sa clé publique.

Thomas C

Formateur sur des parcours DWWM & CDA, j'ai décidé d'aller plus loin en te partageant mes connaissances en vitesse supersonic 🚀 Prends ta revanche sur la vie !

Une réponse à “Protocole FTP/FTPS”

  1. Mark dit :

    Thanks for your blog, nice to read. Do not stop.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Formation Développeur Web