Le protocole de transfert de fichiers (en anglais File Transfer Protocol ou FTP) est un protocole de communication normalisé utilisé pour transférer des fichiers informatiques entre un client et un serveur via un réseau. Développé au début des années 1970, le FTP est devenu un protocole fondamental d’Internet. Son cadre opérationnel suit un modèle client-serveur, où le client établit une connexion avec le serveur pour faciliter le transfert de fichiers. Notamment, le FTP utilise des connexions de contrôle et de données distinctes pour optimiser le processus de transfert.
Le FTP fonctionne via deux connexions distinctes pour faciliter le transfert de fichiers entre le client et le serveur : la connexion de contrôle et la connexion de données.
Le FTP fonctionne en deux modes pour les transferts de fichiers :
Mode Actif | Mode Passif |
---|---|
Le client spécifie l’adresse IP du serveur et le numéro de port pour se connecter | Le serveur fournit une adresse IP et un numéro de port, permettant au client d’établir une connexion pour le transfert de fichiers |
Le choix d’utiliser le mode actif ou passif dépend de la configuration du réseau et de la capacité à établir des connexions de données à travers les pare-feu et les dispositifs NAT.
Les connexions FTP rencontrent souvent des obstacles lorsqu’elles traversent des dispositifs de traduction d’adresse réseau (NAT) et des pare-feu. Les dispositifs NAT modifient les adresses IP et les numéros de port des paquets lors de leur passage, ce qui peut perturber l’établissement de la connexion de données dans le FTP. De même, les pare-feu peuvent bloquer les demandes de connexion entrantes pour la connexion de données.
Pour surmonter ces défis, le FTP intègre une commande PASV (Passive), permettant au serveur de désigner une adresse IP et un numéro de port pour que le client se connecte afin de transférer les données. Ce mécanisme aide à contourner les restrictions imposées par les pare-feu et les dispositifs NAT. De plus, certains pare-feu prennent en charge des passerelles au niveau de l’application capables d’inspecter le trafic FTP et d’ouvrir et de fermer dynamiquement des ports selon les besoins pour le transfert de données.
Au fil du temps, les transferts de fichiers FTP ont été simplifiés grâce à diverses applications logicielles. Initialement, les clients FTP étaient principalement des interfaces en ligne de commande. Cependant, avec les progrès technologiques, des applications de client FTP plus conviviales ont émergé. Ces applications offrent des fonctionnalités telles que le glisser-déposer, la reprise des transferts interrompus et des interfaces graphiques utilisateur (GUI) pour une navigation simplifiée.
De plus, de nombreux navigateurs web ont intégré des fonctionnalités de client FTP, permettant aux utilisateurs d’accéder directement aux serveurs FTP. Cependant, en raison des préoccupations en matière de sécurité et du déclin de la prévalence du protocole, les principaux navigateurs ont progressivement abandonné le support du FTP.
Bien que le FTP serve de protocole pratique pour les transferts de fichiers, ses vulnérabilités en matière de sécurité sont une préoccupation notable. Parmi celles-ci, la transmission des informations d’identification de connexion et des données de fichiers en texte clair, les rendant susceptibles à l’écoute et à l’accès non autorisé.
Pour remédier à ces lacunes de sécurité, plusieurs alternatives sécurisées au FTP traditionnel ont été développées :
Bien que le FTP et le HTTP soient tous deux utilisés pour transférer des fichiers sur Internet, ils diffèrent sur plusieurs aspects clés.
Caractéristique | FTP | HTTP |
---|---|---|
Connexion | Canaux de contrôle et de données séparés | Connexion unique pour le contrôle et les données |
État | État (maintient les informations de session) | Stateless (chaque requête est indépendante) |
Adaptabilité | Gros fichiers, transferts reprises | Fichiers plus petits, simplicité et facilité d’utilisation |
Sécurité | Moins sécurisé (FTP traditionnel) | Peut être sécurisé avec HTTPS |
Mise en cache | Non | Oui (améliore les performances pour les répétitions) |