Définition FTP. Protocole FTP. Service d'archives FTP

Si vous lisez ce blog depuis longtemps, vous vous souvenez peut-être de la façon dont j'ai décidé d'y rassembler une description des protocoles réseau populaires (et moins populaires). Pourquoi j'en ai besoin, vous pouvez lire dans l'article Une description assez complète du protocole SMTP. J'ai donc décidé d'ajouter à la collection le protocole FTP, largement utilisé pour le transfert de fichiers.

1. Allons-y

Comme d'habitude, je vais tout de suite commencer par un exemple :

$ exemple telnet.ru 21
J'essaie 192.168.0.1...
Connecté à example.ru.
Le caractère d'échappement est "^]".
220-Bienvenue sur Pure-FTPd
Vous êtes l'utilisateur numéro 5 sur 100 autorisés.
L’heure locale est désormais 17h41. Port du serveur : 21.
220 Vous serez déconnecté après 15 minutes d'inactivité.
UTILISATEUR afiskon
331 L'utilisateur indique OK. Mot de passe requis
PASS mot de passe boiteux
230-L'utilisateur afiskon a un accès de groupe aux : codeurs
230 D'accord. Le répertoire restreint actuel est /

Le serveur FTP fonctionne généralement sur le port 21. Dans l'exemple ci-dessus, les lignes commençant par des chiffres sont envoyées par le serveur, le reste - par le client. Les demandes des clients sont toujours constituées d'une seule ligne de format COMMANDE [arguments], tandis que les réponses du serveur peuvent contenir plusieurs lignes.

Les première et dernière lignes commencent par trois chiffres représentant le code de réponse, suivis d'une description textuelle de la réponse, séparée du code par un espace ou un tiret. Si un espace est utilisé comme délimiteur, alors la ligne est la dernière de la réponse (et éventuellement la seule), sinon nous recevons la première ligne d'une réponse multiligne. On a déjà vu ça quelque part, n'est-ce pas ?

Il existe cinq groupes de réponses de serveur :

Comme vous pouvez le voir sur l'exemple, tout commence avec l'envoi du code 220 par le serveur. Ensuite, l'utilisateur doit se connecter à l'aide des commandes USER et PASS. Si tout est fait correctement, le serveur répondra au premier avec le code 331 et au second avec le code 230. Pour une connexion anonyme (si elle est autorisée par les paramètres du serveur), vous devez spécifier « anonyme » comme nom d'utilisateur, et votre e-mail comme mot de passe. En pratique, il s'agit généralement soit d'un e-mail vide, soit de quelque chose comme [email protégé].

Comme vous pouvez le constater, le mot de passe est transmis en texte clair, il est donc fortement conseillé de crypter la connexion FTP en utilisant SSL (c'est ce qu'on appelle FTPS - FTP plus SSL), et encore mieux - de transférer des fichiers via SSH en utilisant scp, sftp ou WinSCP utilitaires. Les deux premiers sont disponibles sur n'importe quel système Unix et utilisent les mêmes protocoles exécutés sur SSH pour transférer des fichiers. WinSCP est écrit pour Windows et ressemble à Total Commander ; il peut fonctionner à la fois avec les versions obsolètes SCP (Secure Copy) et SFTP (SSH File Transfer Protocol), qui n'apparaissaient que dans SSH-2.

2. Regardons autour de nous

Mais quelque chose m'a emmené dans la mauvaise steppe. Après avoir passé l'authentification (wow, je ne vais pas le confondre avec autorisation) Le serveur FTP exécutera volontiers nos commandes. Voici leur liste :

Équipe Code attendu Description
SUPPRIMER 250 Supprimer un fichier
RMD 250 Supprimer le répertoire
MDC 250 Aller au répertoire
MKD 257 Créer le répertoire
P.W.D. 257 Découvrez le répertoire actuel
QUITTER 221 Terminer le travail
TAPER 200 Définir le type de transfert
PORT 200 Passer en mode actif
PASV 227 Passer en mode passif
LISTE 150, 226 Obtenir le contenu du répertoire
RETOUR 150, 226 Télécharger un fichier
STOCKER 150, 226 Téléverser un fichier
ABOR 426,226 Annuler le transfert
RNFR 350 Sélectionnez le fichier à renommer
RNTO 250 Renommer le fichier

Ici, j'ai répertorié uniquement les commandes de base, qui suffisent pour écrire un client FTP à part entière. Le fait est qu'en conditions réelles, les serveurs FTP sont très sélectifs dans la prise en charge des commandes décrites dans RFC959 et RFC3659. Donc, si nous voulons obtenir une application vraiment fonctionnelle, et non un cheval sphérique dans le vide, nous devrons nous limiter aux seules commandes de la liste donnée.

Les commandes les plus simples sont QUITTER, SUPPRIMER, MKD, CWD et RMD. Nous commandons et vérifions simplement le code renvoyé par le serveur. Si elle est égale à la valeur attendue, alors tout va bien, sinon, nous traitons l'erreur.

MKD ftp_test
257 "ftp_test" : Le répertoire a été créé avec succès
CWD ftp_test
250 d'accord. Le répertoire actuel est /ftp_test
MDC..
250 d'accord. Le répertoire actuel est /
RMD ftp_test
250 Le répertoire a été supprimé avec succès

Si j'écrivais un client FTP, le code responsable de l'exécution de ces commandes ressemblerait à ceci :

code entier ;
char * rép;
// ...
si (code = rawcmd(250 , "RMD %s \r\n", réal) )
printf("Erreur : %d \n", code) ;
autre
printf("Tout est fait ! \n") ;

Un peu plus difficile avec l'analyse de la réponse du serveur à une commande P.W.D.:

P.W.D.
257 "/ftp_test" est votre emplacement actuel

Le répertoire courant est transmis dans la seule (dernière ?) ligne de la réponse du serveur, entre guillemets doubles. Si le nom complet du répertoire courant contient des guillemets doubles, ils sont remplacés par deux guillemets :

P.W.D.
257 "/ftp" "test" est votre emplacement actuel

Pour renommer des fichiers, quelques commandes sont utilisées - RNFR et RNTO:

RNFR vieux_fichier.zip
350 Vous plaisantez ?
RNTO nouveau_fichier.zip
250 Fini !

Apparemment, il s'agit d'une optimisation afin que le tampon dans lequel le serveur lit les commandes client soit de l'ordre de la longueur maximale autorisée du nom complet du fichier, et non deux fois plus long. En 1971, lorsque le protocole a été créé, cela aurait pu être important.

Équipe TAPER vous permet de définir le mode de transfert de fichiers. Exemple:

TYPE E
200 TYPE est maintenant EBCDIC
TYPE A
200 TYPE est maintenant ASCII
TYPE I
200 TYPE est désormais binaire 8 bits

Pour autant que je sache, cette commande est aujourd'hui déjà obsolète et toutes les données peuvent être transmises en toute sécurité au format binaire (TYPE I). Citation de Wikipédia :

