Das Sliding Window (gleitendes Fenster) ist eine Grundtechnik der Netzwerk-Kommunikation: Der Sender darf mehrere Datenpakete gleichzeitig auf die Reise schicken, ohne auf die Bestätigung (ACK) des ersten zu warten. Das Fenster „gleitet“ dabei über den Datenstrom – neue Pakete rücken nach, sobald alte bestätigt sind. So steigert das Verfahren den Durchsatz gegenüber dem simplen Stop-and-Wait, bei dem jedes Paket einzeln bestätigt werden muss.

Fenster und Sequenznummern

Jedes Netzwerkpaket trägt eine Sequenznummer. Das Fenster legt fest, wie viele unbestätigte Pakete der Sender maximal unterwegs haben darf. Empfängt der Sender ein ACK, schiebt er das Fenster nach vorne und darf das nächste Paket senden. Die Fenstergröße ist ein Kompromiss: Ein großes Fenster nutzt die Leitung besser (siehe Throughput), ein kleines Fenster hält Überlastung und Puffer klein.

Zuverlässigkeit: Go-Back-N und Selective Repeat

Bei Verlust eines Pakets greifen zwei klassische ARQ-Strategien (Automatic Repeat reQuest):

  • Go-Back-N: Der Empfänger verwirft alle Pakete nach der erwarteten Sequenznummer; der Sender muss ab dem verlorenen Paket alles erneut senden. Einfach, aber bei hoher Fehlerrate verschwenderisch.
  • Selective Repeat: Der Empfänger puffert Pakete, die nach dem Verlust ankommen; nur das fehlende Paket wird wiederholt. Effizienter, benötigt aber größere Puffer und mehr Sequenznummern.

TCP: Das Sliding Window in der Praxis

TCP kombiniert zwei Fenster: Das Empfangsfenster (Receive Window) verhindert Flusskontrolle – der Sender überflutet den Empfänger nicht, weil dessen Puffer voll läuft. Das Congestion Window (cwnd) begrenzt die Datenmenge im Netz und passt sich der Netzlast an. UDP kennt kein solches Fenster – es liefert Pakete ohne Ordnung und Bestätigung.

  • Slow Start: TCP beginnt klein und verdoppelt das Congestion Window pro Runde, bis eine Schwelle erreicht ist.
  • AIMD: Danach wächst das Fenster additiv (Fenster +1 pro RTT) und schrumpft bei Paketverlust multiplikativ (halbieren).

Grenzen und Window-Scaling

Die Fenstergröße von TCP war klassisch auf 16 Bit begrenzt (maximal 65.535 Bytes). Auf schnellen Verbindungen mit hohem Verzögerungs-Produkt (Latenz × Bandbreite) reicht das nicht aus – eine Satellitenverbindung mit 155 Mbit/s und 300 ms Verzögerung bräuchte ein Fenster von mehreren Megabytes. Die Window-Scale-Option (RFC 7323, Nachfolger von RFC 1323) erweitert das Fenster daher auf bis zu 1 Gigabyte.

Verwandte Grundlagen: Quality of Service, Bandbreite, Ping und Traceroute.