Qu’est-ce qu’une poignée de main à trois voies et comment fonctionne-t-elle ?

Au cours des premières années d’Internet, le protocole Internet (IP) était le seul protocole que les gens utilisaient pour se connecter à Internet. Le problème avec IP était que vous pouviez envoyer un message et ne pas être sûr que le destinataire le reçoive ou non. C’est pour cette raison que le protocole TCP/IP a été créé.

TCP/IP garantit que toutes les données que vous envoyez atteignent leur destinataire. Pour ce faire, il fournit au client et au serveur une connexion sécurisée avant l’envoi des données. Cette connexion sécurisée est établie par un processus connu sous le nom de poignée de main à trois voies, également appelé poignée de main TCP/IP.

Qu’est-ce qu’une poignée de main à trois voies ?


Crédit image : Fleshgrinder/Wikimedia

Une poignée de main à trois voies (poignée de main TCP/IP) correspond aux trois premières interactions entre un client et un serveur qui tentent d’établir une connexion TCP. Ces interactions initiales sont essentielles pour établir une connexion sécurisée. Lors de cette phase, le client et le serveur conviennent des paramètres qu’ils utiliseront pour contrôler et vérifier les paquets de données entrants et sortants. Ces paramètres se présenteront sous la forme de segments TCP.

Qu’est-ce qu’un segment TCP ?

Dans une connexion TCP/IP, toutes les données envoyées doivent être découpées et structurées sur ce que l’on appelle des segments TCP. Ces segments contiennent des informations comme les adresses IP, les ports, les bits de drapeau, les numéros de séquence, les numéros d’accusé de réception et les données facultatives ou charge utile.

Les trois premières interactions (poignée de main à trois voies) ne contiendront que des en-têtes de segments TCP, sans charge utile ni données jointes. Voici un exemple de segment TCP


Crédit image : Ere/Wikimedia

Notez que l’illustration ci-dessus ne concerne que le protocole TCP. Un segment TCP/IP complet nécessite les deux adresses IP de l’expéditeur et du destinataire en plus du segment TCP ci-dessus.

Chaque fois que vous envoyez un colis à une personne, le service de livraison vous demande de remplir un formulaire d’information, puis de le joindre au colis avant l’expédition. De même, le TCP exige que l’expéditeur attache une tête de segment (formulaire d’information) aux données (colis) avant de commencer à envoyer le segment (colis) au destinataire.

Chaque fois qu’un client communique avec un serveur, les deux parties devront formater leurs interactions sous la forme d’un segment TCP. Un segment TCP comprend une tête de segment TCP attachée aux données que vous essayez d’envoyer. L’expéditeur devra remplir les informations requises par l’en-tête de segment.

Voir aussi :  JPG vs JPEG : quelle est la différence entre ces formats de fichiers image ?

Pour une poignée de main à trois voies, l’expéditeur devra remplir les informations suivantes :

  • Port source : Identifie le port de l’expéditeur
  • Port de destination : Identifie le port du récepteur
  • Numéro de séquence : Indique la séquence du segment
  • Numéro d’accusé de réception : Signifie qu’un segment a été acquitté en ajoutant un au numéro de séquence donné

.
En plus de remplir les champs d’en-tête de segment, l’expéditeur doit également sélectionner un bit indicateur. Il y a six bits de drapeau au total, mais pour une poignée de main à trois voies, vous n’aurez besoin que des deux suivants :

  1. SYN : Donne un numéro de séquence. Ce numéro de séquence sera utilisé pour compter la séquence de tous les segments entrants pour le reste de l’interaction.
  2. ACK : Indique que le récepteur du numéro SYN accepte la demande de connexion en ajoutant un (1) au numéro SYN donné.

Maintenant que vous savez ce qu’est un segment TCP, voyons comment il est utilisé dans une poignée de main à trois voies.

Comment fonctionne une poignée de main à trois voies.

Une poignée de main à trois voies est établie lorsque le client et l’hôte ont échangé des informations et reconnu les numéros de séquence de chacun. Comme son nom l’indique, une poignée de main à trois voies se fait en trois étapes.

Premièrement, le client envoie un segment SYN pur indiquant qu’il veut une connexion. Deuxièmement, le serveur répond avec un segment SYN-ACK qui signifie qu’il a accusé réception de la demande et envoie son propre numéro SYN pour que le client l’accuse réception. Troisièmement, le client envoie un segment ACK au serveur pour l’informer que le numéro SYN du serveur a été acquitté et sera utilisé pour la suite de la connexion.

Une poignée de main à trois voies ressemblera à ceci :


Crédit photo : Fleshgrinder/Wikimedia

Décomposons et examinons les segments pour que vous sachiez ce qui se passe exactement lorsque le client et le serveur échangent et reconnaissent les numéros de séquence.

Étape 1 : le client envoie un segment SYN


Crédit photo : Fleshgrinder/Wikimedia

Le client envoie une demande de connexion en envoyant un segment SYN au serveur. Le client utilise l’adresse IP du client pour localiser le serveur et envoyer le segment TCP.

Pour réduire la complexité du segment, ignorons quelques champs de segment et concentrons-nous sur le strict nécessaire pour une connexion à poignée de main tripartite. Cela comprend le port source, le port de destination, le numéro de séquence, le numéro d’accusé de réception et le type de bit indicateur utilisé.

Voir aussi :  Mégapixels ou taille du capteur ? Qu'est-ce qui est le plus important pour l'appareil photo de votre smartphone ?

Et avec cela, un segment SYN/request devrait ressembler à ceci :


Image réalisée par le rédacteur

Le port client est un nombre aléatoire compris entre 49152 et 65536. Cette plage de ports est la plage convenue que les périphériques publics peuvent utiliser dynamiquement pour se connecter à Internet. Les plages de port de 1024 à 49151 sont privées. Ils devront être enregistrés par une entité pour utiliser un port dans la plage spécifiée. Les numéros de port inférieurs à 1024 sont des ports réservés à diverses fonctions et protocoles Internet tels que FTP (port 20), SMTP (port 25), DNS (port 53) et HTTP (port 80).

Dans la vie réelle, un numéro de séquence est un nombre aléatoire. Pour l’exemple, nous avons utilisé 0000000000 pour faciliter la visualisation.

Prenez note du numéro de séquence au fur et à mesure que nous progressons dans les étapes. Actuellement, c’est 000000000. Il n’y a actuellement pas de numéro d’acquittement car il n’y a pas quelque chose à acquitter.

Étape 2 : le serveur répond avec un segment SYN-ACK


Crédit photo : Fleshgrinder/Wikimedia

Une fois que le serveur reçoit un segment SYN, il répondra en envoyant un segment ACK contenant le numéro d’accusé de réception. Le numéro d’accusé de réception sera le numéro de séquence du client plus un (1).


Image réalisée par le rédacteur.

Regardez le port source. Il montre que le segment provient du port 20, ce qui indique qu’il provient du serveur en tant que réponse.

Maintenant, regardez le numéro de l’accusé de réception. C’est 0000000001, qui est le numéro de séquence du client (0000000000) plus un (1). C’est ainsi qu’un segment est suivi. Disons que le client a reçu une réponse de segment ACK dont le numéro d’accusé de réception est 0000000002. Cela indiquerait au client que le segment 0000000001 était manquant et qu’il devra attendre qu’il arrive afin que vous ne subissiez pas de perte de paquets.

Comme vous pouvez le voir, deux bits indicateurs sont activés-SYN et ACK.

En plus d’accuser réception du numéro de séquence du client, le serveur enverra également son propre numéro de séquence pour que le client accuse réception du numéro de séquence du serveur plus un (1). Dans notre exemple, nous avons utilisé 1111111111 comme numéro de séquence du serveur. Encore une fois, dans le monde réel, ce numéro est aléatoire.

Voir aussi :  Qu'est-ce qu'une machine Cricut et comment ça marche ?

Notez que les numéros de séquence du client et du serveur ne doivent pas nécessairement correspondre. Tant que les deux parties reconnaissent le numéro de séquence unique de l’autre, la connexion sera fiable.

Étape 3 : le client répond avec un segment ACK.


Crédit photo : Fleshgrinder/Wikimedia

Enfin, le client accuse réception du numéro de séquence du serveur.


Image réalisée par le rédacteur

Le dernier segment est un segment ACK du client.

Comme vous pouvez le constater le client va accuser réception du numéro de séquence du serveur en répondant avec le numéro de séquence du serveur (1111111111) plus un (1), soit 1111111112.

Le client et le serveur n’enverront plus de numéro de séquence puisque le début de la séquence a déjà été acquitté. Les deux parties attendront toutefois des segments d’accusé de réception poursuivant les numéros de séquence plus un (1) et les octets de nombre tout au long de l’interaction. Dans ce cas, le client s’attend à ce que la prochaine réponse du serveur ait un ACK de 0000000002 (s’il n’y a pas de données jointes).

Après quoi, la poignée de main à trois est établie !

Comprendre le fonctionnement des connexions réseau

Maintenant que vous avez appris comment fonctionne une poignée de main à trois, vous aurez également plus de facilité à comprendre comment TCP fonctionne après la poignée de main. Le client et le serveur vont commencer à envoyer des données lorsque la poignée de main est établie. Cette fois, le format de segment complet sera utilisé, plus les données ou charges utiles facultatives.

Les données sont généralement segmentées/coupées en plus petits morceaux pour faciliter les transferts. Chaque segment de données a sa propre tête de segment contenant un numéro de séquence et un numéro d’accusé de réception. La raison d’un numéro de séquence est de connaître la séquence des segments lorsqu’ils seront éventuellement réassemblés. Les numéros d’accusé de réception sont là pour vérifier auprès de l’expéditeur que son segment a été reçu et qu’il correspondait à la séquence des segments entrants.

Prendre le compte d’un numéro de séquence et les vérifier avec un accusé de réception est la façon dont TCP peut transporter de manière fiable d’énormes morceaux de données sans aucun paquet de données manquant.

Et avec cela, vous devriez avoir une assez bonne idée de la façon dont TCP fonctionne.

Cliquez pour évaluer cet article !
[Total: Moyenne : ]

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *