Dans le tableau ci-dessous, les données transférées sur le port ftp-data (port 20 TCP) sont sur fond coloré, les autres (les données de contrôle) transférées sur le port ftp (port 21 TCP). Ce tableau est complet et comporte aussi les paquets sans données, servant uniquement à l'acquittement des paquets précédents. Vous pouvez trouver le tableau simplifié ici mais sans les explications détaillées de la présente page..
Note : Les ports 20 et 21 UDP sont aussi réservés pour les mêmes usages par l'IANA. En pratique je n'ai jamais vu que des implémentations TCP.
Donc voici le tableau ci-dessous. En 51 paquets, il retrace une connexion FTP complète comportant :
Note : la partie "Données" a été transcrite en libellés clairs et, de plus, redondants avec les information d'adresses IP source et destination. Le but n'était pas de fournir la transcription exacte de ces données. Elles ont souvent été tronquées au contraire. L'objet de ce tableau est seulement de bien montrer les différentes étapes de la séquence. Si vous souhaitez récupérer les données complètes, vous pouvez les consulter ici en texte brut ou encore là au format d'analyzer (l'analyseur de trame de l'université de Turin) ou encore vous promener dans la version html.
Num | Heure | Source ad | Port | Destination ad | Port | Flags | Long |
Données |
---|---|---|---|---|---|---|---|---|
1 | 15h:16m:26s:638640 | 192.168.0.204 | 1387 | 195.98.246.30 | 21 | SYN | 0 | Requête client connexion TCP 21 |
2 | 15h:16m:26s:682210 | 195.98.246.30 | 21 | 192.168.0.204 | 1387 | ACK SYN | 0 | Serveur Ok |
3 | 15h:16m:26s:682418 | 192.168.0.204 | 1387 | 195.98.246.30 | 21 | ACK | 0 | Client Ok |
4 | 15h:16m:26s:736941 | 195.98.246.30 | 21 | 192.168.0.204 | 1387 | ACK PUSH | 897 | Serveur envoie bannière accueil |
5 | 15h:16m:26s:805630 | 192.168.0.204 | 1387 | 195.98.246.30 | 21 | ACK PUSH | 16 | Client commande USER |
6 | 15h:16m:26s:834280 | 195.98.246.30 | 21 | 192.168.0.204 | 1387 | ACK PUSH | 70 | Serveur accepte client |
7 | 15h:16m:26s:841053 | 192.168.0.204 | 1387 | 195.98.246.30 | 21 | ACK PUSH | 5 | Client commande PWD |
8 | 15h:16m:26s:869706 | 195.98.246.30 | 21 | 192.168.0.204 | 1387 | ACK PUSH | 34 | Serveur donne répertoire accueil |
9 | 15h:16m:26s:873616 | 192.168.0.204 | 1387 | 195.98.246.30 | 21 | ACK PUSH | 6 | Client requête SYST |
10 | 15h:16m:26s:899473 | 195.98.246.30 | 21 | 192.168.0.204 | 1387 | ACK PUSH | 19 | Serveur envoie info système |
11 | 15h:16m:26s:906751 | 192.168.0.204 | 1387 | 195.98.246.30 | 21 | ACK PUSH | 8 | Client requête TYPE A |
12 | 15h:16m:26s:934011 | 195.98.246.30 | 21 | 192.168.0.204 | 1387 | ACK PUSH | 23 | Serveur Ok pour ASCII |
13 | 15h:16m:26s:938897 | 192.168.0.204 | 1387 | 195.98.246.30 | 21 | ACK PUSH | 26 | Client veut PORT 192,1 68,0,204,5,108 (=1388) |
14 | 15h:16m:26s:972442 | 195.98.246.30 | 21 | 192.168.0.204 | 1387 | ACK PUSH | 29 | Serveur Ok pour le port client |
15 | 15h:16m:26s:976306 | 192.168.0.204 | 1387 | 195.98.246.30 | 21 | ACK PUSH | 6 | Client veut LIST du répertoire |
16 | 15h:16m:27s:197804 | 195.98.246.30 | 21 | 192.168.0.204 | 1387 | ACK | 0(6) | |
17 | 15h:16m:32s:997726 | 195.98.246.30 | 20 | 192.168.0.204 | 1388 | SYN | 0 | Serveur initie connexion TCP-DATA 1388 |
18 | 15h:16m:32s:998042 | 192.168.0.204 | 1388 | 195.98.246.30 | 20 | ACK SYN | 0 | Client Ok |
19 | 15h:16m:33s:049376 | 195.98.246.30 | 20 | 192.168.0.204 | 1388 | ACK | 0 | Serveur Ok |
20 | 15h:16m:33s:052204 | 195.98.246.30 | 21 | 192.168.0.204 | 1387 | ACK PUSH | 29 | Serveur info connexion port 1388 |
21 | 15h:16m:33s:076338 | 195.98.246.30 | 20 | 192.168.0.204 | 1388 | ACK PUSH | 859 | Serveur
répond à LIST lrwxr-xr-x 1 0 0 19 Jan 28 12:53 Abuledu -> pub/Mirror/Abuledu/..lrwxr-xr-x 1 0 0 21 Jan 28 12:52 Debian -> pub/Mirror/debian-cd/ lrwxr-xr-x 1 0 0 18 Jan 22 09:01 OpenBSD -> pub/Mirror/OpenBSD..-rw-r--r-- 1 0 0 744 Mar 7 15:30 README lrwxr-xr-x 1 0 0 15 Jan 27 14:56 SLIS -> pub/Mirror/SLIS..lrwxr-xr-x 1 0 0 19 Jan 27 14:56 SambaEdu -> pub/Mirror/SambaEdu lrwxr-xr-x 1 0 0 15 Jan 27 15:48 Slcd -> pub/Mirror/Slcd..lrwxr-xr-x 1 0 0 23 Jan 28 13:08 debian-educ -> pub/Mirror/debian-educ/ dr-xr-xr-x 5 0 0 512 Mar 7 15:30 pub..drwxr-xr-x 5 0 0 512 Mar 7 15:28 sms..drwxr-xr-x 3 0 0 512 Mar 7 15:42 tice.. |
22 | 15h:16m:33s:077288 | 195.98.246.30 | 20 | 192.168.0.204 | 1388 | ACK FIN | 0 | |
23 | 15h:16m:33s:077546 | 192.168.0.204 | 1388 | 195.98.246.30 | 20 | ACK | 0 | |
24 | 15h:16m:33s:159341 | 192.168.0.204 | 1388 | 195.98.246.30 | 20 | ACK FIN | 0 | |
25 | 15h:16m:33s:181523 | 195.98.246.30 | 20 | 192.168.0.204 | 1388 | ACK | 0 | |
26 | 15h:16m:33s:234974 | 192.168.0.204 | 1387 | 195.98.246.30 | 21 | ACK | 0 | |
27 | 15h:16m:33s:260857 | 195.98.246.30 | 21 | 192.168.0.204 | 1387 | ACK PUSH | 40 | Serveur
info 226-Option s: -l ..226 11 matches total |
28 | 15h:16m:33s:435263 | 192.168.0.204 | 1387 | 195.98.246.30 | 21 | ACK | 0 | |
29 | 15h:16m:36s:150051 | 192.168.0.204 | 1387 | 195.98.246.30 | 21 | ACK PUSH | 8 | Client requête TYPE I. |
30 | 15h:16m:36s:200464 | 195.98.246.30 | 21 | 192.168.0.204 | 1387 | ACK PUSH | 30 | Serveur Ok pour 8-bit binaire |
31 | 15h:16m:36s:205819 | 192.168.0.204 | 1387 | 195.98.246.30 | 21 | ACK PUSH | 26 | Client veut PORT 192,1 68,0,204,5,109 (=1389) |
32 | 15h:16m:36s:236657 | 195.98.246.30 | 21 | 192.168.0.204 | 1387 | ACK PUSH | 29 | Serveur Ok pour le port client |
33 | 15h:16m:36s:240679 | 192.168.0.204 | 1387 | 195.98.246.30 | 21 | ACK PUSH | 13 | Client
requête fichier RETR README |
34 | 15h:16m:36s:264995 | 195.98.246.30 | 20 | 192.168.0.204 | 1389 | SYN | 0 | Serveur initie connexion TCP-DATA 1389 |
35 | 15h:16m:36s:265309 | 192.168.0.204 | 1389 | 195.98.246.30 | 20 | ACK SYN | 0 | Client Ok |
36 | 15h:16m:36s:288669 | 195.98.246.30 | 20 | 192.168.0.204 | 1389 | ACK | 0 | Serveur Ok |
37 | 15h:16m:36s:291699 | 195.98.246.30 | 21 | 192.168.0.204 | 1387 | ACK PUSH | 29 | Serveur info connexion port 1389 |
38 | 15h:16m:36s:311345 | 195.98.246.30 | 20 | 192.168.0.204 | 1389 | ACK PUSH | 744 | Serveur
envoie le fichier ############## ##############################################" Serveur FTP de l'acad.mie de Cr.teil ############################################################" Derni.re r.organisation de l'arborescence : 26 F.vrier 2003..Mirror .------> OpenBSD....Debian-cd . .SLIS... .SambaEdu.. . .SLCD... .Debian-educ... .AbulEdu... ..applications .-----> openoffice .......--> 1.0.1..... .--> 1.0.2. .--> Dictionaries..pedagogie.----->.B2i...tice..----->.reseaux.. .......-->.ARCHIVES......-->.GestionReseau......-->.NOVELL......-->.Win95-98......-->.WinNT......-->.cablage .-->.crinet......-->.depot......-->.divers......-->.internet -->.logiciels......-->.outils......-->.peda......-->.strasbourg.sms..---->.grisms....liste....rnrsms. |
39 | 15h:16m:36s:312339 | 195.98.246.30 | 20 | 192.168.0.204 | 1389 | ACK FIN | 0 | |
40 | 15h:16m:36s:312464 | 192.168.0.204 | 1389 | 195.98.246.30 | 20 | ACK | 0 | |
41 | 15h:16m:36s:439549 | 192.168.0.204 | 1387 | 195.98.246.30 | 21 | ACK | 0 | |
42 | 15h:16m:36s:465402 | 195.98.246.30 | 21 | 192.168.0.204 | 1387 | ACK PUSH | 95 | Serveur
info 226-File s uccessfully transferred..226 0.019 seconds (measured here), 38.49 Kbytes per second.. |
43 | 15h:16m:36s:470765 | 192.168.0.204 | 1389 | 195.98.246.30 | 20 | ACK FIN | 0 | |
44 | 15h:16m:36s:493494 | 195.98.246.30 | 20 | 192.168.0.204 | 1389 | ACK | 0 | |
45 | 15h:16m:36s:639836 | 192.168.0.204 | 1387 | 195.98.246.30 | 21 | ACK | 0 | |
46 | 15h:16m:38s:312403 | 192.168.0.204 | 1387 | 195.98.246.30 | 21 | ACK PUSH | 6 | Client requête QUIT |
47 | 15h:16m:38s:365956 | 195.98.246.30 | 21 | 192.168.0.204 | 1387 | ACK PUSH | 99 | Serveur
Ok 221-Goodby e. You uploaded 0 and downloaded 1 kbytes...221 Logout - CPU time spent: 0.000 seconds... |
48 | 15h:16m:38s:367978 | 195.98.246.30 | 21 | 192.168.0.204 | 1387 | ACK FIN | 0(6) | |
49 | 15h:16m:38s:368174 | 192.168.0.204 | 1387 | 195.98.246.30 | 21 | ACK | 0 | |
50 | 15h:16m:38s:369674 | 192.168.0.204 | 1387 | 195.98.246.30 | 21 | ACK FIN | 0 | |
51 | 15h:16m:38s:405609 | 195.98.246.30 | 21 | 192.168.0.204 | 1387 | ACK | 0(6) |
Num | Source ad | Port | Destination ad | Port | Flags | Long |
Données |
---|---|---|---|---|---|---|---|
1 | 192.168.0.204 | 1387 | 195.98.246.30 | 21 | SYN | 0 | Requête client connexion TCP 21 |
2 | 195.98.246.30 | 21 | 192.168.0.204 | 1387 | ACK SYN | 0 | Serveur Ok |
3 | 192.168.0.204 | 1387 | 195.98.246.30 | 21 | ACK | 0 | Client Ok |
Le client envoie un paquet SYN, le serveur répond par SYN/ACK et le client confirme par ACK. Ceci est une séquence très classique d'établissement de connexion TCP. Ensuite le serveur envoie ou non une bannière d'accueil (paquet 4, ici) ; cela dépend de la configuration du serveur. Tout ceci se passe sur le port de contrôle FTP (TCP 21).
Num | Source ad | Port | Destination ad | Port | Flags | Long |
Données |
---|---|---|---|---|---|---|---|
5 | 192.168.0.204 | 1387 | 195.98.246.30 | 21 | ACK PUSH | 16 | Client commande USER |
6 | 195.98.246.30 | 21 | 192.168.0.204 | 1387 | ACK PUSH | 70 | Serveur accepte client |
7 | 192.168.0.204 | 1387 | 195.98.246.30 | 21 | ACK PUSH | 5 | Client commande PWD |
8 | 195.98.246.30 | 21 | 192.168.0.204 | 1387 | ACK PUSH | 34 | Serveur donne répertoire accueil |
Le client envoie la commande USER (paquet 5) avec son nom de connexion, ou anonymous pour une connexion anonyme (ce qui était le cas ici). Le serveur répond tout de suite (paquet 6), ici, car il accepte la commande USER seule. D'autres serveurs requièrent l'envoi d'un mot de passe après la commande USER même pour le compte anonyme. Simplement, le mot de passe envoyé n'a pas d'importance (la nétiquette prévoit de fournir son adresse e-mail). Tout est une question de configuration et de type de serveur. Ici le client envoie tout de même la commande mot de passe (paquet 7) et le serveur répond en indiquant quel est le répertoire courant (paquet 8).
Dans l'exemple ci-dessus, la connexion est suivie d'une demande de renseignement sur le type du système, envoyée par le client (paquets 9 et 10).
Elle commence par une commande client précisant le type de transfert qui va être demandé. Ici il désire un transfert ASCII ce qui va impliquer la prise en charge correcte des retours à la ligne quel que soit les systèmes source et destination.
11 | 192.168.0.204 | 1387 | 195.98.246.30 | 21 | ACK PUSH | 8 | Client requête TYPE A |
12 | 195.98.246.30 | 21 | 192.168.0.204 | 1387 | ACK PUSH | 23 | Serveur Ok pour ASCII |
Attention c'est ce qui suit qui va caractériser l'usage du mode actif. Le client va d'abord indiquer au serveur le port sur lequel il veut être contacté pour le transfert de données (ici le 1388).
13 | 192.168.0.204 | 1387 | 195.98.246.30 | 21 | ACK PUSH | 26 | Client veut PORT 192,1 68,0,204,5,108 (=1388) |
14 | 195.98.246.30 | 21 | 192.168.0.204 | 1387 | ACK PUSH | 29 | Serveur Ok pour le port client |
Ensuite le client envoie sa requête de données (ci-dessous il demande la liste du répertoire courant). Le paquet de réponse 15 ne contient aucune donnée TCP il ne sert qu'à acquitter le précédent.
Note : le nombre (6) indique qu'il y a 6 octets de "données" après l'en-tête TCP pour que le paquet ait bien la longueur minimum requise. C'est ce qu'on appelle du bourrage. Cela ne correspond à aucune donnée réelle.
15 | 192.168.0.204 | 1387 | 195.98.246.30 | 21 | ACK PUSH | 6 | Client veut LIST du répertoire |
16 | 195.98.246.30 | 21 | 192.168.0.204 | 1387 | ACK | 0(6) |
Attention voilà la caractéristique du FTP en mode actif. Regardez bien ci-dessous c'est le serveur qui va initier la connexion TCP pour le transfert de données sur le port 20 (ftp-data).
17 | 195.98.246.30 | 20 | 192.168.0.204 | 1388 | SYN | 0 | Serveur initie connexion TCP-DATA 1388 |
18 | 192.168.0.204 | 1388 | 195.98.246.30 | 20 | ACK SYN | 0 | Client Ok |
19 | 195.98.246.30 | 20 | 192.168.0.204 | 1388 | ACK | 0 | Serveur Ok |
Puis indiquer sur le port de contrôle (21) que la connexion a bien été établie sur le port demandé par le client.
20 | 195.98.246.30 | 21 | 192.168.0.204 | 1387 | ACK PUSH | 29 | Serveur info connexion port 1388 |
Ensuite il expédie les données sur cette connexion établie sur son port 20 (ftp-data).
21 | 195.98.246.30 | 20 | 192.168.0.204 | 1388 | ACK PUSH | 859 | Serveur
répond à LIST lrwxr-xr-x 1 0 0 19 Jan 28 12:53 Abuledu -> pub/Mirror/Abuledu/..lrwxr-xr-x 1 0 0 21 Jan 28 12:52 Debian -> pub/Mirror/debian-cd/ lrwxr-xr-x 1 0 0 18 Jan 22 09:01 OpenBSD -> pub/Mirror/OpenBSD..-rw-r--r-- 1 0 0 744 Mar 7 15:30 README lrwxr-xr-x 1 0 0 15 Jan 27 14:56 SLIS -> pub/Mirror/SLIS..lrwxr-xr-x 1 0 0 19 Jan 27 14:56 SambaEdu -> pub/Mirror/SambaEdu lrwxr-xr-x 1 0 0 15 Jan 27 15:48 Slcd -> pub/Mirror/Slcd..lrwxr-xr-x 1 0 0 23 Jan 28 13:08 debian-educ -> pub/Mirror/debian-educ/ dr-xr-xr-x 5 0 0 512 Mar 7 15:30 pub..drwxr-xr-x 5 0 0 512 Mar 7 15:28 sms..drwxr-xr-x 3 0 0 512 Mar 7 15:42 tice.. |
Les paquets suivants terminent la connexion de données entre le port 20 du serveur et le port 1388 du client (paquets 22 à 25).
22 | 195.98.246.30 | 20 | 192.168.0.204 | 1388 | ACK FIN | 0 | |
23 | 192.168.0.204 | 1388 | 195.98.246.30 | 20 | ACK | 0 | |
24 | 192.168.0.204 | 1388 | 195.98.246.30 | 20 | ACK FIN | 0 | |
25 | 195.98.246.30 | 20 | 192.168.0.204 | 1388 | ACK | 0 |
Suit l'expédition d'un compte-rendu d'exécution de la commande du serveur vers le client.
27 | 195.98.246.30 | 21 | 192.168.0.204 | 1387 | ACK PUSH | 40 | Serveur
info 226-Option s: -l ..226 11 matches total |
La même séquence recommence (paquets 29 à 45) pour le téléchargement d'un fichier. Notez le changement de port demandé par le client : 1389 cette fois. Le client impliqué (WS_FTP95 LE version 5.08) utilise visiblement des séquences de numéros de ports successifs.
La session FTP se termine avec la commande QUIT (paquet 46) suivie des paquets de fin de connexion TCP sur le port de contrôle FTP (TCP 21).
46 | 192.168.0.204 | 1387 | 195.98.246.30 | 21 | ACK PUSH | 6 | Client requête QUIT |
47 | 195.98.246.30 | 21 | 192.168.0.204 | 1387 | ACK PUSH | 99 | Serveur
Ok 221-Goodby e. You uploaded 0 and downloaded 1 kbytes...221 Logout - CPU time spent: 0.000 seconds... |
48 | 195.98.246.30 | 21 | 192.168.0.204 | 1387 | ACK FIN | 0(6) | |
49 | 192.168.0.204 | 1387 | 195.98.246.30 | 21 | ACK | 0 | |
50 | 192.168.0.204 | 1387 | 195.98.246.30 | 21 | ACK FIN | 0 | |
51 | 195.98.246.30 | 21 | 192.168.0.204 | 1387 | ACK | 0(6) |
Voilà c'est fini.
Pour résumer les notions importantes du FTP en mode actif.
![]() |
Dernière mise à jour : 09.03.2003 |
![]() |
---|