TCP 3-Wege-Handshake (SYN, SYN-ACK, ACK)
⚡ Intelligente Zusammenfassung
Der TCP-Dreiwege-Handschlag ist das Verbindungsaufbauritual, mit dem jede TCP-Sitzung beginnt. Client und Server tauschen SYN-, SYN-ACK- und ACK-Pakete aus, um die Sequenznummern zu synchronisieren und sicherzustellen, dass beide Seiten bereit sind, bevor auch nur ein einziges Byte an Anwendungsdaten gesendet wird.
Was ist der TCP-Drei-Wege-Handschlag?
Das TCP-Drei-Wege-Handshake ist die Prozedur, die ein Client und ein Server auf einem TCP/IP-Netzwerk Um eine zuverlässige Verbindung herzustellen, bevor Anwendungsdaten ausgetauscht werden, besteht dieser Vorgang, wie der Name schon sagt, aus drei Schritten: Beide Seiten tauschen Synchronisierungs- (SYN) und Bestätigungspakete (ACK) aus und einigen sich auf die anfänglichen Sequenznummern, die sie verwenden werden.
Der Handshake ist so konzipiert, dass beide Endpunkte TCP-Sockets symmetrisch initiieren, aushandeln und abbauen können. Nach Abschluss des Handshakes ist die Verbindung Vollduplex – beide Seiten können parallel senden und empfangen, bis eine der Seiten ein FIN-Paket sendet, um die Sitzung zu beenden.
TCP-Nachrichtentypen
Während des Handshakes und des Teardowns erscheinen wiederholt vier Kontrollflags.
| Nachricht | Beschreibung |
|---|---|
| SYN | Stellt eine Verbindung her und synchronisiert die Sequenznummern zwischen den Geräten. |
| ACK | Bestätigt der Gegenseite den Empfang des vorherigen Segments. |
| SYN-ACK | Eine kombinierte Nachricht – ein SYN vom lokalen Gerät plus ein ACK des vorherigen SYN des Gegenübers. |
| FIN | Wird verwendet, um eine Verbindung ordnungsgemäß zu beenden. |
TCP-Drei-Wege-Handshake-Prozess
Der TCP-Datenverkehr beginnt stets mit einem Drei-Wege-Handschlag. Der Client initiiert die Kommunikation, indem er eine Sitzung mit dem Server anfordert.
Diagramm eines Drei-Wege-Handschlags.
- Schritt 1 — SYN: Der Client sendet ein Segment mit gesetztem SYN-Flag. Damit signalisiert er dem Server: „Ich möchte die Kommunikation aufnehmen“ und schlägt eine anfängliche Sequenznummer vor.
- Schritt 2 — SYN-ACK: Der Server antwortet mit einem Segment, in dem sowohl das SYN- als auch das ACK-Flag gesetzt sind. Das ACK-Flag bestätigt das SYN-Signal des Clients, und das SYN-Flag schlägt die eigene initiale Sequenznummer des Servers vor.
- Schritt 3 — Bestätigung: Der Client bestätigt das SYN-ACK des Servers mit einem abschließenden ACK. Die Verbindung ist nun hergestellt, und beide Seiten können beginnen. transmitAnwendungsdaten.
Beispiel aus der Praxis
Hier ist ein ausgearbeitetes Beispiel mit konkreten Sequenznummern.
- Host X initiiert die Verbindung, indem er ein TCP-SYN-Paket an den Server sendet. Das Paket enthält eine zufällige Anfangssequenznummer – beispielsweise 1
4321— das markiert den Beginn des Byte-Streams, den Host X senden wird. - Der Server empfängt das SYN-Paket und antwortet mit einem SYN-ACK-Paket. Die ACK-Nummer ist die um 1 erhöhte Sequenznummer von Host X (
4322), und der SYN schlägt die eigene initiale Sequenznummer des Servers vor. - Host X antwortet mit einer abschließenden ACK, deren Bestätigungsnummer die um 1 erhöhte Sequenznummer des Servers ist.
Sobald der Datenaustausch abgeschlossen ist, beendet TCP die Verbindung mit einer vierfachen FIN/ACK-Sequenz, damit beide Endpunkte den Socket sauber freigeben können.
Warum TCP einen Drei-Wege-Handschlag benötigt
Der Handschlag ist nicht nur eine Formalität – er löst drei konkrete Probleme, die mit zuverlässigem Byte-Stream-Transport einhergehen:
- Sequenznummernsynchronisation: Beide Kommunikationspartner lernen die anfängliche Sequenznummer der jeweils anderen Seite kennen. TCP verwendet diese, um verlorene oder nicht in der richtigen Reihenfolge befindliche Segmente zu erkennen.
- Verbindungsstatusvereinbarung: Das dritte ACK bestätigt den Empfang des SYN-ACK vom Server, daher beginnt keine Seite mit dem Senden von Daten, bis beide Seiten im SYN-ACK-Zustand sind. ETABLIERT Zustand.
- Schutz vor doppelten Paketen: Zufällige Anfangssequenznummern und zeitlich abgestimmte Handshake-Zustände verhindern, dass veraltete Segmente aus einer vorherigen Sitzung versehentlich akzeptiert werden.
Häufige Probleme beim TCP-Handshake
Der Handshake ist zwar robust, kann aber auf erkennbare Weise ausfallen. Netzwerktechniker beobachten üblicherweise eines der folgenden Probleme:
- SYN-Flood-Angriffe: Ein böswilliger Client sendet Tausende von SYN-Anfragen, ohne auf SYN-ACK-Anfragen zu antworten, und erschöpft so die Verbindungstabelle des Servers. SYN-Cookies sind der Standardschutz.
- Halboffene Verbindungen: Wenn die dritte ACK-Bestätigung verloren geht, bleibt die Verbindung halb offen und wird schließlich durch einen Timeout beendet.
- Firewall- oder NAT-Fehler während des Fluges: Zustandsbehaftete Middleboxes, die ihren Zustand verlieren, können SYN-ACK-Pakete verwerfen und den Client zu einem erneuten Versuch zwingen.
- RST-Resets: Wenn der Server nicht auf dem angeforderten Port lauscht, antwortet er auf eine SYN-Anfrage mit einer RST-Anfrage, wodurch der Verbindungsversuch sofort abgebrochen wird.



