SYN-ACK
Kurz: Das zweite Paket im TCP-Three-Way-Handshake — der Server bestätigt das SYN des Clients und signalisiert gleichzeitig seine eigene Verbindungsbereitschaft.
Genauer: Kombiniert zwei Flags in einem Paket: das ACK-Flag (Bestätigung des Client-SYN) und ein eigenes SYN-Flag (Server möchte ebenfalls eine Sequenznummer synchronisieren). Der Client antwortet darauf mit einem reinen ACK, womit die Verbindung steht.
Im Detail
Das SYN-ACK-Paket erfüllt zwei Funktionen gleichzeitig, was den Three-Way-Handshake auf nur drei statt vier Nachrichten reduziert: Es bestätigt (ACK) die Sequenznummer aus dem Client-SYN UND kündigt gleichzeitig (SYN) die eigene, vom Server gewählte Startsequenznummer an. Beide Seiten haben nach dem Austausch von SYN und SYN-ACK bereits die jeweils andere Sequenznummer bestätigt bekommen — nur der Server wartet noch auf eine explizite Bestätigung seiner eigenen Sequenznummer, die im dritten Schritt (reines ACK vom Client) kommt.
Ein Server im Zustand “SYN-RECEIVED” (SYN-ACK gesendet, aber noch kein finales ACK erhalten) hält Ressourcen für die halbfertige Verbindung reserviert — genau diese Wartephase nutzt der SYN-Flood-Angriff aus: Ein Angreifer schickt massenhaft SYN-Pakete mit gefälschten Absenderadressen, der Server antwortet brav mit SYN-ACK an diese (nicht existierenden) Adressen und wartet vergeblich auf das dritte ACK, bis seine Verbindungstabelle voll ist und keine echten Clients mehr durchkommen. Moderne Betriebssysteme nutzen “SYN-Cookies” als Gegenmaßnahme, um diesen Ressourcenverbrauch zu vermeiden.
Siehe auch: SYN, ACK, Three-Way-Handshake