Zmniejszanie rozmiaru okna

Innym sposobem kontroli przepływu danych jest użycie dynamicznego rozmiaru okna. Kiedy sieć jest przeciążona i zdarzają się częste retransmisje, protokół TCP może zmniejszyć rozmiar okna, aby spowodować konieczność częstszego potwierdzania otrzymanych segmentów. To w efekcie wywołuje zmniejszenie tempa przesyłu danych, gdyż nadawca musi częściej czekać na potwierdzenie ich dostarczenia.

W komunikacji, opartej o TCP, to host docelowy ustala rozmiar okna wskazujący ilość bajtów, które jest gotów odebrać w jednej partii danej sesji. Jeśli host odbierający potrzebuje zmniejszyć ilość przesyłanych danych z powodu ograniczenia buforu pamięci, może wysłać zmniejszony rozmiar okna do nadawcy w segmencie potwierdzającym (z ustawionym bitem ACK).

Jak pokazano na rysunku, jeśli odbiorca jest przeciążony, może odpowiedzieć do nadawcy segmentem ze zmniejszonym rozmiarem okna. W przedstawionym przypadku, część transmisji została utracona. Odbiorca zmienił wartość pola "rozmiar okna" w nagłówku TCP z 3000 do 1500, a to oznacza, że nadawca musi zredukować rozmiar okna do 1500.

Jeżeli w czasie dalszej transmisji nie dojdzie do strat w przesyłanych segmentach, odbiorca rozpocznie powiększanie wielkości okna, a co za tym idzie zmniejszy się narzut sieci, ponieważ potwierdzenia będą przesyłane rzadziej. Rozmiar okna będzie rósł, aż do wartości, przy której nastąpi utrata danych, co spowoduje ponowne zmniejszenie wartości rozmiaru okna.

To dynamiczne zwiększanie i zmniejszanie rozmiaru okna jest procesem ciągłym w komunikacji przy użyciu protokołu TCP. W bardzo wydajnych sieciach, w których nie dochodzi do utraty segmentów, rozmiar okna może zostać ustawiony na dużą wartość. W sieciach o bardzo obciążonych łączach, rozmiar okna pozostanie mały.