Le protocole TCP/IP

Nous avons ouvert notre navigateur et faisons une recherche sur un moteur de recherche. Nous utilisons donc le protocole HTTP qui envoie une requête GET au serveur du moteur de recherche.

Comment cette requête est-elle transmise sur le réseau ? La transmission est-elle sûre ? Est-on certain qu'elle arrivera correctement ? En un seul morceau ?

Ce sont à toutes ces questions que répond le protocole TCP/IP. Il s'agit en fait d'une suite de protocoles dénommée d'après le nom des deux principaux : TCP (de l'anglais Transmission Control Protocol) et IP (de l'anglais Internet Protocol). Ils ont tous deux été inventés par Vinton G. Cerf et Bob Kahn, travaillant alors pour la DARPA (Defense Advanced Research Projects Agency, Agence pour les projets de recherche avancée de défense), organisation qui était à l'origine d'Arpenet, l'ancêtre d'internet.

TCP/IP est donc une suite de protocoles organisés en couches. On rencontre ainsi :

  • la couche application (la plus proche de l'utilisateur). On y retrouve par exemple le protocole http utilisé pour les pages web

  • la couche transport. Elle peut utiliser les protocoles TCP ou UDP

  • la couche réseau (ou internet). On y trouve le protocole IP

  • enfin la couche d'accès réseau. Elle est en charge de l'acheminement des bits sur le réseau. Certaines classifications du modèle TCP/IP la partagent en deux : couche liaison et couche physique

Couches TCP/IP

La figure ci-dessus met en parallèle le modèle TCP/IP et le modèle OSI (Open Systems Interconnection). Ce second modèle constitue une autre façon de se représenter les échanges et ne sera pas détaillé ci-dessous.

A chaque étape, à chaque couche, le protocole ajoute des données au début (et éventuellement à la fin) des données de la couche précédente. On parle d'encapsulation. Toutes ces étapes se déroulent sur la machine du client.

Encapsulation

Lorsque le destinataire reçoit les données, celles-ci remontent les couches en sens inverse et sont désencapsulées.

I. La couche application :

Le fonctionnement de la couche application dans le cadre du protocole HTTP a été décrit dans un cours spécifique. Vous pouvez vous y reporter pour plus de détails.

II. La couche transport :

La couche application a transmis son paquet de données à la couche transport.

Celle-ci peut mettre en place selon les cas deux protocoles :

  • TCP :

    ce protocole s'assure que les données sont bien transmises au récepteur. Avant d'envoyer les données, elle ouvre une connexion avec le serveur distant grâce à une négociation (handshaking) en trois étapes : le client envoie une demande de connexion, le serveur accepte la connexion et en fait part au client, celui-ci indique qu'il a bien reçu l'accord et qu'il va commencer l'envoi des données.

    Avant d'envoyer les données, TCP les découpe en segments et ajoute au début de chaque segment les numéros des ports origine et destination du message, l'identification du paquet et une somme de contrôle permettant de vérifier que le transfert s'est bien passé.

    On utilise ce protocole lorsque l'on veut s'assurer que les informations ont bien été transmises (pour une page web par exemple).

  • UDP :

    UDP vise à être rapide. Aussi il ne vérifie pas que les données ont bien été reçues. Il ajoute au début du paquet, les numéros de ports des machines, la longueur du paquet et une somme de contrôle à destination du récepteur.

    On peut l'utiliser pour les applications de streaming ou le jeu en ligne...

Les ports utilisés par ces protocoles varient entre $0$ et $2^{16}-1 = 65\:535$. Ils ne sont toutefois pas choisis au hasard. Ainsi le protocole HTTP utilise préférentiellement le port 80.

III. La couche internet :

C'est ici qu'intervient le protocole IP.

Celui-ci reçoit donc les données mises en forme par TCP ou UDP.

Il découpe de nouveau les paquets si ceux-ci sont de longueur trop importante et ajoute un nouvel en-tête contenant les adresses IP de la source et du destinataire, la longueur du paquet et son numéro d'ordre (si besoin).

L'ensemble de ces données constitue un datagramme IP.

IV. La couche accès réseau :

Cette couche se partage en une couche de liaison et une couche physique.

La couche de liaison ajoute encore un en-tête comportant un champ de contrôle de redondance cyclique (CRC) permettant de vérifier que les données ont bien été transmises.

Il reste enfin une étape de transport physique des données.

Selon le type de transport (ethernet, wifi...) les données sont traduites en bits d'une certaine façon et transmises sur le support (câble électrique, ondes radio...).

A cette étape on a de nouveau un ajout d'en-tête : les adresses MAC sources et destinataires.

Trame Ethernet

Sur la figure ci-dessus, on retrouve en haut la trame ethernet qui contient:

  • les adresses MAC de la source et du destinataire
  • des données qui (zoom 1) contiennent différentes infos dont les IP de la source et du destinataire (paquet IP)
  • ces données en contiennent d'autres (zoom 2) qui contiennent les ports source et destination (paquet TCP).

C'est cette trame qui est transmise sur le réseau. A la réception, le destinataire désencapsule les données pour le lire étape par étape.

Désencapsulation

La figure ci-dessous résume les différents types de données transmises et certains protocoles associés à chaque couche :

Données par couche

VI. Accusé de réception : le protocole du bit alterné

Au niveau de la couche liaison, un mécanisme permet de vérifier que les messages ont bien été reçus de part et d'autres : le protocole du bit alterné.

Remarque : ce protocole très simple est aujourd'hui remplacé par d'autres plus complexes mais aussi plus efficaces.

L'idée est simple :

  • lors du premier envoi, l'émetteur ajoute un flag (drapeau) à sa trame : le bit 0
  • à la réception, le destinataire envoie un accusé de réception avec un drapeau cette fois-ci à 1
  • dès qu'il a reçu l'accusé de réception, l'émetteur envoie une nouvelle trame avec le drapeau 1
  • le destinataire accuse la réception avec le drapeau 0 etc...

Bit Alterné

Côté émetteur, un chronomètre permet de s'assurer que les données sont bien transmises : si à la fin du temps imparti, on a pas reçu l'accusé de réception avec le bon drapeau, la trame est renvoyée.

In [ ]: