Die Window-Scale-Option (TCP-Option Typ 3) ist eine TCP-Header-Option, die den 16-Bit-Window-Feld des TCP-Headers auf effektiv 30 Bit erweitert. Sie wird im TCP-Segment-Header während des TCP-Drei-Wege-Handshakes ausgehandelt (SYN/SYN-ACK) und bleibt für die gesamte Verbindung fest.

Funktionsweise

Die Option überträgt einen Shift-Count (0-14), der den Skalierungsfaktor 2^Shift angibt. Ein Window-Wert von 65535 mit Shift-Count 7 ergibt ein effektives Fenster von 65535 × 128 = 8.388.480 Byte (≈8 MB). Ohne Window Scale ist das maximale Empfangsfenster auf 65.535 Byte beschränkt — bei hohen Bandbreiten und Latenzen (Long-Fat-Pipes) wäre der Durchsatz massiv begrenzt.

Berechnung der Fenstergröße

Die tatsächliche Fenstergröße ergibt sich aus dem 16-Bit-Window-Wert multipliziert mit 2^Shift-Count. Der Shift-Count darf maximal 14 betragen, was einer Skalierung um den Faktor 16.384 entspricht (maximales Fenster ≈ 1 GB). Linux wählt den Shift-Count automatisch basierend auf dem konfigurierten Empfangsfenster (net.ipv4.tcp_rmem).

Voraussetzungen

  • Beide Endpunkte müssen die Option im SYN/SYN-ACK ankündigen — fehlt sie auf einer Seite, gilt das 16-Bit-Fenster ohne Skalierung.
  • Definiert in RFC 7323 (vormals RFC 1323), Jacobsen/Braden/Borman 1992.
  • Die MTU begrenzt die IP-Paketgröße, während Window Scale das TCP-Fenster skaliert — beide beeinflussen den Durchsatz auf unterschiedlichen Ebenen.

Verwandte Grundlagen

TCP-Segment, SACK, TCP-Timestamps, MSS, TCP, Netzwerkpaket, IPv4/IPv6.