Les premiers ordinateurs utilisaient un format de mot machine de la taille d'un octet, un double mot machine, et non un multiple de 8. Il s'agissait généralement de multiples de six. Huit bits par octet ont été adoptés lors du développement du système d'instructions machine pour l'IBM System/360. C'est devenu une norme internationale et depuis le début des années 1970 La plupart des ordinateurs utilisent des octets composés de 8 bits et des mots machine en multiples de 8.

3. Agissons

Une particularité du protocole FTP est que différentes connexions sont utilisées pour exécuter des commandes et transférer des fichiers. Il s'agit généralement d'une décision de conception normale. Nous ne savons pas ce qui est écrit dans ces fichiers, et si nous les transmettons avec des commandes, nous devrons en quelque sorte encoder le contenu du fichier pour le distinguer des commandes. Pourquoi augmenter la quantité de trafic et compliquer le protocole alors que vous pouvez simplement ouvrir une nouvelle connexion et envoyer le fichier tel quel ?

Lors de l’établissement d’une nouvelle connexion, quelqu’un doit réellement se connecter et quelqu’un doit accepter la connexion. Si le client ouvre un port et que le serveur s'y connecte, le mode de transfert de fichiers est dit actif. Sinon, c'est passif. Étant donné que de nombreux utilisateurs Internet sont aujourd'hui derrière le NAT, le mode passif est généralement utilisé. Et ce n'est pas très bon, car le nombre de ports sur le serveur est limité.

Ce qui est intéressant, c’est qu’il est possible de transférer directement des fichiers d’un serveur FTP à un autre. Mais comme cette fonctionnalité était souvent utilisée dans les attaques DDoS, elle est désormais désactivée presque partout.

Pour passer en mode passif, utilisez la commande PASV, pour passer en actif - PORT:

PORT 192 168,10,1,21 133
Commande 200 PORT réussie
PASV
227 Entrée en mode passif (192,168,0,1,21,216)

Comme vous pouvez le deviner, l'adresse IP et le port de connexion sont codés à l'aide de chiffres. Disons que nous sommes en mode passif et que nous souhaitons établir une connexion de données :

$ telnet 192.168.0.1 `expr 21 \* 256 + 216`
J'essaie 192.168.0.1...
Connecté à example.ru.
Le caractère d'échappement est "^]".

Après quoi on peut, par exemple, visualiser le contenu du répertoire courant en utilisant la commande LISTE:

LISTE
150 Connexion de données acceptée
226-Options : -a -l
226 5 matchs au total

Regardons la sortie telnet :

drwx------ 5 codeurs afiskon 512 7 juillet 11:35 .
drwx------ 5 codeurs afiskon 512 7 juillet 11:35 ..
drwxr--r-- 3 codeurs afiskon 512 6 juin 14h30 site Web
drwxr-xr-x 2 codeurs afiskon 1024 7 juillet 00:16 journaux
drwxr--r-- 2 codeurs afiskon 512 6 juin 14h30 tmp
Connexion fermée par hôte étranger.

Le téléchargement et l'upload de fichiers se font exactement de la même manière, seules les commandes sont utilisées RETR (fichier) Et STOCK (fichier) respectivement. Les commandes RETR, STOR et LIST peuvent être interrompues en cours d'exécution à l'aide de la commande ABOR, en réponse à quoi le serveur doit répondre par 426 "transfert interrompu", puis par 226 "l'annulation de l'opération a réussi".

4. Conclusion

C'est ici que je terminerai probablement mon histoire. Le résultat était de 9 Ko de texte contre 130 Ko de RFC959. A l'aide de cet article, il est tout à fait possible d'écrire un simple client ou serveur FTP, j'ai vérifié ! Le plus important est de tester sa compatibilité avec autant de logiciels que possible, car, comme je l'ai déjà noté, dans le monde FTP, peu de gens suivent strictement la RFC. Et enfin, rappelez-vous la règle d’or « Soyez libéral avec les intrants, strict avec les extrants ».

La configuration de FTP est un processus simple qui possède ses propres fonctionnalités spécifiques. Si vous essayez de tout comprendre tout de suite, travailler avec le serveur FTP deviendra un plaisir au fil du temps. Grâce à ces serveurs, vous pouvez télécharger de la musique, des films, des images et d'autres fichiers, ainsi que gérer un site Web avec un hébergeur fonctionnant via un protocole de transfert de données. Mais pour ce faire, vous devez bien comprendre de quoi il s’agit, et en particulier vous devez comprendre ce qu’est un port FTP, à quoi il sert et comment le configurer. C’est exactement ce dont parlera l’article. Vous apprendrez quel port est celui par défaut, comment modifier les paramètres du port par défaut et le débloquer dans votre pare-feu et votre routeur.

Qu'est-ce qu'un port et pourquoi est-il nécessaire ?

Si vous y regardez, tout est extrêmement simple. Un système d'exploitation informatique possède un certain nombre limité de ports. Ils sont nécessaires pour que les programmes puissent s'y connecter via le réseau. Ceci est fait pour que les applications n'entrent pas en conflit les unes avec les autres lors de la tentative de connexion au réseau. Un port n'est qu'un numéro de protocole de transport. Cela peut être comparé à une autoroute. Si tous les programmes sont lancés le long du même « itinéraire », alors un embouteillage se formera rapidement dessus. Par conséquent, chaque application doit se voir attribuer son propre port unique, c'est-à-dire un numéro qui n'est pas encore occupé par d'autres programmes.

Les développeurs de systèmes d'exploitation utilisent depuis longtemps cette méthode de distribution de programmes dans des protocoles numérotés, et elle a fait ses preuves. Après tout, il existe plus de six mille ports, ce qui est suffisant pour n'importe quel ordinateur !

FTP est un protocole de transfert de données. Ceci est nécessaire pour que le client et le serveur puissent échanger rapidement divers fichiers.

Ce protocole est pratique pour les personnes qui ne se soucient pas de l'interface Web du stockage, mais qui apprécient la vitesse de téléchargement et le nombre de fichiers pouvant être stockés sur le serveur. Il n'y a pas de meilleur moyen d'échanger des données volumineuses que via le protocole FTP. Et ce protocole fonctionne via le canal TCP. Et pour se connecter à ce canal, un port spécifique est nécessaire. Autrement dit, pour ouvrir le serveur, le client doit se rendre sur son port puis pénétrer dans l'hôte via celui-ci. C'est tout l'intérêt des ports pour FTP.

Que sont les modes actif et passif et quel est leur lien avec les ports ?

Le fait est qu'il existe deux options pour développer un scénario d'interaction client-serveur. La première option est lorsque le programme attribue un port qui lui convient. Autrement dit, un certain numéro de port est défini sur le serveur et le système l'accepte en le libérant. Et la deuxième option est lorsque le système d'exploitation sélectionne lui-même un port pour que le programme accède au réseau.

En FTP, lorsqu'un client tente de se connecter à un serveur, le mode actif apparaît au moment où la connexion de données est établie. Si le mode actif est spécifié, le client spécifie le numéro de port de connexion que le serveur doit ouvrir. Il s'avère que le client contrôle la situation et que le serveur s'y adapte. Et en mode passif, le client agit passivement, c'est-à-dire qu'il reçoit un message du serveur avec le numéro de port de connexion et se connecte via celui-ci.

