EMZETT.
Login

Handshake

Kurz: Der Verbindungsaufbau zwischen zwei Systemen, bei dem beide Seiten sich auf Parameter für die weitere Kommunikation einigen, bevor die eigentlichen Daten fließen.

Genauer: Der Begriff wird auf mehreren Ebenen verwendet: Beim TCP-Three-Way-Handshake einigen sich zwei Hosts auf eine verlässliche Verbindung (SYN/SYN-ACK/ACK). Beim TLS-Handshake einigen sich Client und Server zusätzlich auf eine Cipher Suite, tauschen Zertifikate aus und handeln einen Sitzungsschlüssel aus. Erst nach erfolgreichem Handshake beginnt die eigentliche Datenübertragung.

Im Detail

Das Handshake-Prinzip taucht in verschiedenen Netzwerkschichten wieder auf, jeweils mit eigenem Ziel:

TCP-Three-Way-Handshake   - Schicht 4 (Transport): stellt eine verlässliche
                             Verbindung her (SYN, SYN-ACK, ACK)
TLS-Handshake              - Schicht darüber: verhandelt Verschlüsselung,
                             tauscht Zertifikate, handelt Sitzungsschlüssel aus
SSH-Handshake               - ähnlich TLS, aber für SSH-Verbindungen

Wichtig ist die Reihenfolge: Bevor überhaupt ein TLS-Handshake stattfinden kann, muss zuerst der TCP-Three-Way-Handshake erfolgreich abgeschlossen sein — TLS baut auf einer bereits bestehenden, zuverlässigen TCP-Verbindung auf und kümmert sich NUR um Verschlüsselung und Authentizität, nicht um die grundlegende Zustellung der Datenpakete. Bei einer typischen HTTPS-Verbindung passiert also erst der TCP-Handshake, dann der TLS-Handshake, und erst danach beginnt die eigentliche verschlüsselte Datenübertragung.

Ein gescheiterter Handshake ist eine der häufigsten Ursachen für Verbindungsfehler in der Praxis: Läuft der TCP-Handshake nicht durch, ist der Server nicht erreichbar (z. B. wegen einer Firewall-Regel oder weil der Dienst nicht läuft). Läuft der TLS-Handshake nicht durch, liegt meist ein Zertifikatsproblem vor (abgelaufen, falscher Hostname) oder es gibt keine gemeinsam unterstützte Cipher Suite zwischen Client und Server.

Warum überhaupt eine explizite Aushandlungsphase?

Der Grundgedanke hinter jedem Handshake-Prinzip: Zwei Systeme, die vorher nichts voneinander wissen, müssen sich zunächst auf eine gemeinsame “Sprache” einigen, bevor sinnvolle Kommunikation möglich ist — ähnlich wie zwei Menschen, die sich zum ersten Mal treffen, zunächst klären, welche Sprache sie beide sprechen, bevor ein echtes Gespräch beginnt. Ohne diese Aushandlungsphase müssten beide Seiten von vornherein exakt dieselbe, fest vorgegebene Konfiguration nutzen — jede zukünftige Protokoll-Verbesserung würde dann sofort alle älteren, nicht aktualisierten Systeme aus der Kommunikation ausschließen. Der Handshake ermöglicht stattdessen Abwärtskompatibilität: Ein moderner Server kann mit älteren Clients ebenso sprechen wie mit brandneuen, weil beide Seiten im Handshake herausfinden, welche gemeinsamen Fähigkeiten sie haben.

Handshakes jenseits von TCP und TLS

Das Handshake-Prinzip beschränkt sich nicht auf Netzwerkprotokolle: Auch viele andere Kommunikationsformen nutzen dasselbe Grundmuster. Modems einigten sich in den 1990ern beim Einwählen per Telefonleitung über ein charakteristisches, hörbares “Rauschen” auf die beste gemeinsam unterstützte Übertragungsgeschwindigkeit. Bluetooth-Geräte durchlaufen beim “Pairing” einen kryptografischen Handshake, der einen gemeinsamen Schlüssel für die weitere Verbindung etabliert. Selbst auf Anwendungsebene finden sich ähnliche Muster, etwa beim WebSocket-Protokoll, das eine bestehende HTTP-Verbindung per speziellem Handshake in eine dauerhafte, bidirektionale Verbindung “hochstuft” (Upgrade-Header).

Zeitkosten eines Handshakes

Jeder Handshake kostet Zeit — mindestens eine, oft mehrere Netzwerk-Roundtrips, bevor die eigentlichen Nutzdaten fließen können. Bei einer Verbindung mit hoher Latenz (z. B. über eine Satellitenverbindung mit mehreren hundert Millisekunden Umlaufzeit) macht sich das deutlich bemerkbar — ein Grund, warum moderne Protokolle wie TCP Fast Open und TLS 1.3 gezielt daran arbeiten, die Anzahl nötiger Roundtrips im Handshake zu minimieren, besonders für wiederkehrende Verbindungen zu bereits bekannten Zielen.

Siehe auch: Handshake Protocol, Three-Way-Handshake