En 2025, je vois que de plus en plus de monde ne connait plus le protocole FTP. Les apprenants savent déployer vers Vercel ou Heroku, mais sont incapables de faire un simple FTP. Lorsque le web a pris son envol un peu avant l’an 2000, les webmaster(c’est comme ça qu’on les appelait à l’époque) déplayaient le site en FTP, et aujourd’hui ça fait un peu rigoler les jeunes quand je parle de ça.
Ce n’est pas l’objet de cet article, je vais vous parler de FTP dans sa globalité.
Contenu
FTP (File Transfert Protocole)
Le FTP a été inventé en 1971, et servait à transférer des fichiers entre deux ordinateurs, plutôt entre un client et le serveur, qui est à la base de l’architecture FTP. En effet quand vous allez sur la page de Filezilla pour télécharger le client FTP, vous avez aussi la possibilité de télécharger les serveurs. Si vous êtes webmaster vous avez besoin de la version client.
Le client FTP se connecte au serveur FTP, il faut souvent un identifiant et un mot de passe, un fois la connexion établie, un échange de données et de commandes se fait entre les deux entités.
Deux ports sont ouverts de part et d’autres pour la communication, le port 20 pour les données et le port 21 pour les commandes. Avant d’avoir un client graphique tel que Filezilla, le FTP se pratiquait en ligne de commande.
Le langage FTP
Voici une liste succincte de commandes FTP que vous devez faire depuis votre client pour manipuler des fichiers. Pour se connecter à FTP en ligne de commande depuis le terminal vous faites ftp nom_hote, ce dernier peut être une adresse IP, après la connexion réussie, vous aurez une invite de commande de type ftp>. Ceci indique que vous êtes déjà sur le serveur.
- cd change de répertoire sur le serveur
- lcd change de répertoire sur le client
- get : télécharge un fichier du serveur vers le client
- mget : télécharge plusieurs fichiers (wildcards acceptés)
- put : envoi un fichier vers le serveur
- mput : envoi multiple fichiers vers le serveur
- prompt : active ou désactive la confirmation lors de transfert de fichier, utile en multiple
- delete
- mkdir : crée un répertoire sur le serveur
- rmdir : efface un répertoire sur le serveur
- rename : renomme un fichier
- help ou ? : affiche la liste des commandes disponibles
- status : affiche les paramètres actuels
Les commandes brutes FTP
- CWD : change de répertoire, cd est un wrapper sur CWD
- STOR : wrapper sur put
- RETR : wrapper sur get
- LIST : wrapper sur ls
Les canaux de communication FTP 20 et 21 (channels)
FTP utilise deux canaux de communication :
Control channel : port 21
Ce canal est utilisé pour envoyer les commandes
Data channel : port 20
Ce canal est utilisé pour transmettre les données proprement dites.
Mode actif ou mode passif (pour le serveur)
Dans les logiciels comme Filezilla, la configuration vous propose une connexion passive ou active. Il faut savoir que l’on se place dans le contexte du serveur et non du client..
Le mode actif (Active Mode)
Mode par défaut du FTP, le client envoit par le canal de control sur quel port se connecter, et le serveur répond en se connectant à ce port pour le Data Channel
Le mode passif (Passive mode)
le serveur indique au client quel port auquel se connecter, et le client se connecte à ce port.
Pourquoi il existe deux modes de connexions?
Le parefeu (firewall) est la raison pour laquelle il y a les deux modes.
Problème avec le mode actif :
les serveur essaye de se connecter au port du client, mais le parefeu du client peut être configuré de façon à bloquer le port 21.
Solution avec le mode passif :
Le client se connecte au port du serveur que ce dernier a spécifié. Le pare feu du serveur normalement ne bloque pas le port puisqu’il est censé être configuré pour permettre les connexion.
Dans un cas comme l’autre des problème d’autorisation peuvent se produire, et il convient de tester les solutions pour établir la connexion.
FTP et le modèle OSI à 7 couches
Le fameux modèle à 7 couches, vraiment très abstrait, mais je vais essayer de vous expliquer.
C’est quoi le modèle à 7 couches ?

Le FTP est sur la couche Application, car elle sert directement les application et les utilisateurs. Est ce que le FTP est sur la couche. Par exemple pourquoi ne dit on pas que FTP est sur la couche Transport? La couche Transport s’occupe de découper et réassembler les paquets de données, or FTP ne s’occupe pas du tout de ça. FTP délègue à la couche Transport (TCP Transport Layer Protocol) le soin de le faire.
De même peut on dire que FTP est dans la couche Presentation? La couche Presentation s’occupe de l’encryption, de la compression/decompression, FTP ne s’occupe pas du fait que l’image qu’il transfère soit JPG ou PNG, il transfère juste.
De même est ce que FTP est dans la couche Session? On peut le penser car il y une authentification,et le maintient de la connexion de façon stateful, c’est à dire que le contact est maintenu. Pour autant FTP n’est pas dans la couche Session même si elle gère elle même par dessus TCP l’authentification et le maintient de la connexion.