Le File Transfer Protocol (protocole de transfert de fichiers) ou FTP est dédié à l'échange informatique de fichiers sur un réseau TCP/IP. 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.
La mise en place du protocole FTP date de 1971, date à laquelle un mécanisme de transfert de fichiers (décrit dans la RFC 141) entre les machines du MIT avait été mis au point. De nombreux RFC ont ensuite apporté des améliorations au protocole de base, mais les plus grandes innovations datent de juillet 1973.
Le protocole FTP est actuellement défini par la RFC 959. Son absence quasi-totale de sécurité (mots de passe circulant en clair !) lui fait aujourd'hui préférer SSH, sauf pour les documents ne demandant pas de confidentialité (Anonymous FTP); dans ce dernier cas, l'usage veut qu'on indique pour mot de passe son adresse courriel, par courtoisie.
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).
Le protocole, qui appartient à la couche session du modèle OSI et à la couche application du modèle ARPA, utilise une connexion TCP. Il peut s'utiliser de deux façons differentes :
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 initiera 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. 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.
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. 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 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.
Deux ports sont standardisés (well known ports) pour les connexions FTP : le port 21 pour les commandes et le port 20 pour les données.
Pour accéder à un serveur FTP, on utilise un client ftp, en ligne de commande ou avec une interface graphique. Les utilisateurs de GNU-Linux ou d'un Unix peuvent consulter une documentation (la plupart du temps installée par défaut), en tapant « man ftp ». La plupart des navigateurs récents autorisent les connexions FTP en utilisant une URL de type :
ftp://nom_d_utilisateur:mot_de_passe@nom_du_serveur:port_ftp
Par sécurité, il est conseillé de ne pas préciser le mot de passe, le serveur le demandera. Cela évite de le laisser visible en clair ou réutilisable. La partie port_ftp est optionnelle. S'il est omis le port par défaut (21) sera utilisé.
source : wikipedia