next up previous contents Next: Protocole datagramme utilisateur (UDP). Up: TCP et UDP. Previous: L'en-tête TCP.   Table des matières  


27.2 Un exemple de session TCP.

Il est aisé de visualiser la manière dont TCP fonctionne en utilisant telnet. Vous avez certainement l'habitude d'utiliser telnet pour vous connecter à des systèmes distants. En réalité, telnet est un programme générique pour établir toute ``connexion'' (ou socket) TCP. En l'occurrence, nous allons tenter une connexion à la page web de cnn.com.

Nous devons d'abord obtenir l'adresse IP de cnn.com: [NdT: il se peut que la commande soit hostx cnn.com; ce qui retournera cnn.com    A    adresse_IP_decimale.]

[root@cericon]# host cnn.com  
cnn.com has address 207.25.71.20


A présent, nous pouvons exécuter dans une autre fenêtre:

[root@cericon]# tcpdump \ 
'( src 192.168.3.9 and dst 207.25.72.20 ) or ( src 207.25.71.20 and dst 192.168.3.9 )' 
Kernel filter, protocol ALL, datagram packet socket 
tcpdump:listening on all devices


ce qui indique à la machine d'afficher tous les paquets ayant pour sources (src) et destinations (dst) notre adresse et celle de CNN.

A présent, nous pouvons utiliser le protocole HTTP pour capter la page principale. Tapez la commande HTTP GET /HTTP/1.0 et pressez deux fois la touche Image key-enter (comme cela est requis dans le protocole HTTP). Les quelques premières et dernières lignes sont données ci-dessous:

[root@cericon]# telnet 207.25.71.20 80 
Trying 207.25.71.20... 
Connected to 207.25.71.20. 
Escape character is '^]'. 
GET / HTTP/1.0 
 
HTTP/1.0 200 OK 
Server: Netscape-Enterprise/2.01 
Date: Tue, 18 Apr 2000 10:55:14 GMT 
Set-cookie:CNNid=cf19472c-23286-956055314-2; expires=Wednesday, 30-Dec-2037 16:00:00 
                                        GMT;path=/; domain=.cnn.com 
 
Last-modified: Tue, 18 Apr 2000 10:55:14 GMT 
Content-type: text/html 
 
