Bevor TCP Anwendungsdaten sendet, muss es den Status an beiden Enden der Verbindung herstellen. Dieser Einrichtungsprozess ist der TCP-Drei-Wege-Handshake. Es passiert so schnell, dass die meisten Benutzer es gar nicht bemerken. Wenn sich Websites jedoch langsam anfühlen, Ports geschlossen erscheinen oder Firewalls Anwendungen auf seltsame Weise unterbrechen, beginnt die Geschichte oft mit dem Handschlag.
Der TCP-Drei-Wege-Handshake
Die drei Pakete sind:
- SYN vom Kunden
- SYN-ACK vom Server
- ACK vom Kunden
Danach wird die Verbindung hergestellt und die normale Datenübertragung beginnt.
Schritt-für-Schritt-Erklärung
1. Client sendet SYN
Der Client sagt praktisch: „Ich möchte eine Verbindung herstellen, und hier ist meine anfängliche Sequenznummer.“
2. Der Server antwortet mit SYN-ACK
Der Server bestätigt die Sequenznummer des Clients und sendet seine eigene Startsequenznummer zurück.
3. Client sendet ACK
Der Client bestätigt die Sequenznummer des Servers. An dieser Stelle sind sich beide Seiten über die Grundvoraussetzungen einig, die für einen zuverlässigen Datenaustausch erforderlich sind.
Warum TCP einen Handshake benötigt
Der Händedruck ist nicht nur eine Zeremonie. Es löst echte Protokollprobleme:
- bestätigt, dass beide Endpunkte senden und empfangen können
- verhandelt die anfängliche Sequenzverfolgung
- verhindert, dass verzögerte Pakete von älteren Sitzungen mit aktuellem Datenverkehr verwechselt werden
- legt den für eine zuverlässige Lieferung erforderlichen Zustand fest
Ohne dieses Setup könnte TCP nicht das geordnete, zuverlässige Stream-Verhalten bereitstellen, das Anwendungen erwarten.
Warum TCP drei statt zwei Schritte verwendet
Ein zweistufiger Austausch würde nicht vollständig beweisen, dass beide Seiten bereit sind, die Sequenznummern des anderen zu übertragen und zu bestätigen. Das dritte Paket bestätigt, dass die Antwort des Servers empfangen wurde und dass der Verbindungsstatus in beide Richtungen synchronisiert ist.
Deshalb ist der Handshake ein „Drei-Wege“-Handshake und nicht einfach ein Anfrage-Antwort-Paar.
Was passiert, wenn der Handshake fehlschlägt
Handshake-Fehler fallen normalerweise in einige erkennbare Muster.
SYN gesendet, keine Antwort
Mögliche Ursachen:
- Zielhost ist ausgefallen
- Firewall verwirft Pakete stillschweigend
- falsche IP oder falscher Port
- Routing-Problem im Pfad
Häufige Symptome:
- Verbindungszeitüberschreitung
- Der Browser dreht sich eine Weile und schlägt dann fehl
telnetoder die Client-App bleibt hängen, bevor sie aufgibt
SYN gesendet, RST zurückgegeben
Mögliche Ursachen:
- Port ist geschlossen
- Dienst hört nicht zu
- Firewall ist so konfiguriert, dass sie ablehnt statt verwirft
Häufiges Symptom:
- sofort „Verbindung abgelehnt“
SYN und SYN-ACK erscheinen, dann wird die Sitzung beendet
Mögliche Ursachen:
- asymmetrisches Routing
- Stateful-Firewall-Problem
- defektes NAT-Gerät
- Fehlkonfiguration des Load Balancers
- Hostbasiertes Sicherheitsprodukt stört nach der ersten Annahme
So sieht der Handshake in Wireshark aus
Wenn Sie Datenverkehr in Wireshark erfassen, sieht ein fehlerfreier TCP-Start normalerweise so aus:
SYNSYN, ACKACK
Wenn Sie SYN-Pakete nur wiederholt erneut übertragen sehen, kommt die Serverantwort nie zurück. Wenn Sie ein RST sehen, hat das Ziel die Verbindung aktiv abgelehnt. Diese Transparenz ist der Grund, warum Paketerfassungen für die Fehlerbehebung im Netzwerk so nützlich sind.
Warum Händeschütteln für die Leistung wichtig ist
Jede TCP-Verbindung beginnt mit mindestens einem Roundtrip, bevor der Datenfluss beginnt.
Wenn die Latenz 100 ms beträgt:
- Der Handshake kostet etwa eine Hin- und Rückfahrt
- TLS fügt danach weitere Verhandlungen hinzu
- kurzlebige Verbindungen fühlen sich spürbar langsamer an
Dies ist einer der Gründe, warum sich die moderne Leistungsoptimierung um die Wiederverwendung von Verbindungen, das HTTP-Keep-Alive-Verhalten, CDNs und Protokolle wie HTTP/2 und HTTP/3 kümmert.
TCP-Handshake und TLS sind nicht dasselbe
Dies ist eine häufige Ursache für Verwirrung.
- TCP-Handshake stellt die Transportverbindung her.
- TLS-Handshake handelt Verschlüsselung und Zertifikatsvertrauen über dieser Verbindung aus.
Wenn Sie also eine HTTPS-Website öffnen, führt das System normalerweise Folgendes aus:
- TCP-Handshake
- TLS-Handshake
- HTTP-Anfrage und -Antwort
Wenn eine Site nur langsam mit dem Laden beginnt, kann die Verzögerung in einer der Handshake-Schichten liegen.
Zusammenhang mit Port-Scanning
Viele Scanner verlassen sich auf das Handshake-Verhalten:
- SYN-ACK bedeutet oft, dass der Port offen ist
- RST bedeutet normalerweise geschlossen
- keine Antwort bedeutet oft gefiltert oder gelöscht
Das macht den Handshake nicht nur für die Vernetzung, sondern auch für die Aufzählung und Sicherheitstests von zentraler Bedeutung.
SYN-Flood-Angriffe
Eine SYN-Flut missbraucht den Handshake, indem sie eine große Anzahl von SYN-Paketen sendet, ohne die endgültige Bestätigung abzuschließen. Der Server reserviert Ressourcen für viele halboffene Sitzungen und kann überlastet werden.
Häufige Abhilfemaßnahmen:
- SYN-Cookies
- Ratenbegrenzung
- Upstream-Filterung
- Firewall-Schutz
- Load-Balancer-Optimierung
Verbindungsabbau ist anders
Beim Starten einer Sitzung wird der Drei-Wege-Handshake verwendet. Für das Schließen wird normalerweise ein anderer Prozess verwendet, der FIN- und ACK-Pakete in beide Richtungen umfasst.
Dieser Teardown ist wichtig, wenn feststeckende Sockets debuggt werden TIME_WAIT oder CLOSE_WAIT, aber es ist unabhängig vom anfänglichen Verbindungs-Handshake.
Fazit
Der TCP-Handshake ist der dreistufige Start für eine zuverlässige TCP-Kommunikation:
- SYN
- SYN-ACK
- ACK
Es ist wichtig, weil jede auf TCP basierende Webanfrage, SSH-Sitzung, Datenbankverbindung oder jeder API-Aufruf davon abhängt. Wenn bei einer Verbindung eine Zeitüberschreitung auftritt, sie abgelehnt wird oder sich langsam anfühlt, bevor Daten übertragen werden, ist der Handshake einer der ersten Orte, die untersucht werden müssen.