Pourquoi le protocole TCP utilise-t-il une poignée de main à trois voies lors de l'établissement d'une connexion ? En d'autres termes, pourquoi n'est-il pas suffisant d'utiliser un handshake à deux voies ?
Réponses
Trop de publicités?Ainsi, les deux extrémités peuvent avoir la certitude que l'autre sait que la connexion est établie.
EDIT : La connexion bidirectionnelle n'est pas suffisante, car le destinataire ne peut pas savoir que l'expéditeur sait que le destinataire a répondu et que la connexion est prête à être établie, ce qui la rend (la connexion par poignée de main bidirectionnelle) peu fiable par rapport à la poignée de main tridirectionnelle.
Le mécanisme de poignée de main utilisé dans le TCP est conçu pour que deux hôtes, qui tentent de communiquer, puissent négocier les paramètres de la connexion réseau avant d'entamer la communication. Les deux parties peuvent supposer que l'autre ordinateur est prêt et commencer à envoyer des données de manière fiable.
Voici un schéma simplifié des paquets envoyés de part et d'autre pendant la poignée de main :
SYN ->
SYN received
Host A <- SYN ACK Host B
SYN ACK received
ACK ->
ACK received
TCP connection is established
Les messages SYN (synchronisation) et ACK (accusé de réception) sont spécifiés par un bit/numéro dans l'en-tête TCP du segment.
Le processus est également conçu de manière à ce que les deux parties puissent initier et négocier des connexions distinctes en même temps.
Pour mettre fin à une connexion entre deux ordinateurs, une autre communication à trois voies est effectuée pour mettre fin à la connexion TCP. L'établissement et la fermeture d'une connexion TCP font partie de ce qui fait du TCP un protocole fiable.
Voir aussi Quelle est la différence entre UDP et TCP ?
Réalisez qu'il s'agit en réalité d'une poignée de main à quatre voies (deux dans chaque direction). Il y a un SYN -> ACK et un SYN <- ACK. L'hôte B gagne du temps en envoyant son SYN en même temps que son ACK à l'hôte A.
Par ailleurs, Dentrasi a déclaré que la poignée de main à trois voies empêchait l'usurpation d'identité, ce qui n'est pas tout à fait vrai.
Pour plus d'informations, consultez le site nmap : http://nmap.org/book/osdetect-usage.html
"T Les systèmes dont la génération du numéro de séquence initial du TCP est médiocre sont vulnérables aux attaques aveugles d'usurpation aveugles. En d'autres termes, vous pouvez établir une connexion complète à ces systèmes et envoyer (mais pas recevoir) des données tout en tout en usurpant une adresse IP différente. Les journaux de la Les journaux de la cible indiqueront l'adresse et vous pouvez tirer parti de la relation de confiance qui existe entre les deux systèmes. relation de confiance entre eux. Cette Cette attaque a fait fureur au milieu des années quatre-vingt-dix, lorsque les gens utilisaient couramment [ ] sans mot de passe à partir d'un compte adresses IP de confiance. Kevin Mitnick est est présumé s'introduire dans les ordinateurs de Tsutomu Shimomura en décembre 1994. de Tsutomu Shimomura en décembre 1994".
Pour plus d'informations sur les attaques de prédiction de séquence TCP, cliquez ici : http://en.wikipedia.org/wiki/TCP_sequence_prediction_attack
Explication non technique Une poignée de main à 3 voies est nécessaire pour une conversation/connexion en duplex intégral. Une connexion signifie un accord entre deux parties. Un accord signifie que lorsque X envoie, Y reçoit et lorsque Y envoie, X reçoit. Chacun de ces accords unilatéraux nécessite deux étapes : demander la permission (SYN) et savoir que l'autre va écouter/recevoir/prendre (ACK) ce que vous envoyez. Il y a donc deux étapes SYN-ACK.
Il s'agit essentiellement d'une poignée de main à quatre voies, l'étape 2 (envoi d'un ACK à X par Y) et l'étape 3 (envoi d'un SYN à X par Y) sont fusionnées (l'étape 3 est superposée à l'étape 2), ce qui aboutit finalement à une seule étape. Cela est possible car les deux étapes sont envoyées en même temps par Y (le même hôte) et l'information est transmise dans un bit de l'en-tête TCP (pas de problème de surdimensionnement). Au total, il y a donc 3 étapes au lieu de 4.
tech-explication -- TCP est un protocole à états, la façon dont sa machine à états fonctionne et change ses états est symétrique aux deux extrémités. L'état établi est atteint lorsque vous recevez l'ACK de l'autre machine. Pour que les deux entités atteignent l'état de connexion établie, les machines d'état doivent recevoir un ACK. La réception d'un ACK est donc importante, et pour recevoir un ACK, un hôte doit envoyer un SYN. Encore une fois, le processus en 4 étapes a été fusionné en 3 étapes, voir l'explication citée.
Les autres sont des détails, comme le choix d'une valeur SYN aléatoire, qui permet d'éviter les attaques par prédiction. En ce qui concerne l'attaque, Man-in-the-middle est imminent. ps mettez un commentaire si quelqu'un veut savoir comment. Je pense que la plupart d'entre vous sauront comment faire, c'est très évident, donc je vous épargne du temps de lecture.
- Réponses précédentes
- Plus de réponses