SNT Internet

Identification

Infoforall

2 - Protocole TCP


Nous allons aujourd'hui voir un peu plus dans le détail le principe de l'un des protocoles d'Internet : le protocole TCP.

Evaluation ✎ : questions 01-02-03-04-07-08-09-14

Documents de cours :

1 - Protocole TCP : segmentation

Revoyons d'abord le cheminement et la surveillance des paquets IP sur Internet :

Animation sur TCP
CLIQUER SUR L'IMAGE pour ANIMER ou STOPPER
Protocole : TCP (et +) Adresse : PORT DATA d'un programme SEGMENT TCP Port SRC 443 Port DST 2050 SEQ 4 SUI 2 Flags : ACK CS : 15241 PAQUET IP IP DST 25.25.25.5 IP SRC 45.45.45.2 TRAME (Ethernet ou Wifi) SEQUENCE INTIALE MAC DST MAC SRC CheckSum selon le type de trame Couche RESEAU Protocole : IP (et +) Adresse : IP Message : PAQUET Couche LIAISON Protocole : WLAN ... Adresse : MAC Message : TRAME Couche Application Firefox Couche Application Serveur HTTP Communication prog A Comm. prog B A B Rq TCP Rp1 TCP Rp2 TCP vide TCP Ack4 TCP ? A TCP IP Trame B TCP IP Trame data SRC 2050 DST 443 SEQ data SRC 24945 DST 443 SEQ data SRC DST CS data SEQ SUI F vide SEQ SUI F SRC 2050 DST 443 F ACK SUI 2 SEQ 1 CS XXXXX
RAPPEL sur les URL

Si vous êtes sur cette page, vous avez certainement ceci dans la barre de navigation :

https://www.infoforall.fr/act/snt/les-protocoles-tcp-et-ip/

Nous avons donc :

  • Le protocole
    • https://www.infoforall.fr/act/snt/les-protocoles-tcp-et-ip/
  • Le nom du serveur à joindre
    • https://www.infoforall.fr/act/snt/les-protocoles-tcp-et-ip/
  • L'adresse absolue de la ressource
    • https://www.infoforall.fr/act/snt/les-protocoles-tcp-et-ip/

On voit donc comment votre ordinateur peut trouver un ordinateur distant. Si votre ordinateur transmet son adresse IP dans le message, le serveur pourra répondre.

Oui mais... quel est le programme de votre ordinateur qui veut discuter avec le programme-serveur qui tourne sur l'ordinateur distant ?

Identifier les programmes : les PORTS

On identifie les programmes qui fonctionnent sur un ordinateur en leur attribuant une adresse PORTS.

Ce numéro entre 0 et 65535 peut figurer optionnellement entre l'adresse de la machine à joindre et la ressource voulue.

https://www.infoforall.fr:443/act/snt/les-protocoles-tcp-et-ip/

Les programmes-serveurs les plus courants bénéficient d'un PORT inférieur à 1024.

Le numéro de PORT d'un programme-serveur HTTP est 80.

Le numéro de PORT d'un programme-serveur HTTPS est 443.

On ne fournit habituellement pas ce numéro au navigateur Web (Firefox, Chrome, Edge...) : c'est lui qui détecte via le protocole le type de serveur que vous voulez joindre. Et rajoute le PORT adapté. Ici, le protocole est https et il rajoute donc 443 tout seul :

Pour les autres programmes, l'ordinateur attribue un numéro aléatoire entre 1024 et 65535 pourvu qu'il soit non attribué sur cet ordinateur pour le moment.

✎ 01° QCM : Que va rajouter le navigateur si on tape ceci :

http://monsite.com

  1. http://monsite.com:8000
  2. http://monsite.com:80
  3. http://monsite.com:443
  4. http://monsite.com:PORT

Firefox envoie donc une requête pour le programme 443. Il y place d'ailleurs dans cette requête son propre numéro de PORT. Ainsi, le serveur saura à qui répondre !

Le problème est que des programmes, il y en a un bon nombre que peuvent demander à communiquer en même temps.

Nous allons voir comment le protocole TCP gère la situation.

La segmentation (protocole TCP 1/3)

Le premier grand intérêt de TCP est qu'il peut segmenter un gros message initial en plusieurs sous-messages.

Ici deux programmes A et B communiquent avec l'exterieur. Si on ne faisait rien, ça donnerait cela :

Le programme B devrait atteindre que A ai fini pour envoyer ses propres communications...

La solution ? Décomposer la communication en sous-messages et envoyer les sous-messages en alternant entre A et B.

7 6 5 4 3 2 1 4 3 2 1

Ainsi, on a l'illusion qu'ils communiquent en 'même temps'.

1 2 3 4 5 6 7 1 2 3 4

Par contre, si on ne fait que cela, on va avoir un problème : les étiquettes sont visibles à l'écran mais il n'y a aucune information réeelle de numérotation (1,2,3..) ou d'identité de l'émetteur (A ou B) sur les messages.

A l'écran :

1 2 3 4 5 6 7 1 2 3 4

En réalité :

Nous allons devoir rajouter des informations aux sous-messages.

En-tête TCP (protocole TCP 2/3)

Il faut rajouter un en-tête (placé devant le sous-message) contenant au minimum :

  • le PORT SRC (SouRCe) : le PORT du programme qui émet le message. Sur l'exemple, le PORT SRC est 2050.
  • Remarque : vous pouvez zoomer en cliquant sur les segments, ou utiliser CRTL + comme d'habitude.

    1
  • le PORT DST (DESTination) : le PORT du progamme qu'on veut joindre. Ici, on veut se connecter à un serveur HTTPS donc 443.
  • 1
  • Un système de numérotation de séquences (SEQ) pour signaler au destinataire la place du sous-message dans l'ensemble.
  • 1
  • Un système d'accusés de réception (SUI) pour signaler le numéro du sous-message suivant que l'ordinateur émetteur veut bien recevoir. Exemple : si SUI vaut 2, cela veut dire que l'émetteur a reçu le sous-message 1 et veut bien le 2 s'il existe.
  • 1

L'en-tête précédente veut dire que

  • le programme de PORT 2050 à un segment numéroté 1 pour le programme de PORT 443 et
  • que le programme 2050 est prêt à recevoir l'éventuel segment numéro 2 de 443.

Et voilà pour l'essentiel. Par la suite, nous représenterons parfois uniquement l'en-tête TCP par un petit rectangle jaune-orangé noté TCP.

Voici donc le résultat des transformations des communications envoyées par les applications à la couche TRANSPORT :

1 2 3 4 5 6 7 1 2 3 4

Chaque Data représente le contenu d'un sous-message.

Ce que vous venez de voir n'est qu'une simplification du système réellement utilisé par TCP. Mais les principes fondamentaux sont bien là.

✎ 02° Dans le segment ci-dessous, où se trouve l'information permettant de retrouver le programme qui a émis le sous-message ?

4

Question supplémentaire : quel est le numéro de ce segment ?

Pour information, les indications fournies dans le header TCP sur la représentation du segment sont :

  • SRC 24945
  • DST 443
  • SEQ 4

2 - Protocole TCP : garantir la fiabilité de transmission

Nous allons voir comment TCP permet de garantir que la transmission s'effectue correctement.

Garantie de la fiabilité de la transmission (protocole TCP 3/3)

TCP tourne sur chaque ordinateur en permanence.

Lorsqu'un ordinateur émet un sous-message :

  • Il garde le sous-message en mémoire.
  • Il lance un chrono et attend un certain temps son accusé de réception. S'il n'arrive pas, il renvoie à nouveau le sous-message.

Lorsqu'un ordinateur reçoit un sous-message :

  • Si on reçoit un message numéroté SEG 5 et qu'on a déjà reçu les messages 1-2-3-4, on renvoie un accusé de réception : il s'agit d'un sous-message vide ne comportant que l'en-tête sur laquelle on note SUI 6 pour dire... qu'on veut bien le suivant, le 6.
  • Si on reçoit un message numéroté SEG 5 sans avoir reçu tous les messages 1-2-3-4, on ne renvoie pas d'accusé de réception.
  • Il lit ensuite le marqueur SUI :
    • il supprime toutes les copies des sous-messages de numéro inférieur.
    • il envoie le sous-message demandé s'il existe.
CONCLUSION TCP
  • TCP permet de localiser les programmes (avec les PORTS).
  • TCP permet la communication de tous les programmes (avec la SEGMENTATION)
  • TCP garantit le transfert du message (avec les accusés de réception et l'émission du message jusqu'à réception)
  • TCP n'offre pas de garantie temporelle de réception du message (à cause justement du fait qu'on va peut-être devoir émettre le message plusieurs fois de suite)

03° Le PORT 443 a reçu uniquement les sous-messages 1, 2 et 3 du PORT 2050 et le message 5 arrive.

Que faut-il faire ?

  • Renvoyer un accusé de réception SUI 4
  • Renvoyer un accusé de réception SUI 5
  • Renvoyer un accusé de réception SUI 6
  • Ne rien faire

...CORRECTION...

Ne rien faire : on reçoit le sous-message 5 mais on n'a pas encore le 4.

04° Le PORT 443 a reçu uniquement les messages 1, 2, 3 et 5 du PORT 2050 et le message 4 arrive.

Que faut-il faire ?

  • Renvoyer un accusé de réception SUI 3
  • Renvoyer un accusé de réception SUI 5
  • Renvoyer un accusé de réception SUI 6
  • Ne rien faire.

...CORRECTION...

Maitenant, nous avons les messages 1-2-3-4-5.

On accuse réception du 4 en demandant le 6 avec SUI 6.

05° BILAN ANIME : cliquez sur la requête Req en bleue de façon à lancer l'animation et voir le transfert des messages entre FIREFOX qui fait une requête HTTP et le SERVEUR qui renvoie une réponse HTTP.

Rep http Rep TCP Req TCP ACK TCP

06° Le système d'accusés de réception de TCP garantit la fiabilité de la transmission, si elle est possible. Pourquoi TCP ne permet pas par contre de garantie temporelle ?

...CORRECTION...

On sait juste qu'un message est arrivé ou pas. S'il n'est pas arrivé, il faudra le renvoyer, jusqu'à ce qu'il arrive.

3 - FAQ

Pas de question pour le moment

La prochaine activité traitera donc du transfert des paquets IP de routeurs en routeurs.

En effet, si on doit résumer Internet en deux mots, on dirait TCP / IP.

TCP rend la communication fiable.

IP rend la communication possible si elle l'est !

Activité publiée le 30 03 2020
Dernière modification : 06 04 2020
Auteur : ows. h.