wieso hat man sich dafür entschieden einen 3 Wege Handshake bei TCP durchzuführen? Insbesondere warum müssen 3 Nachrichten ausgetauscht werden? Hätte die Funktionalität nicht mit 2 oder mehr als 3 Nachrichten ebenso erledigt werden können? Man findet zwar überall wie der Handshake funktioniert und das er die Grundlage für die Datenübertragung (verbindungsorientiert) darstellt aber nicht warum dieses Protokoll so umgesetzt wurde. Wäre über eine Antwort dankbar.
Beim Verbindungsaufbau sind es 3, beim Abbau 4 Nachrichten. Ohne auf die Details einzugehen: TCP/IP arbeitet mit SYN, FIN und ACK Flags. Ein Netzwerkpaket kann ein oder mehrere dieser Flags gleichzeitig gesetzt haben (es sind einzelne gesetzte Bits im Control Flags-Byte). Um jetzt zueinander zu finden benötigt man eigentlich 4 Nachrichten:
1.) A an B: SYN (Hallo !?)
2.) B an A: ACK (SYN empfangen)
3.) B an A: SYN (für den Rückweg …)
4.) A an B: ACK (SYN empfangen)
Wie man sofort sieht, kann man die immer sofort aufeinander folgenden Flags der Pakete 2 und 3 von B zu A zusammen in ein Netzwerkpaket packen, in dem einfach SYN und ACK Flag Bit gesetzt werden. Deshalb besteht der Aufbau einer Verbindung aus 3 Paketen.
Beim Abbau braucht es dagegen 4 Pakete:
1.) A an B: FIN (Bitte Verbindung schließen)
2.) B an A: ACK (FIN erhalten)
…
3.) B an A: FIN (Verbindung wunschgemäß geschlossen)
4.) A an B: ACK (FIN erhalten)
Zwischen 2 und 3 kann B noch eine Weile mit den Daten beschäftigt sein, bis er den Verbindungsabbau ausführt, außerdem kann sowohl A als auch B jederzeit beschließen, die von A initiierte Sitzung trennen zu wollen, ersterer weil er keine Daten mehr hat, zweiterer weil er keine mehr entgegennehmen kann). Deshalb muss man hier alle 4 Pakete aussitzen, eine Zusamenfassung 2+3 ist nicht sinnvoll.
…Armin
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]