La couche de transport avec TCP et UDP
La couche Transport est utilisée pour configurer une connexion afin de pouvoir partager des données entre périphériques réseau.
Protocoles de la couche transport
Les 2 protocoles de la couche transport qui sont les plus fréquemment utilisés sont :
- TCP
- UDP
La différence entre les deux est que :
- TCP est un protocole fiable.
- UDP est un protocole non fiable.
Alors pourquoi UDP serait-il aussi important, alors que TCP est + fiable ?
Admettons que vous souhaitez télécharger sur internet un film en full HD qui fait 20 GO.
Imaginez qu'au bout de 10 GO, quelques paquets ne parviennent pas sur votre PC. Et bien, une fois téléchargé, votre fichier serait corrompu et certainement impossible à ouvrir.
C'est pourquoi dans ce cas, on utilisera plutôt le protocole TCP,
afin de s'assurer que le transport de votre téléchargement sur votre PC soit fiable.
Plusieurs exemples
Prenons maintenant un autre exemple : vous êtes ingénieur réseau, et vous venez à l'idée d'utiliser une solution de téléphonie sur IP pour remplacer vos bons vieux téléphones analogiques.
On aurait tendance à penser qu'il devrait utiliser un transport fiable , comme TCP , pour nos communications téléphoniques.
Et bien, ce serait une mauvaise idée… car comme TCP corrige les erreurs, cela signifie que les données qui ne sont pas parvenues entre deux téléphones seraient retransmises…
Si dans une communication, vous entendez quelques choses de votre correspondant, qu'il aurait dit, quelques secondes auparavant, la communication risque d'être très étrange…
Comme il s'agit d'une communication en temps réel, nous ne voulons pas de retransmission.
Il vaut mieux perdre quelques paquets VOIP, que de les recevoir en retard.
C'est pourquoi dans cet exemple, le protocole UDP est le plus approprié.
TCP est un protocole de couche transport orienté connexion, ce qui signifie qu'il va établir une connexion, avant de transférer des données.
UDP est un protocole de la couche transport « sans connexion », il envoie donc directement les données sans se soucier s'il arrive ou non.
Le séquençage signifie que nous utilisons un numéro de séquence, c'est-à-dire que les paquets sont numérotés pour s'assurer de les retrouver dans le bon ordre à l'arrivée.
Le protocole de la couche transport UDP n'a pas cette fonctionnalité.
En-tête UDP
Voici à quoi ressemble une en-tête UDP :
C'est grâce au numéro de port source et destination qu'on sait pour quel type d'application le paquet est destiné.
Le champ « Checksum » qui se traduit littéralement par : « Somme de contrôle » ou qui est aussi appelé « Emprunte », est un nombre, ajouté au paquet à transmettre, pour permettre au récepteur de vérifier que le message reçu est bien celui qui a été envoyé.
Pour résumer, le protocole UDP :
- Fonctionne sur la couche de transport du modèle OSI.
- C’est un protocole sans connexion, donc, il envoie juste des données.
- Les erreurs sont tout de même limitées grâce au champ « Checksum » de son en-tête.
- C’est un protocole qui fournit son meilleur effort sans pour autant être fiable.
- Et il n’y a aucune fonctionnalité permettant de récupérer des données qui auraient été perdues.
Protocole de transport TCP
Voyons maintenant les détails du protocole de transport TCP. Comme il est fiable, il va « configurer » une connexion avant de commencer à envoyer des données.
Cette connexion se fait en trois étapes.
Prenons l’exemple du PC A qui veut envoyer des données au PC B de manière fiable. Nous allons donc utiliser TCP.
En premier, le PC A, enverra un message TCP « SYN », pour indiquer au PC B qu’il veut établir une connexion.
Dans l’exemple, le numéro de séquence est le « 1 ».
Ensuite, Le PC B répondra au PC A, en envoyant un message « SYN, ACK ». Le numéro de séquence est 100. Il s’agit d’un nombre aléatoire.
Et le ACK est égal à 2, ce qui signifie qu’il reconnaît bien avoir reçu le 1ᵉʳ message du PC A, qui portait le numéro 1, et qu’il est prêt pour le message suivant.
Et dans la dernière étape, le PC A enverra un accusé de réception vers le PC B. Dans l’exemple, il envoie un « ACK=101 », ce qui signifie qu’il reconnaît bien le numéro de séquence « 100 » du PC B.
Alors pour résumer et simplifier un peu les choses :
- Le PC A envoie un TCP SYN. Pour dire au PC B qu’il veut lui parler.
- Ensuite, le PC B envoie un TCP SYN, ACK, pour informer le PC A qu’il accepte de l’écouter et en même temps, lui dit qu’il veut aussi lui parler.
- Et pour finir, Le PC A envoie un accusé de réception TCP. C’est-à-dire qu’il accepte à son tour d’écouter le PC B.
Maintenant que la connexion est établie, les données peuvent être envoyées.
Fonctionnalité protocole TCP
Nous allons désormais parler d’une fonctionnalité que dispose le protocole TCP.
C’est le « contrôle de flux » plus connu sous le nom de « Flow Control ».
Cela permet d'éviter d'envoyer trop de données que le récepteur ne pourrait gérer…
Dans chaque segment TCP, le récepteur peut spécifier combien de données en octets, il veut recevoir, pour ne pas être débordé ou surchargé…
Suite de notre exemple :
Le PC A a bien établi une connexion en 3 étapes avec le PC B.
Il envoie 15 octets de données. Ici le numéro de séquence est « 10 » .
Le PC B va répondre en voyant un « ACK = 11 » qu'on pourrait traduire par :
« Merci, j'ai reçu vos 15 octets, maintenant envoyez-moi le reste ».
TCP est un protocole fiable, c'est pourquoi l'ensemble des paquets échangés est tracé.
Plus la taille des données est grande, et plus votre débit sera élevé. Ce qui est logique, car on envoie moins d'ACK que de données.
En-tête TCP
TCP est un protocole assez complexe, par exemple, rien qui sont en-tête comporte beaucoup plus de champs que celui d'UDP.
Comme pour UDP, il y a un champion pour les ports sources et de destinations. Toujours utilisé pour déterminer le type d'application.
On voit que 32 bits sont utilisés pour les numéros de séquence, et juste en dessous, il y a aussi 32 bits pour l'accusé de réception.
Le champ « Flags » est l'endroit où TCP définit les différents types de messages comme le « SYN » ou le « ACK ».
Le champ « window size » est la taille de la fenêtre, c'est là, où est spécifié le nombre d'octets de données qui seront envoyés avant de recevoir l'accusé de réception à l'autre bout.
Et pour finir, il y a le champ checksum, qui permet de contrôler que les données n'ont pas été perdues…
Pour résumer, TCP :
- Est un protocole fiable.
- Avant d'envoyer des données, il établit une connexion en 3 étapes.
- Après avoir envoyé une certaine quantité de données, un accusé de réception (ACK), validera la bonne réception à l'autre bout.
- Pour éviter la surcharge, un nombre limité d'octets est envoyé.
- Et il peut effectuer des retransmissions en cas d'erreurs.
Retrouvez tous nos cours pour réussir votre CCNA sur la chaîne YouTube de Formip.