Quelles sont les étapes d'une poignée de main TCP?

Quelles sont les étapes d'une poignée de main TCP?

Le protocole TCP ou de contrôle de transmission est un protocole de couche de transport standard qu'Internet utilise pour transmettre des données. Demande de commentaires (RFC) 793 définit le TCP comme un protocole fiable et axé sur la connexion. Puisqu'il est orienté vers la connexion, un chemin ou une connexion doit être établi avant de transmettre des données. TCP utilise un mécanisme de poignée à trois pour établir une connexion entre deux appareils. Dans ce guide, nous verrons comment fonctionne le mécanisme de poignée de main à trois voies. Voyons d'abord les problèmes avec le modèle de poignée de main bidirectionnelle.

Problèmes avec le modèle de poignée de main à deux voies

Le modèle de poignée de main bidirectionnelle a échoué en raison d'un ancien problème de paquet en double. Supposons qu'un ancien paquet en double arrive sur la machine du serveur. Ce vieux paquet est arrivé d'une connexion précédemment fermée et contient un numéro de séquence «z». À un moment donné pendant la nouvelle connexion, le serveur accepte un paquet avec un numéro de séquence «z». Lorsqu'il reçoit cet ancien paquet avec le même numéro de séquence «z», il accepte sans le savoir cet ancien paquet et rejette le paquet réel de la nouvelle connexion.

Dans le cas ci-dessus, si une connexion ne se déroule pas entre le client et le serveur, l'arrivée d'un ancien paquet de demande de connexion en double cause des problèmes. Si le serveur reçoit un tel paquet, il répondra avec un paquet SYN + ACK. Ce paquet sera déposé par le client car il n'avait pas l'intention de se connecter. Mais le serveur entrera dans l'état de blocage, en attendant que le client envoie les données.

Un autre problème est que si un hôte c envoie une demande de connexion au serveur en usurpant l'identité du client, le serveur répondra avec un ACK au client. Le client jettera ce paquet «ack» et dira au serveur de terminer la connexion. Au cours de cet intervalle d'événements, l'hôte C peut lancer une attaque d'usurpation en envoyant beaucoup de paquets.

Le modèle de poignée de main à trois voies dans TCP / IP

Le modèle de poignée de main à trois est très important. Si nous ne l'utilisons pas et commençons directement à envoyer des données, la demande de réception peut commencer à recevoir des paquets en double. L'attaquant peut avoir la chance de lancer des attaques (comme les DDO) entre une connexion. La procédure de poignée de main à trois est lancée par une machine, et l'autre côté y répond. La convention suivante est utilisée pour expliquer cette procédure:

«Si un site reçoit un paquet avec le numéro de séquence« x », il répondra avec le numéro ACK« x + 1 »."

Résumons les étapes effectuées dans la poignée de main à trois entre une machine client et une machine de serveur:

Étape 1. Dans la première poignée de main, le client envoie un paquet de demande de connexion Syn avec un numéro de séquence initial aléatoire ('x') au serveur.

Étape 2. Dans la deuxième poignée de main, le serveur répond avec un paquet SYN qui a un numéro de séquence aléatoire ('y') et un paquet ACK avec un numéro de séquence ('x + 1') pour reconnaître le numéro de séquence initial ('x') envoyé par le client.

Étape 3. Dans la troisième poignée de main, le client enverra un paquet ACK avec un numéro de séquence ('y + 1') au serveur pour reconnaître le paquet syn ('y') envoyé par le serveur.

Étape 4. Les deux extrémités sont synchronisées maintenant et peuvent commencer à transmettre des données indépendamment. [1]

La procédure de poignée de main à trois voies TCP est toujours valide si les deux côtés démarrent simultanément le processus d'initialisation. Dans une telle situation, chaque machine, après avoir envoyé un paquet «syn», recevra un segment «syn» sans reconnaissance. Si un ancien paquet «syn» en double arrive au récepteur, il peut apparaître au récepteur qu'un processus d'initiation de connexion se déroule en même temps. Nous pouvons utiliser les paquets «réinitialiser» pour supprimer cette ambiguïté.

Terminaison de connexion TCP

L'une ou l'autre des deux côtés peut terminer une connexion TCP. Pour cela, n'importe quel côté peut transmettre un segment TCP avec l'ensemble de bit de nageoires. Cela signifie que le côté envoi n'a plus de données à envoyer. Le côté récepteur accusera ce paquet de nageoires en envoyant un paquet d'accusé de réception. Cela fermera la connexion d'un côté (le côté de l'expéditeur). Maintenant, le récepteur utilisera les mêmes étapes pour résilier la connexion en son nom. Cela fermera complètement la connexion.

Problèmes avec le modèle de poignée de main à trois voies

Dans le cas où un ACK du client au serveur est perdu ou bloqué dans la troisième étape de la poignée de main, le client ignorera cette situation. Le client supposera que la connexion est établie et commencera à envoyer des données. Le serveur attend toujours l'ACK, qui était déjà perdu, il rejette donc les données reçues du client. [2]

Conclusion

Dans ce guide, nous avons appris les procédures de connexion TCP à l'aide d'une poignée de main à trois voies. Nous avons également vu le problème des paquets en double associés à la procédure de poignée à deux et comment il a été résolu avec un modèle de poignée de main à trois voies. De nombreux chercheurs ont contribué à divers articles de recherche pour améliorer le modèle de poignée à trois et surmonter les problèmes qui y sont associés.

Les références

  1. Hsu, f., Hwang, y., Tsai, c., Cai, w., Lee, C., & Chang, k. (2016). Trap: un serveur de poignée de main à trois pour l'establishment de connexion TCP. Sciences appliquées, 6 (11), 358. https: // doi.org / 10.3390 / app6110358
  1. Qin-min Ma, Shou-Yin Liu, Xiao-Jun Wen. (2016). Protocole de poignée de main à trois voies TCP basée sur l'intrication quantique. Journal of Computer, 27 (3), 33-40, doi: 10.3966/199115592016102703004