Mais le fait est que dans le protocole FTP, il existe deux types de connexions :

  1. Directeur.
  2. Connexion de données.

L'activité et la passivité du client ne se manifestent que dans le deuxième type de connexion. Et le premier est nécessaire pour que le serveur et le client puissent communiquer entre eux. Autrement dit, pour que le serveur accepte les commandes du client, c'est pourquoi cette connexion est appelée connexion de contrôle. Cette connexion fonctionne via le port standard installé par défaut.

Comment définir les ports par défaut pour faire fonctionner le serveur FTP

Beaucoup de ceux qui tentent d'installer un serveur FTP sur le système d'exploitation Windows populaire sont confrontés au problème des ports fermés. En conséquence, le client ne peut pas ouvrir le serveur car il lui est inaccessible - la « route » est bloquée. Par conséquent, vous devez être capable de configurer les ports, et cela sera abordé plus en détail dans l'article.

Par défaut, FTP est configuré avec les ports 20 et 21. Le port le plus important est le 21, qui est nécessaire pour que vous puissiez ouvrir le serveur et lui envoyer des commandes, c'est-à-dire qu'il est nécessaire pour la connexion de contrôle. Mais le port 20 est principalement nécessaire pour le mode actif. Dans tous les cas, vous devez maîtriser les compétences de la redirection de port pour contourner le blocage standard du système et du routeur.

Le problème est que tous les utilisateurs Windows ne décident pas de créer un serveur FTP sur leur ordinateur. Par conséquent, le système d'exploitation bloque l'accès des corps étrangers (ordinateurs distants) au PC via les principaux canaux des protocoles de transport. Et, en règle générale, les ports 21 et 20 sont également inclus dans la liste des ports bloqués pour les clients distants. Et ils sont bloqués du côté de l'ordinateur - un pare-feu et un périphérique intermédiaire pour accéder à Internet - un routeur. Il faut apprendre à contourner cette double protection pour pouvoir ouvrir non seulement 21 ports, mais aussi d'autres si nécessaire.

La configuration de la redirection de port pour les ports 21 et 20 commence par la modification des configurations du pare-feu. Vous devez ouvrir le Panneau de configuration via Démarrer. Ensuite, recherchez l’onglet « Système et sécurité » et à l’intérieur, recherchez la section « Pare-feu Windows ». Ensuite, vous devez accéder à « Options avancées du pare-feu » dans le menu des paramètres de gauche. Le pare-feu fonctionne selon des règles, il vous suffit donc de créer de nouvelles normes pour ce service afin qu'il n'interfère pas avec le serveur FTP. Pour ce faire, cliquez sur « Règles pour les connexions entrantes » et sur le bouton « Créer une règle ». Vous n'avez rien à écrire - il ne s'agit pas d'écrire un programme, car sous Windows, tout fonctionne via une interface intuitive. Vous devrez spécifier le type de règle comme « Pour le port ». Sélectionnez ensuite "Protocole TCP" et indiquez le numéro 21 dans le formulaire "Ports locaux spécifiés". Ensuite, autorisez les connexions via le port 21, déterminez le niveau d'accès pour les clients, saisissez le nom de la règle et enregistrez les paramètres saisis.

Parfois, la configuration d’un pare-feu ne suffit pas. Les services standards de ce type incluent également un pare-feu. C'est encore plus facile à configurer qu'un pare-feu. Vous n'êtes pas obligé d'ajouter une nouvelle règle, il vous suffit de cocher la case à côté du serveur FTP pour les connexions entrantes et sortantes. Le pare-feu déterminera lui-même les ports via lesquels votre serveur fonctionne et donnera le feu vert pour leur ouverture.

Les choses sont beaucoup plus compliquées avec les routeurs. Le fait est qu’il y en a beaucoup maintenant. Par conséquent, il ne sera pas possible d'ouvrir les ports 21 et 20 via un routeur de manière universelle - chaque marque et chaque modèle a ses propres nuances que vous devez comprendre. Si vous n'avez jamais modifié les paramètres de votre routeur, il est préférable de ne pas vous y précipiter. Lisez sur les forums, comprenez les menus et les fonctions, puis essayez ensuite de transférer le port du routeur.

Souvent, le blocage de port est associé à plusieurs options installées sur le routeur. Par exemple, il peut s'agir d'une case décochée à côté de l'option UPnP. Cette option est nécessaire pour que les programmes redirigent automatiquement les ports via le routeur et ne vous dérangent pas. En règle générale, si le routeur dispose d'une telle fonction, alors elle est activée, mais tout peut arriver, et il se peut très bien qu'elle soit désactivée sur votre routeur. Ensuite, tout ce que vous avez à faire est de trouver un tel élément de paramètres et de cocher une case d'approbation à côté pour l'activer.

D'un autre côté, les ports doivent parfois être spécifiés dans des éléments de paramètres spéciaux pour les routeurs. Pour ce faire, vous devez vous connecter au routeur via un réseau local. Pour ce faire, recherchez son adresse IP sous votre routeur, puis saisissez-la dans la barre d'adresse de n'importe quel navigateur. Le menu du routeur s'ouvrira devant vous, dans lequel vous devrez trouver les paramètres de connexion au réseau local. Dans de tels paramètres, il existe généralement des configurations de familles IP pouvant se connecter au routeur, ainsi que des ports ouverts au fonctionnement. Vous devez spécifier une plage de ports afin que le routeur ne les bloque pas. N'oubliez pas de prendre en compte la fourchette pour que les nombres 20 et 21 y rentrent.

Est-il nécessaire d'utiliser le port 21 ?

Les personnes qui s'occupent constamment de serveurs et les créent ont beaucoup entendu parler du chiffre 21. Pour eux, c'est important, car de nombreux serveurs et protocoles, pas seulement FTP, utilisent le port 21 par défaut. Et c'est mauvais si vous commencez à analyser la situation. Après tout, le protocole de transfert de données n'est pas du tout protégé contre l'interception. À tout moment, des pirates informatiques expérimentés peuvent attaquer votre serveur et intercepter le mot de passe et l’identifiant du client. Ensuite, ils pénétreront dans le serveur et y voleront des données importantes, ou cacheront des logiciels malveillants et des virus dans des répertoires.

Afin d'augmenter d'une manière ou d'une autre le niveau de sécurité de l'utilisation du protocole FTP, il est recommandé de modifier le port standard nécessaire à la connexion dans les paramètres. Ce n'est pas difficile à faire, mais chaque serveur configure cette option différemment. Le seul inconvénient est que plus tard, lors de la connexion, le client devra spécifier un nouveau numéro de port au lieu du numéro 21. C'est l'essence de la protection - les pirates ne connaîtront pas le port sur lequel ils doivent intercepter les données, et donc ne pourra pas le voler.

FTP (File Transfer Protocol) est un protocole standard conçu pour transférer des fichiers sur des réseaux TCP (par exemple Internet). FTP est souvent utilisé pour télécharger des pages Web et d'autres documents depuis un appareil de développement privé vers des serveurs d'hébergement publics.

Le protocole est construit sur une architecture client-serveur et utilise différentes connexions réseau pour transférer des commandes et des données entre le client et le serveur. Les utilisateurs FTP peuvent s'authentifier en transmettant un nom d'utilisateur et un mot de passe en texte clair ou, si le serveur le permet, ils peuvent se connecter de manière anonyme. Vous pouvez utiliser le protocole SSH pour des transferts sécurisés qui masquent (cryptent) le login et le mot de passe et cryptent également le contenu.

Une caractéristique assez frappante du protocole FTP est qu'il utilise des connexions multiples (au moins doubles). Dans ce cas, un canal est le canal de contrôle, à travers lequel les commandes sont envoyées au serveur et ses réponses sont renvoyées (généralement via le port TCP 21), et à travers le reste, la transmission de données proprement dite a lieu, un canal pour chaque transmission. Ainsi, au cours d'une même session via le protocole FTP, vous pouvez transférer plusieurs fichiers simultanément et dans les deux sens. Pour chaque canal de données, son propre port TCP est ouvert, dont le numéro est choisi soit par le serveur, soit par le client, selon le mode de transmission.

Le protocole FTP dispose d'un mode de transfert binaire, qui réduit la surcharge de trafic et le temps de communication lors du transfert de fichiers volumineux. Le protocole HTTP nécessite nécessairement d'encoder les informations binaires sous forme de texte, par exemple à l'aide de l'algorithme Base64.

Lors du démarrage du travail via le protocole FTP, le client entre dans une session, et toutes les opérations sont effectuées dans le cadre de cette session (en d'autres termes, le serveur mémorise l'état actuel). Le protocole HTTP ne « se souvient » de rien - sa tâche est de donner des données et de les oublier, donc la mémorisation de l'état lors de l'utilisation de HTTP est effectuée par des méthodes externes au protocole.

FTP fonctionne au niveau de la couche application du modèle OSI et est utilisé pour transférer des fichiers via TCP/IP. Pour ce faire, un serveur FTP doit être en cours d'exécution et en attente des requêtes entrantes. L'ordinateur client peut contacter le serveur sur le port 21. Cette connexion (flux de contrôle) reste ouverte pendant toute la durée de la session. La deuxième connexion (flux de données) peut être ouverte soit par le serveur depuis le port 20 vers le port du client correspondant (mode actif), soit par le client depuis n'importe quel port vers le port du serveur correspondant (mode passif), ce qui est nécessaire pour transférer le fichier de données. Le flux de contrôle est utilisé pour faire fonctionner la session - par exemple, l'échange de commandes et de mots de passe entre le client et le serveur à l'aide d'un protocole de type telnet. Par exemple, "RETR filename" transférera le fichier spécifié du serveur vers le client. En raison de cette structure à deux ports, FTP est considéré comme un protocole hors bande, par opposition au HTTP intra-bande.

Connexion et transfert de données

Le protocole est défini dans la RFC 959. Le serveur répond au flux de contrôle avec des codes d'état ASCII à trois caractères avec un message texte facultatif. Par exemple, « 200 » (ou « 200 OK ») signifie que la dernière commande a été exécutée avec succès. Les chiffres représentent le code de réponse et le texte représente la clarification ou la demande. La transmission en cours sur le flux de données peut être interrompue par un message d'interruption envoyé sur le flux de contrôle.

FTP peut fonctionner en mode actif ou passif, dont le choix détermine la manière dont la connexion est établie. En mode actif, le client crée une connexion de contrôle TCP avec le serveur et envoie son adresse IP et un numéro de port client arbitraire au serveur, puis attend que le serveur démarre une connexion TCP avec cette adresse et ce numéro de port. Si le client se trouve derrière un pare-feu et ne peut pas accepter une connexion TCP entrante, le mode passif peut être utilisé. Dans ce mode, le client utilise le flux de contrôle pour envoyer une commande PASV au serveur, puis reçoit du serveur son adresse IP et son numéro de port, qui sont ensuite utilisés par le client pour ouvrir un flux de données depuis un port client arbitraire vers le serveur. Adresse et port reçus. Les deux modes ont été mis à jour en septembre 1998 pour prendre en charge IPv6. À cette époque, d'autres modifications ont été apportées au mode passif, le mettant à niveau vers le mode passif amélioré.

Lors de la transmission de données sur un réseau, quatre représentations de données peuvent être utilisées :

    ASCII - utilisé pour le texte. Les données sont, si nécessaire, converties de la représentation de caractères sur l'hôte émetteur en "ASCII huit bits" avant la transmission, et (encore une fois, si nécessaire) en représentation de caractères sur l'hôte récepteur. Par conséquent, ce mode ne convient pas aux fichiers contenant plus que du simple texte brut.

    Mode image (communément appelé binaire) : le périphérique expéditeur envoie chaque fichier octet par octet et le destinataire stocke le flux d'octets dès réception. La prise en charge de ce mode a été recommandée pour toutes les implémentations FTP.

    EBCDIC - utilisé pour transférer du texte brut entre hôtes en codage EBCDIC. Sinon, ce mode est similaire au mode ASCII.

    Mode local - permet à deux ordinateurs avec des paramètres identiques d'envoyer des données dans leur propre format sans conversion en ASCII.

Pour les fichiers texte, divers formats de gestion et paramètres de structure d'enregistrement sont fournis. Ces fonctionnalités ont été conçues pour fonctionner avec des fichiers contenant un formatage Telnet ou ASA.

Le transfert de données peut être effectué selon trois modes :

    Mode flux : les données sont envoyées sous forme de flux continu, libérant FTP de tout traitement. Au lieu de cela, tout le traitement est effectué par TCP. L'indicateur de fin de fichier n'est pas nécessaire, sauf pour séparer les données en enregistrements.

    Mode bloc - FTP divise les données en plusieurs blocs (bloc d'en-tête, nombre d'octets, champ de données) puis les transmet à TCP.

    Mode de compression : les données sont compressées à l'aide d'un seul algorithme (généralement en codant les longueurs de séries).

Authentification

L'authentification FTP utilise le schéma habituel de nom d'utilisateur/mot de passe pour accorder l'accès. Le nom d'utilisateur est envoyé au serveur avec la commande USER et le mot de passe est envoyé avec la commande PASS. Si les informations fournies par le client sont acceptées par le serveur, alors le serveur enverra une invitation au client et la session commencera. Les utilisateurs peuvent, si le serveur prend en charge cette fonctionnalité, se connecter sans fournir d'informations d'identification, mais le serveur ne peut accorder qu'un accès limité à ces sessions.

AnonymeFTP

L'hôte fournissant le service FTP peut fournir un accès FTP anonyme. Les utilisateurs se connectent généralement avec « anonyme » comme nom d'utilisateur. Bien qu’il soit généralement demandé aux utilisateurs de fournir leur adresse e-mail au lieu d’un mot de passe, aucune vérification n’est réellement effectuée. De nombreux hôtes FTP fournissant des mises à jour logicielles prennent en charge l'accès anonyme.

NAT- P.T.

Spécialement pour que le protocole FTP fonctionne à travers les pare-feu, une extension NAT appelée NAT-PT (rfc2766) a été créée, qui permet de traduire les connexions entrantes du serveur vers le client via NAT. Lors d'une telle connexion, NAT remplace les données transmises par le client, indiquant au serveur la véritable adresse et le port avec lesquels le serveur peut se connecter, puis diffuse la connexion du serveur de cette adresse au client vers son adresse. Malgré toutes les mesures et innovations prises pour prendre en charge le protocole FTP, dans la pratique, la fonction NAT-PT est généralement désactivée sur tous les routeurs et routeurs afin d'offrir une sécurité supplémentaire contre les menaces virales.

NATet contourner les pare-feu

FTP transfère généralement les données lorsqu'il existe une connexion entre le serveur et le client, après que le client a envoyé la commande PORT. Cela crée un problème à la fois pour le NAT et les pare-feu, qui n'autorisent pas les connexions Internet vers les hôtes internes. Pour NAT, un problème supplémentaire est que la représentation des adresses IP et des numéros de port dans la commande PORT fait référence à l'adresse IP et au port de l'hôte interne, au lieu de l'adresse IP publique et du port NAT. Il y a deux approches à ce problème. La première est que le client FTP et le serveur FTP utilisent la commande PASV, qui invoque une connexion de données établie entre le client et le serveur. La deuxième approche consiste à modifier les valeurs de la commande PORT pour NAT à l'aide de la passerelle au niveau de la couche application.

Prise en charge du navigateur Web

La plupart des navigateurs Web classiques peuvent récupérer des fichiers situés sur des serveurs FTP, bien qu'ils ne prennent pas en charge les extensions de protocole telles que FTPS. Lorsqu'une adresse FTP est spécifiée plutôt qu'une adresse HTTP, le contenu disponible sur le serveur distant est présenté de la même manière que les autres contenus Web. Un client FTP entièrement fonctionnel peut être exécuté dans Firefox en tant qu'extension FireFTP.

Sécurité

FTP n'a pas été conçu pour être un protocole sécurisé (surtout selon les normes actuelles) et présente de nombreuses failles de sécurité. En mai 1999, les auteurs de la RFC 2577 ont résumé les vulnérabilités dans la liste de problèmes suivante :

    Attaques cachées (attaques par rebond)

    Attaques frauduleuses

    Attaques par force brute

    Capture de paquets, reniflage

    Protection du nom d'utilisateur

    Vol de port

FTP ne peut pas crypter son trafic, toutes les transmissions sont en texte clair, de sorte que les noms d'utilisateur, mots de passe, commandes et données peuvent être lus par toute personne capable d'intercepter le paquet sur le réseau. Ce problème est typique de nombreuses spécifications de protocole Internet (notamment SMTP, Telnet, POP, IMAP) développées avant la création de mécanismes de cryptage tels que TLS et SSL. La solution habituelle à ce problème consiste à utiliser des versions "sécurisées", protégées par TLS, des protocoles vulnérables (FTPS pour FTP, TelnetS pour Telnet, etc.) ou un autre protocole plus sécurisé, tel que SFTP/SCP, fourni avec la plupart des protocoles sécurisés. Implémentations du protocole Shell .

SûrFTP

Il existe plusieurs méthodes de transfert sécurisé de fichiers, appelées à un moment ou à un autre « FTP sécurisé » : FTPS, SFPS, FTP sur SSH.

Explicit FTPS est une extension de la norme FTP qui permet aux clients d'exiger que la session FTP soit cryptée. Ceci est mis en œuvre par l'envoi de la commande "AUTH TLS". Le serveur a la possibilité d'autoriser ou de rejeter les connexions qui ne demandent pas TLS. Cette extension de protocole est définie dans la RFC 4217. Implicit FTPS est une norme héritée pour FTP qui nécessite l'utilisation d'une connexion SSL ou TLS. Cette norme était censée utiliser des ports différents du FTP normal.

SFTP, ou « SSH File Transfer Protocol », n'est pas lié au FTP, sauf qu'il transfère également des fichiers et dispose d'un ensemble similaire de commandes pour les utilisateurs. SFTP, ou FTP sécurisé, est un programme qui utilise SSH (Secure Shell) pour transférer des fichiers. Contrairement au FTP standard, il crypte à la fois les commandes et les données, empêchant ainsi la transmission ouverte des mots de passe et des informations sensibles sur le réseau. SFTP a des fonctionnalités similaires à FTP, mais comme il utilise un protocole différent, les clients FTP standard ne peuvent pas communiquer avec un serveur SFTP et vice versa.

FTPà traversSSH(PasSFTP)

FTP sur SSH (et non SFTP) fait référence à la pratique consistant à tunneliser une session FTP standard via une connexion SSH. Étant donné que FTP utilise plusieurs connexions TCP, le tunneling via SSH est particulièrement difficile. Lorsque de nombreux clients SSH tentent d'établir un tunnel pour le canal de contrôle (la connexion client-serveur d'origine sur le port 21), seul ce canal sera protégé ; lors du transfert de données, le logiciel FTP à chaque extrémité établira de nouvelles connexions TCP (canaux de données) qui contourneront la connexion SSH et perdront ainsi leur intégrité.

Sinon, le logiciel client SSH doit avoir une certaine connaissance de FTP pour surveiller et réécrire les messages du flux de contrôle FTP et ouvrir de manière autonome de nouvelles redirections pour le flux de données FTP.

FTP sur SSH est parfois appelé FTP sécurisé ; mais il ne faut pas le confondre avec d'autres méthodes telles que SSL/TLS (FTPS). D'autres méthodes de transfert de fichiers utilisant SSH et non liées à FTP sont SFTP et SCP ; dans chacun d'eux, les informations d'identification et les données des fichiers sont toujours protégées par le protocole SSH.

FXP (File eXchange Protocol) est un moyen de transférer des fichiers directement entre deux serveurs FTP sans les télécharger sur votre ordinateur. Dans une session FXP, le client ouvre deux connexions FTP vers deux serveurs différents, demandant un fichier au premier serveur, en spécifiant l'adresse IP du deuxième serveur dans la commande PORT.

Un avantage incontestable de la prise en charge du standard FXP est que les utilisateurs finaux souhaitant copier des fichiers d'un serveur FTP à un autre ne sont plus soumis aux limitations de bande passante de leur propre connexion Internet. Il n'est pas nécessaire de télécharger un fichier vous-même, puis de le télécharger sur un autre serveur FTP. Ainsi, le temps de transfert des fichiers dépendra uniquement de la vitesse de connexion entre deux serveurs FTP distants, qui dans la plupart des cas est évidemment supérieure à celle « utilisateur ».

