Ignorer la navigation

VII. La couche TCP

7.1 Le fonctionnement


La couche TCP permet de communiquer en mode connecté, c'est-à-dire avec des accusés de réception permettant à chaque machine de savoir si l'information qu'elle a envoyées a bien été reçue et
de faire transiter sur la même ligne plusieurs conversations "simultanément". Ceci est possible grâce au concept de ports (ou sockets): un port est un nombre différent associé à chaque machine et valable pendant une "conversation".

 

Établissement d'une connexion

Le processus de communication, qui se fait grâce à une émission de données et d'un accusé de réception, est basé sur un numéro d'ordre (Sequence number ou Acknowledgement number), il faut que les machines émettrices et réceptrices (client et serveur) connaissent le numéro d'ordre initial de l'autre machine.

L'établissement de la connexion entre deux applications se fait souvent selon le schéma suivant :

Les deux machines doivent donc synchroniser leurs séquences grâce à un mécanisme communément appelé three ways handshake (poignée de main en trois temps).

Ce dialogue permet d'initier la communication, il se déroule en trois temps, comme sa dénomination l'indique :

  • Dans un premier temps la machine émettrice (le client) transmet une trame dont le drapeau SYN est à 1 (pour signaler qu'il s'agit d' une trame de synchronisation), avec un numéro de séquence C
  • Dans un second temps la machine réceptrice (le serveur) reçoit la trame initiale provenant du client, puis lui envoie un accusé de réception, c'est-à-dire une trame dont le drapeau ACK est à 1 et le drapeau SYN est à 1 (car il s'agit là encore d'une synchronisation). Ce segment contient un numéro de séquence S et un numéro d'accusé de réception C+1,
  • Enfin, le client transmet au serveur un accusé de réception, c'est-à-dire un segment dont le drapeau ACK est à 1, dont le drapeau SYN est à zéro (il ne s'agit plus d' une trame de synchronisation). Son numéro de séquence est C+1 et son numéro d'accusé de réception est S+1.

Suite à cette séquence comportant trois échanges les deux machines sont synchronisées et la communication peut commencer!

Lors de l'émission d'une trame, un numéro d'accusé de réception et un numéro de séquence sont associés. A réception de cette trame , la machine réceptrice va retourner une trame dont le drapeau ACK est à 1 (afin de signaler qu'il s'agit d'un accusé de réception) accompagné d'un numéro de séquence égal au numéro d' accusé de réception précédent et d'un nouveau numéro d' accusé de réception,

De plus, grâce à une minuterie déclenchée dès l'émission d' une trame au niveau de la machine émettrice, la trame est réexpédié dès que le temps imparti est écoulé, car dans ce cas la machine émettrice considère que la trame est perdu...

Toutefois, si la trame n'est pas perdue et qu'elle arrive tout de même à destination, la machine réceptrice saura grâce au numéro d'ordre qu'il s'agit d'un doublon et ne conservera que la dernière trame arrivée à destination...

 

7.2 Observation des trames:

Nous allons à présent visualiser les informations circulant sur le câble Ethernet et correspondant aux échanges entre client et serveur lors de la visualisation de la page HTML du site web sti2d.ecolelamache hébergée par le serveur Apache situé dans le 192.168.13.250. (ou 192.168.13.251).

  • a. Ouvrir un navigateur web (par exemple firefox)
  • b. Ouvrir Wireshark et configurer la capture avec le filtre: ip.addr == 192.168.13.250
  • c. Lancer la capture dans la fenêtre wireshark
  • d. Saisir 192.168.13.250 dans votre navigateur et appuyer la touche Entrée
  • e. Arrêter la capture dans la fenêtre wireshark dés que la page HTML apparaît et sauvegarder dans le dossier Mes documents sous le nom
  • f. Remplacer cette copie partielle d'écran par la copie partielle de votre écran
  • g. Relever le contenu complet de la première trame (repérable par l'information [SYN] dans la colonne Info). Remplacer cette copie partielle d'écran par la copie partielle de votre écran
  • h. Repérer sur la trame précédente les différentes couches
  • i. A partir de la capture réalisée précédemment, sélectionner la couche TCP (Transmission Control Protocol) de la première trame (repérable par l'information [SYN] dans la colonne Info). Compléter alors le tableau suivant en hexadécimal sauf pour l'octet flag à convertir en binaire:

Contenu

champ

Source port

Dest. port

Sequence number

Acknowledgement number

H. len

flag

Le client: je veux communiquer sur le port (……....… )16, (port HTML par défaut sur lequel le serveur écoute) il faudra me répondre sur le port (……......)16. mon numéro de séquence est (…....……)16

 

  •  j. même travail pour la deuxième trame (repérable par l'information [SYN ,ACK] dans la colonne Info).

contenu

champ

Source port

Dest. port

Sequence number

Acknowledgement number

H. len

flag

le serveur: bien reçu votre n° de séquence, si j'ajoute 1 cela donne(...............)16 . Mon numéro de séquence est (......................)16

 

  •  k. troisième trame (repérable par l'information [ACK] dans la colonne Info).

contenu

champ

Source port

Dest. port

Sequence number

Acknowledgement number

H. len

flag


Le client: bien reçu votre n° de séquence, si j'ajoute 1 cela donne(.................) 16 .

 

  •  l. quatrième trame (GET / HTTP/1.1 ).

contenu

champ

Source port

Dest. port

Sequence number

Acknowledgement number

H. len

flag


Le client: voici mon message (voir couches suivante de cette trame), son n° d' accusé de réception est (......................)16 .

 

  •  m. cinquième trame (HTTP/1.1 200 OK).

contenu

champ

Source port

Dest. port

Sequence number

Acknowledgement number

H. len

flag


Le serveur: j'ai bien reçu votre message n°(.......................)16 voici ma réponse (voir couches suivante de cette trame) son n° d' accusé de réception est (...............)16 .