Ein Handshake ist ein vorgelagerter Austausch zwischen zwei Kommunikationspartnern, in dem sie sich auf die Bedingungen ihrer Verbindung einigen, bevor die eigentlichen Nutzdaten fließen. Je nach Protokoll werden dabei Sequenznummern, Verschlüsselungsverfahren, Zertifikate, Authentifizierungsdaten oder andere Parameter ausgehandelt.
Der Handshake ist Voraussetzung dafür, dass beide Seiten konsistent über denselben Zustand sprechen. Er kostet eine messbare Verzögerung — meist ein bis mehrere Roundtrips — und ist deshalb in latenzkritischen Protokollen ein Optimierungsziel.
Bekannte Beispiele
- TCP-Three-Way-Handshake — Client und Server tauschen
SYN,SYN+ACKundACKaus, um Sequenznummern und Verbindungsbereitschaft zu klären. - TLS-Handshake — Aushandlung von Version, Cipher-Suite, Zertifikatsprüfung und Etablierung des Sitzungsschlüssels. In TLS 1.3 reduziert auf einen Roundtrip, mit Wiederaufnahme sogar 0-RTT.
- WLAN-Verbindungsaufbau — der Four-Way-Handshake in WPA2/WPA3 etabliert die Sitzungsschlüssel zwischen Endgerät und Access Point.
- SSH-Handshake — Versions- und Algorithmus-Aushandlung, Schlüsselaustausch, Authentifizierung.
Abgrenzung zu verbindungslosen Protokollen
Verbindungslose Protokolle wie UDP verzichten bewusst auf einen Handshake und senden Datagramme direkt. Das spart Latenz, lässt aber alle Aushandlungen — sofern überhaupt nötig — auf die Anwendungsschicht oder auf darübergelegte Protokolle wie QUIC wandern.