FXP a commencé à être utilisé par des attaquants pour attaquer d'autres serveurs : la commande PORT spécifie l'adresse IP et le port du service attaqué sur l'ordinateur de la victime, et les commandes RETR/STOR accèdent à ce port au nom du serveur FTP, et non de l'attaquant. machine, qui a permis d'organiser des attaques DDoS à grande échelle en utilisant plusieurs serveurs FTP à la fois, ou de contourner le système de sécurité de l'ordinateur de la victime s'il s'appuie uniquement sur la vérification IP du client et que le serveur FTP utilisé pour l'attaque est situé sur un site de confiance réseau ou passerelle. De ce fait, presque tous les serveurs vérifient désormais que l'adresse IP spécifiée dans la commande PORT correspond à l'adresse IP du client FTP et, par défaut, y interdisent l'utilisation d'adresses IP tierces. Par conséquent, l'utilisation de FXP n'est pas possible lorsque vous travaillez avec des serveurs FTP publics.

Commandes de base

    ABOR – Abandonner le transfert de fichiers

    CDUP - Changez le répertoire pour un répertoire supérieur.

    CWD - Changer de répertoire.

    DELE - Supprimer un fichier (nom de fichier DELE).

    EPSV - Entrez en mode passif étendu. Utilisé à la place de PASV.

    AIDE - Affiche une liste des commandes acceptées par le serveur.

    LISTE - Renvoie une liste de fichiers dans un répertoire. La liste est envoyée via une connexion de données.

    MDTM - Renvoie l'heure de modification du fichier.

    MKD - Créez un répertoire.

    NLST - Renvoie une liste de fichiers dans un répertoire dans un format plus court que LIST. La liste est envoyée via une connexion de données.

    NOOP - Opération à vide

    PASV - Entrez en mode passif. Le serveur renverra l'adresse et le port auxquels vous devez vous connecter pour collecter les données. Le transfert commencera lorsque les commandes suivantes seront saisies : RETR, LIST, etc.

    PORT - Entrez en mode actif. Par exemple PORT 12,34,45,56,78,89. Contrairement au mode passif, le serveur lui-même se connecte au client pour transférer les données.

    PWD - Renvoie le répertoire actuel.

    QUITTER - Déconnecter

    REIN - Réinitialiser la connexion

    RETR - Télécharger le fichier. RETR doit être précédé d'une commande PASV ou PORT.

    RMD - Supprimer le répertoire

    RNFR et RNTO - Renommez le fichier. RNFR - quoi renommer, RNTO - quoi renommer.

    SIZE - Renvoie la taille du fichier

    STOR - Télécharger le fichier. STOR doit être précédé d'une commande PASV ou PORT.

    SYST - Renvoie le type de système (UNIX, WIN, ...)

    TYPE - Définissez le type de transfert de fichier (binaire, texte)

    UTILISATEUR - Nom d'utilisateur pour se connecter au serveur

FTP est un protocole permettant de transférer des données de l'ordinateur d'un utilisateur vers un serveur, d'un site Web vers un disque dur ou entre serveurs. Il est apparu bien avant HTTP. Les utilisateurs peuvent s'authentifier et effectuer les actions souhaitées de manière anonyme, que cette fonctionnalité soit fournie. Il existe aujourd'hui des programmes spécialisés pour le transfert de données via FTP et des programmes de développement Web avec une fonction d'échange de données intégrée.

Pourquoi avez-vous besoin de FTP ?

Avec lui, vous pouvez copier des fichiers de votre ordinateur vers le serveur et du serveur vers votre ordinateur. L'un des avantages de l'utilisation de FTP est que vous pouvez télécharger plusieurs documents en même temps. Certains programmes permettent d'éditer des fichiers directement sur l'hébergement. La fenêtre client standard est divisée en deux parties :

  • le premier affiche tout ce qui est téléchargé sur le serveur ;
  • dans le second - tout ce qui se trouve sur l'ordinateur.

En plus de cela, des fenêtres auxiliaires sont utilisées. L'utilisateur sélectionne le document qu'il souhaite placer sur l'hébergement et le transfère. Avant de faire cela, il doit se connecter. Les données sont spécifiées au format : @nom de la ressource.nom de domaine.

Certains hébergeurs Web donnent accès au site via des programmes tels que des gestionnaires de fichiers. Certains navigateurs intègrent déjà une fonction similaire. Il existe également des composants spéciaux qui peuvent fonctionner avec FTP.


Vulnérabilités

FTP est un protocole très ancien. Il est antérieur à HTTP et n’a pas été conçu pour être sécurisé. C'est pour cela qu'il a beaucoup de problèmes en défense. Voici les plus basiques :

  • attaques par usurpation d'identité ;
  • interception des données des utilisateurs ;
  • reniflement;
  • capture de port.

Les fichiers ne sont pas cryptés lorsqu'ils sont transférés via FTP. En conséquence, toutes les commandes, noms d'utilisateur et mots de passe peuvent être interceptés par des attaquants. Pour cela, des versions sécurisées sont utilisées, par exemple pour FTP - c'est FTPS.

Transfert de données sécurisé

Il existe les méthodes suivantes pour envoyer des données protégées contre les attaques de pirates : FTPS, SFTP et transfert FTP via SSH. Avec FTPS, vous pouvez protéger votre session. Le serveur FTP reçoit la commande AUTH TLS puis rejette les connexions non chiffrées.


SFTP a une liste de commandes similaire à FTP. Il utilise le protocole SSH, qui crypte tout le trafic. Les commandes et les données sont codées de cette manière. En conséquence, tous les mots de passe et autres informations non destinés à des tiers ne sont pas transmis en texte clair.

Une autre façon de transférer via le protocole SSH consiste à tunneliser la session via une connexion SSH.

Connexion et échange de données

Il existe deux types de travaux possibles :

  • actif;
  • passif.

Ils diffèrent par la manière dont la connexion est établie. La méthode active suppose que le programme crée une connexion TCP au serveur et envoie l'adresse IP et le port requis. Le passif est nécessaire lorsque ces connexions sont bloquées par un pare-feu. Ensuite, le serveur renvoie l'adresse et le port, puis l'utilisateur utilise les données reçues pour se connecter.

Dans les paramètres FTP, vous pouvez sélectionner les modes de transfert suivants :

  • en ligne;
  • bloc;
  • comprimé.

Lorsque vous sélectionnez le premier mode, les données sont envoyées sous forme de flux continu. Le traitement est effectué via TCP. En mode normal, les données sont segmentées et, en règle générale, envoyées sous la forme suivante : bloc d'en-tête, nombre d'octets, champ de données. Dans la méthode compressée, toutes les données sont compressées à l'aide d'un seul algorithme et sont transmises beaucoup plus rapidement car l'objet pèse moins.

Autorisation

Pour identifier l'utilisateur et ensuite attribuer des droits de gestion de fichiers, le schéma nom d'utilisateur/mot de passe est utilisé. Le nom est envoyé avec la commande USER et le mot de passe est envoyé avec PASS.


Le serveur accepte ces données si elles correspondent à celles spécifiées dans la base de données. Ensuite, le client reçoit une invitation, après quoi la session commence. Parfois, le serveur prend en charge la possibilité de se connecter sans informations d'identification. Généralement, un accès limité est fourni pour de telles connexions, en utilisant un nom standard, tel qu'anonyme. Mais le plus souvent, pour l'autorisation, vous devez saisir une adresse e-mail valide, qui sera ensuite utilisée pour vous connecter.

Différence avec le protocole http

L'une des caractéristiques frappantes de FTP réside dans les connexions multiples, dans lesquelles le serveur reçoit des commandes et envoie une réponse sur un canal, et transmet des données via d'autres. Grâce à cela, vous pouvez télécharger ou télécharger plusieurs fichiers en même temps.


La réduction des coûts de trafic et, par conséquent, la réduction du temps d'échange de données sont réalisées grâce au mode de transmission binaire. Le travail commence après l'entrée du client dans la session et toutes les opérations ultérieures sont effectuées dans son cadre. C'est l'une des caractéristiques distinctives, car le protocole HTTP ne mémorise pas les informations sur les utilisateurs enregistrés - cette fonction est exécutée par des méthodes externes.

La communication ordinateur-client s'effectue par défaut sur le port 21 et sert à la gestion. Une deuxième connexion de données est ouverte sur le port vingtième ou sur tout autre port correctement configuré.

Comment travailler avec des fichiers

Il existe des clients FTP pour travailler avec le protocole, mais travailler avec eux suit le même principe. Tout ce dont vous avez besoin pour transférer est de faire glisser le document de l'ordinateur de l'utilisateur vers le dossier du serveur ou de suivre les mêmes étapes à l'aide de la ligne de commande.

  1. Une fois la fenêtre principale affichée, vous devez saisir le nom d'hôte, le nom d'utilisateur, le mot de passe et le port dans les champs appropriés.
  2. Après une autorisation réussie, une liste de tout ce qui est téléchargé sur le serveur apparaît.
  3. Vous devez sélectionner l'objet que vous souhaitez télécharger sur le serveur depuis un ordinateur ou d'un serveur vers un ordinateur.
  4. Après avoir marqué le fichier approprié, appelez le menu contextuel à l'aide de RMB, sélectionnez l'action souhaitée : télécharger, ajouter à la tâche, modifier, supprimer, renommer, copier l'adresse, configurer les droits d'accès. Ces fonctionnalités peuvent varier en fonction du programme que vous utilisez.

Il existe un moyen d'échanger directement entre deux serveurs sans téléchargement sur votre ordinateur. Deux connexions à des serveurs différents sont demandées. Sur l'un d'eux, un fichier est sélectionné pour le transfert et l'adresse IP du deuxième serveur est indiquée. Pour cela, FXP est utilisé - protocole d'échange direct.

Le principal avantage de cette méthode est la vitesse de téléchargement élevée. Cela ne dépend pas de la bande passante de la connexion Internet de l'utilisateur qui souhaite transférer le fichier. Le temps nécessaire dépend de la vitesse de connexion entre les serveurs FTP distants. En règle générale, il est évidemment plus grand que celui de l'utilisateur.

Il convient de noter que ce protocole commence à être utilisé par des attaquants pour lancer des attaques sur d'autres serveurs. Pour éviter de telles actions, l'adresse IP est désormais vérifiée et si une divergence est détectée, elle est bloquée.

Connexion FTP via navigateur

Pour se connecter, comme lors de l'utilisation de programmes spécialisés, l'utilisateur doit disposer d'un identifiant, d'un mot de passe et d'une adresse IP. La connexion elle-même s'effectue à l'aide de la ligne de commande. Pour ce faire, vous devez saisir une adresse au format suivant : ftp://login : mot de passe du serveur@adresse ip. Par exemple, ftp://monnom : [email protégé]. Si la connexion réussit, une liste de tous les documents apparaît. Généralement, les fichiers du site sont stockés dans le dossier public_html ou www, selon le type d'hébergement.

Pour copier un document, faites-le simplement glisser et déposez-le. Cette méthode ne permet pas de transférer des documents d'un serveur à un autre. Il est facile de modifier les autorisations de lecture/écriture dans le navigateur. Pour ce faire, vous devez cliquer avec le bouton droit sur un fichier qui existe déjà sur le serveur. Une fenêtre de paramètres apparaîtra. Il doit indiquer l'autorisation requise.

FichierZilla

C'est l'un des clients FTP les plus populaires pour Windows. Travailler avec ce programme est assez simple. La fenêtre principale est divisée en cinq parties. Trois d'entre eux affichent la structure des fichiers de l'ordinateur et quatre le serveur. Les champs obligatoires indiquent le login, le mot de passe et le port.


Si vous prévoyez d'utiliser fréquemment une connexion particulière, les informations de connexion sont spécifiées dans le « Gestionnaire du site ». Dans les paramètres, vous pouvez sélectionner l'identification, répartir les informations de connexion dans des dossiers et ajouter un commentaire. Pour transférer un fichier, vous devez le sélectionner et le faire glisser dans la fenêtre de travail, où la structure des fichiers de l'ordinateur est affichée.

Commandant total

Afin de télécharger et de télécharger un fichier à l'aide de « Total Commander », vous devez effectuer la séquence d'actions suivante :

  1. Allez dans l'onglet "Réseau".
  2. Sélectionnez l'élément de menu "Connexion au serveur".
  3. Dans la fenêtre qui apparaît, cliquez sur le bouton "Ajouter".
  4. Spécifiez le nom de connexion, le serveur, le compte, le mot de passe.
  5. Définissez le drapeau "Mode d'échange passif" et cliquez sur OK.
  6. Après cela, marquez la connexion sélectionnée et cliquez sur le bouton « Connecter ».

Ligne de commande

Si l'utilisateur ne souhaite pas utiliser l'interface graphique, même si elle est assez pratique et permet d'exécuter certaines fonctions plus rapidement, il peut utiliser la ligne de commande :

  1. La connexion s'effectue à l'aide de la commande Ouvrir. L'utilisation devrait ressembler à ceci : ouvrez le port ftp.server.com.
  2. Le paramètre port peut être omis si la norme 21 est destinée à être utilisée.
  3. Au lieu de server.com, l'adresse du serveur sur lequel se trouve le site est indiquée.

Pour renommer, utilisez rename, pour changer le répertoire courant, cd est utilisé par défaut, pour sortir il faut entrer close, et pour supprimer - supprimer ou se déconnecter.

Le service de fichiers réseau FTP (File Transfer Protocol) est l'un des premiers services utilisés pour accéder aux fichiers distants. Avant l'avènement du service WWW, il s'agissait du service le plus populaire pour accéder aux données à distance sur Internet et les réseaux IP d'entreprise. Les premières spécifications FTP remontent à 1971. Les serveurs et clients FTP sont disponibles dans presque tous les systèmes d'exploitation UNIX, ainsi que dans de nombreux autres systèmes d'exploitation réseau. Les clients FTP sont aujourd'hui intégrés aux navigateurs Internet, car les archives de fichiers basées sur FTP sont toujours populaires et le navigateur utilise le protocole FTP pour accéder à ces archives.