<HTML> 
<HEAD> 
       <TITLE>CNN.com</TITLE> 
       <META http-equiv=''REFRESH'' conntent=''1800''> 
 
       <!-CSSDATA:956055234-> 
       <SCRIPT src=''/virtual/2000/code/main.js'' language=''javascript''></SCRIPT> 
       <LINK rel=''stylesheet'' href=''/virtual/2000/style/main.css'' type=''text/css''> 
       <SCRIPT language=''javascript'' type=''text/javascript''> 
              <!-// 
              if ((navigator.platform=='MacPPC')&&(navigator.ap 
 
.............. 
..............  
 
</BOBY> 
</HTML> 
connexion closed by foreign host. 


Les commandes décrites ci-dessus affichent la première page du site web de CNN en format HTML brut. Il est facile de la copier dans un fichier puis de la consulter hors-ligne.

Dans l'autre fenêtre, tcpdump est en train de nous montrer quels paquets sont échangés. tcpdump facilite la lecture en affichant les noms d'hôte au lieu des adresses IP et aussi les lettres www plutôt que le numéro de port 80. Le port choisi aléatoirement (au-delà de 1024) est en l'occurrence 4064.

[root@cericon]# tcpdump \ 
'(src 192.168.3.9 and dst 207.25.71.20) or (src 207.25.71.20 and dst 192.168.1.3)' 
Kernel filter, protocol ALL, datagram packet socket 
tcpdump: listening on all devices 
12.52.35.467121 eth0 > cericon.cranzgot.co.za.4064 > www1.cnn.com.www: 
   S 2463192134:2463192134(0) win 32120 <mss 1460,sackOK,timestamp 154031689 0,nop,wscale 0 
12.52.35.964703 eth0 < www1.cnn.com> cericon.cranzgot.co.za.4064: 
   S 4182178234:4182178234(0) ack 2463192135 win 10136 <nop,nop,timestamp 1075172823 154031 
12:52:35.964791 eth0 > cericon.cranzgot.co.za4064 > www1.cnn.com.www: 
   . 1:1(0) ack 1 win 32120 <nop,nop,timestamp 154031739 1075172823> (DF) 
12:52:46.413043 eth0 > cericon.cranzgot.co.za.4064 > www1.cnn.com.www: 
   P 1:17(16) ack 1 win 32120 <nop,nop,timestamp 154032784 1075172823> (DF) 
12:52:46.908156 eth0 < www1.cnn.com.www > cericon.cranzgot.co.za.4064: 
   . 1:1(0) ack 17 win 10136 <nop,nop,timestamp 1075173916 154032784> 
12:52:49.259870 eth0 > cericon.cranzgot.co.za.4064 > www1.cnn.com.www: 
   P 17:39(2) ack 1 win 32120 <nop,nop,timestamp 154033068 1075173916> (DF) 
12:52:49.886846 eth0 < www1.cnn.com.www > cericon.cranzgot.co.za.4064: 
   P 1:278(77) ack 19 win 10136 <nop,nop,timestamp 1075174200 154033068> 
12:52:49.887039 eth0 > cericon.cranzgot.co.za.4064 > www1.cnn.com.www: 
   . 19:19(0) ack 278 win 31856 <nop,nop,timestamp 154033131 1075174200> (DF) 
12:52:50.053628 eth0 < www1.cnn.com.www > cericon.cranzgot.co.za.4064: 
   . 278:1176(898) ack 19 win 10136 <nop,nop,timestamp 1075174202 154033068> 
12:52:50.160740 eth0 < www1.cnn.com .www > cericon.cranzgot.co.za.4064: 
   P1176:1972(796) ack19 win 10136 <nop,nop,timestamp 1075174202 154033068> 
12:52:50.220067 eth0 > cericon.cranzgot.co.za.4064 > www1.cnn.com.www:  
   . 19:19(0) ack 1972 win 31856 <nop,nop,timestamp 154033156 1075174202> (DF) 
12:52:50.824143 eth0 < www1.cnn.com.www > cericon.cranzgot.co.za.4064: 
   . 1972:3420(1448) ack 19 win 10136 <nop,nop,timestamp 1075174262 154033131> 
12:52:51.021465 eth0 < www1.cnn.com.www > cericon.cranzgot.co.za.4064: 
   . 3420:4868(1448) ack 19 win 10136 <nop,nop,timestamp 1075174295 154033165> 
 
.............. 
.............. 
 
12:53:13.856919 eth0 > cericon.cranzgot.co.za.4064 > www.cnn.com.www: 
   . 19:19(0) ack 53204 win 30408 <nop,nop,timestamp 154035528 1075176560> (DF) 
12:53:14.722584 eth0 < www1.cnn.com.www > cericon.cranzgot.co.za.4064: 
   ; 53204:54652(1448) ack 19 win 10136 <nop,nop,timestamp 1075176659 154035528> 
12:53:14722738 eth0 > cericon.cranzgot.co.za.4064 > www1.cnn.com.www: 
   . 19:19(0) ack 54652 win 30408 <nop,nop,timestamp 154035615 1075176659> (DF) 
12:53:14.912561 eth0 < www1.cnn.com.www > cericon.cranzgot.co.za.4064: 
   . 54652:56100(1448) ack 19 win 10136 <nop,nop,timestamp 1075176659 154035528> 
12:53:14.912706 eth0 > cericon.cranzgot.co.za.4064 > www1.cnn.com.www: 
   . 19:19(0) ack 58500 win 30408 <nop,nop,timestamp 154035634 1075176659> (DF) 
12:53:15.706463 eth0 < www1.cnn.com.www > cericon.cranzgot.co.za.4064: 
   . 58500:59948(1448) ack 19 win 10136 <nop,nop,timestamp 1075176765 154035634> 
12:53:15.896639 eth0 < www1.cnn.com.www > cerincon.cranzgot.co.za.4064: 
   . 59948:61396(1448) ack 19 win 10136 <nop,nop,timestamp 1075176765 154035634> 
12:53:15.896791 eth0 > cericon.cranzgot.co.za.4064 > www1.cnn.com.www: 
   .19:19(0) ack 61396 win 31856 <nop,nop,timestamp 154035732 1075176765> (DF) 
12:53:16.678439 eth0 < www1.cnn.com.www > cericon.cranzgot.co.za.4064: 
   . 61396:62844(1448) ack 19 win 10136 <nop,nop,timestamp 1075176864 154035732> 
12:53:16.867963 eth0 < www1.cnn.com.www > cericon.cranzgot.co.za.4064: 
   . 62844:64292(1448) ack 19 win 10136 <nop,nop,timestamp 1075176864 154035732> 
12:53:16.868095 eth0 > cericon.cranzgot.co.za.4064 > www1.cnn.com.www: 
   . 19:19(0) ack 64292 win 31856 <nop,nop,timestamp 154035829 1075176864> (DF) 
12:53:17.521019 eth0 < www1.cnn.com.www > cericon.cranzgot.co.za.4064: 
   FP 64292:65200(908) ack 19 win 10136 <nop,nop,timestamp 1075176960 154035829> 
12:53:17.521154 eth0 > cericon.cranzgot.co.za.4064 > www1.cnn.com.www: 
   . 19:19(0) ack 65201 win 31856 <nop,nop,timestamp 154035895 1075176960> (DF) 
12:53:17.523243 eth0 > cericon.cranzgot.co.za.4064 > www1.cnn.com.www: 
   F 19:19(0) ack 65201 win 31856 <nop,nop,timestamp 154035895 1075176960> (DF) 
12:53:20.410092 eth0 > cericon.cranzgot.co.za.4064 > www1.cnn.com.www: 
   F 19:19(0) ack 65201 win 31856 <nop,nop,timestamp 154036184 1075176960> (DF)  
12:53:20.940833 eth0 < www1.cnn.com.www > cericon.cranzgot.co.za.4064: 
   . 65201:65201(0) ack 20 win 10136 <nop,nop,timestamp 1075177315 154035895>  
 
103 packets received by filter 


Le résultat qui précède requiert quelques explications. Les lignes 5, 7 et 9 (sachant que la ligne 1 est [root@cericon]#...) correspondent à l'étape de négociation. tcpdump utilise le format <numéro de séquence>:<numéro de séquence + longueur de données>(<longueur de données>) sur chaque ligne pour indiquer le contexte du paquet à l'intérieur du flux. Le numéro de séquence, Sequence number, est choisi aléatoirement au départ. Ainsi, tcpdump affiche le numéro de séquence relatif après les deux premiers paquets pour donner la position réelle dans le flux. La ligne 11 est celle où la touche Enter a été pressée pour la première fois et la ligne 15 correspond au second Enter. Les ``ack 19'' indiquent le moment de réception des données entrantes pour le serveur web de CNN. Dans le cas qui nous occupe, nous n'avons saisi au clavier que 19 octets. Par conséquent, le serveur web place cette valeur dans chacun de ses paquets sortants alors que, la plupart du temps, nos propres paquets sortants sont vides de données.

Les lignes 61 et 63 correspondent à l'étape de déconnexion.

Des informations plus détaillées à propos de tcpdump peuvent être obtenues dans tcpdump(8), en particulier dans la section relative aux paquets TCP.


next up previous contents Next: Protocole datagramme utilisateur (UDP). Up: TCP et UDP. Previous: L'en-tête TCP.   Table des matières  
1-01-2006