# TCP Receive Window

Die TCP Receive Window (Size), auch kurz RWin oder Window, englisch für „Empfangsfenster(größe)“, ist neben der Maximum Segment Size (MSS) ein Parameter, der die Funktion des Netzwerkprotokolls Transmission Control Protocol (TCP) steuert. Sie bemisst den freien Speicher im Empfangspuffer eines Computers, und damit die maximale Datenmenge, die empfangen werden kann, bevor es zu einem Pufferüberlauf kommt und weitere eingehende Pakete verworfen werden müssen. Umgekehrt darf ein Computer keine größere Datenmenge am Stück senden als von der aktuellen Empfangsfenstergröße erlaubt, um den Überlauf zu vermeiden. Erst nachdem der Empfänger die Daten aus dem Puffer entfernt hat und dem Sender den Empfang bestätigt hat (TCP ACK, von engl. acknowledgment), können weitere Daten gesendet werden.
Bei einem zu klein gewählten Empfangsfenster muss der Sender oft auf Bestätigungspakete warten, um wieder senden zu können, während ein größeres Empfangsfenster dem Sender ein kontinuierlicheres Senden erlaubt. Dafür muss im Fehlerfall, also bei nicht übertragenen oder fehlerhaften Paketen, auch eine größere Menge Daten erneut übertragen werden, nämlich alle bereits versandten, aber vom Empfänger noch nicht quittierten Daten, maximal die Empfangsfenstergröße. Bei sehr schlechter Netzwerkqualität kann also eine geringere Größe des Empfangsfensters performanter sein.
Ferner bestimmt die Empfangsfenstergröße zusammen mit der Round Trip Time (RTT) zwischen Sender und Empfänger den theoretisch möglichen Datendurchsatz, der dem Quotienten aus beiden Größen entspricht.

## Optimaler Wert

Diverse Zeitschriften und Anleitungen in Internetforen versprechen, durch „Tuning“ von RWin und einiger anderer Werte mehr Geschwindigkeit etwa aus einem DSL-Anschluss herauszuholen. In der Praxis ist die erreichbare Beschleunigung – außer bei älteren Betriebssystemen mit sehr breitbandigen Anbindungen – oft zu vernachlässigen, da der vom Betriebssystem fest vorgegebene oder seit Windows Vista automatisch ermittelte Standardwert für übliche Anwendungsfälle angemessen dimensioniert ist.
In Microsoft Windows 9x, Me und NT war das Empfangsfenster standardmäßig 8 Kilobyte groß. Windows 2000 und XP reservieren 16 Kilobyte. Seit Windows Vista und Windows Server 2008 wird die Empfangsfenstergröße auf Basis der Verbindungsart und -qualität automatisch ermittelt und kann dort bis zu 16 Megabyte betragen. Dieses „Auto-Tuning“ genannte Verhalten lässt sich abschalten.
Bis 2006 empfahl die Deutsche Telekom für T-DSL-Anschlüsse einen RWin-Wert von 16 oder 32 Kilobyte Größe. Für Modem- und ISDN-Anschlüsse sollte der Wert maximal 8 Kilobyte betragen.

## Obergrenze

Um die Paketlängen voll auszunutzen und IP-Fragmentierung zu vermeiden, wird für das Empfangsfenster allgemein ein ganzzahliges Vielfaches der Maximum Segment Size (MSS) empfohlen und der Wert deshalb häufig nur als Faktor angegeben. Die MSS wiederum entspricht der Maximum Transmission Unit (MTU) abzüglich 40 Byte für die IP- und TCP-Header (bei IPv6 60 Byte), so dass bei einer MTU von beispielsweise 1492 Byte (Standard der meisten Internetdienstanbieter) die MSS 1452 Byte beträgt.
Im TCP-Header sind 16 Bit für den RWin-Wert vorgesehen, was maximal 65.535 Byte entspricht. Als größtes ganzzahliges Vielfaches, das kleiner als diese Obergrenze ist, ergibt sich beispielsweise für Ethernet mit einer MTU von typischerweise 1500 Byte und einer entsprechenden MSS von 1460 Byte ein maximaler RWin-Wert von 44 × 1460 = 64.240 Byte. Für ADSL-Verbindungen, welche die Segmentgröße gemäß PPP over Ethernet um 8 Byte reduzieren, ergibt sich entsprechend ein maximaler RWin-Wert von 45 × 1452 = 65.340 Byte.

### TCP Window Scale Option

RFC 1323 beschreibt eine TCP Window Scale Option (kurz Window Scaling, englisch für „Fensterskalierung“) genannte Erweiterung des TCP-Headers, die es erlaubt, den RWin-Wert mit einem Faktor von bis zu 2$^{14}$ zu multiplizieren und damit auf maximal 1 Gigabyte zu erhöhen. In Microsoft Windows ist diese Option seit Windows 2000 optional verfügbar und seit Windows Server 2008 standardmäßig aktiviert, aber auf 16 Megabyte begrenzt. Die Option wird beim Verbindungsaufbau übermittelt und greift nur, wenn sie von beiden Seiten unterstützt wird.