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.