Le protocole FTP vous permet de déplacer un fichier entier d'un ordinateur distant vers un ordinateur local et vice versa, c'est-à-dire qu'il fonctionne selon le schéma de téléchargement-téléchargement. De plus, il prend en charge plusieurs commandes pour parcourir un répertoire distant et parcourir les répertoires sur un système de fichiers distant. Par conséquent, FTP est particulièrement pratique à utiliser pour accéder aux fichiers dont les données n'ont pas de sens d'être visualisées à distance, mais il est beaucoup plus efficace de déplacer l'intégralité des données vers l'ordinateur client (par exemple, les fichiers des modules exécutables d'application).

Le protocole FTP intègre des moyens primitifs d'authentification des utilisateurs distants basés sur la transmission d'un mot de passe en texte clair sur le réseau. De plus, l'accès anonyme est pris en charge, qui ne nécessite pas de nom d'utilisateur ni de mot de passe, ce qui est plus sécurisé car il n'expose pas les mots de passe des utilisateurs à la menace d'interception.

Le protocole FTP est implémenté selon le schéma client-serveur. Le client FTP se compose de plusieurs modules fonctionnels :

L'interface utilisateur est une interface utilisateur qui accepte les commandes de caractères de l'utilisateur et affiche l'état de la session FTP sur un écran de caractères.

User-Pi est un interpréteur de commandes utilisateur. Ce module interagit avec le module serveur FTP correspondant.

User-DTP est un module qui transfère les données de fichiers à l'aide des commandes reçues du module User-Pi via le protocole client-serveur. Ce module interagit avec le système de fichiers local du client.

Le serveur FTP comprend les modules suivants :

Server-Pi est un module qui reçoit et interprète les commandes transmises sur le réseau par le module User-PL

Server-DTP est un module qui contrôle le transfert des données des fichiers à l'aide des commandes du module Server-PL. Il interagit avec le système de fichiers local du serveur.

Le client et le serveur FTP prennent en charge deux sessions parallèles : une session de contrôle et une session de transfert de données. Une session de contrôle est ouverte lorsqu'une première connexion FTP est établie entre le client et le serveur, et au cours d'une session de contrôle, plusieurs sessions de transfert de données peuvent être effectuées séquentiellement, au cours desquelles plusieurs fichiers sont transférés ou reçus.

Le schéma général d'interaction entre client et serveur est le suivant :

1. Le serveur FTP ouvre toujours le port de contrôle TCP 21 en écoute, en attendant une demande d'établissement d'une session de contrôle FTP provenant d'un client distant.

2. Après avoir établi une connexion de contrôle, le client envoie des commandes au serveur qui spécifient les paramètres de connexion :

nom et mot de passe du client ;

le rôle des participants à la connexion (actifs ou passifs) ;

port de données;

type de transmission;

type de données transmises (données binaires ou code ASCII) ;

3. Après avoir convenu des paramètres, le participant passif à la connexion passe en mode d'attente pour ouvrir une connexion au port de transfert de données. Le participant actif initie cette connexion et commence le transfert de données.

4. Après la fin du transfert de données, la connexion sur les ports de données est fermée, mais la connexion de contrôle reste ouverte. L'utilisateur peut activer une nouvelle session de transfert de données via une connexion de contrôle.

Les ports de transfert de données sont sélectionnés par le client FTP (par défaut, le client peut utiliser le port de session de contrôle pour le transfert de données) et le serveur doit utiliser un port un plus petit que le port client.

Le protocole FTP utilise plusieurs commandes lorsque le client interagit avec le serveur (à ne pas confondre avec les commandes de l'interface utilisateur client utilisées par les humains).

Ces commandes sont divisées en trois groupes :

commandes de contrôle d'accès au système ;

commandes de contrôle de flux ;

Commandes du service FTP.

L'ensemble des commandes de contrôle d'accès comprend les commandes suivantes :

USER -- transmet le nom du client au serveur. Cette commande ouvre une session de contrôle et peut également être émise lorsqu'une session de contrôle est ouverte pour modifier le nom d'utilisateur.

PASS - transmet le mot de passe de l'utilisateur en texte clair.

CWD -- modifie le répertoire actuel sur le serveur.

REIN -- Réinitialise la session de contrôle.

QUITTER -- termine la session de contrôle.

Les commandes de contrôle de flux définissent les paramètres de transfert de données :

PORT -- spécifie l'adresse et le port de l'hôte qui sera le participant actif à la connexion lors du transfert de données. Par exemple, la commande PORT 194,85,135,126,7,205 fait de l'hôte 194.85.135.126 et du port 1997 le participant actif (le calcul du numéro de port n'est pas trivial, mais il est sans ambiguïté).

PASV -- Désigne l'hôte comme participant passif à la connexion de données. En réponse à cette commande, une commande PORT doit être envoyée indiquant l'adresse et le port qui est en mode veille.

TYPE -- spécifie le type de données transmises (code ASCII ou données binaires).

STRU -- définit la structure des données transférées (fichier, enregistrement, page).

MODE -- définit le mode de transmission (flux, blocs, etc.).

Comme le montre la description, le service FTP peut être utilisé pour travailler aussi bien avec des fichiers structurés, divisés en enregistrements ou pages, qu'avec des fichiers non structurés.

Les commandes du service FTP lancent des actions pour transférer des fichiers ou parcourir un répertoire distant :

RETR -- demande un transfert de fichier du serveur vers l'hôte client. Les paramètres de la commande sont le nom du fichier. Un décalage depuis le début du fichier peut également être spécifié - cela vous permet de démarrer le transfert du fichier à partir d'un certain endroit en cas de rupture de connexion inattendue (ce paramètre est utilisé dans la commande reget de l'interface utilisateur).

STOR -- lance le transfert de fichiers du client vers le serveur. Les paramètres sont les mêmes que ceux de la commande RETR.

RNFR et RNTO sont des commandes permettant de renommer un fichier distant. Le premier reçoit l'ancien nom de fichier en argument et le second reçoit le nouveau.

DELE, MKD, RMD, LIST - ces commandes suppriment respectivement un fichier, créent un répertoire, suppriment un répertoire et transmettent une liste de fichiers dans le répertoire actuel.

Chaque commande du protocole FTP est transmise sous forme de texte, une commande par ligne. La ligne se termine par les caractères de code ASCII CR et LF.

L'interface utilisateur du client FTP dépend de son implémentation logicielle. Outre les clients traditionnels fonctionnant en mode caractère, il existe également des shells graphiques qui ne nécessitent pas que l'utilisateur connaisse les commandes de caractères.

Les clients Character prennent généralement en charge l'ensemble de commandes de base suivant :

open hostname -- ouvre une session avec un serveur distant.

bye -- terminez la session avec l'hôte distant et terminez l'utilitaire ftp.

close -- met fin à la session avec l'hôte distant, l'utilitaire ftp continue de fonctionner.

ls (dir) -- imprime le contenu du répertoire distant actuel.

get filename -- copie un fichier distant sur l'hôte local.

put filename -- copie un fichier distant sur un serveur distant.