11. Zadania warstwy transportowej

11.3. Okno TCP

Niezawodność dostarczenia danych w ramach sesji z wykorzystaniem protokołu TCP polega na przesłaniu przez klienta potwierdzenia odebrania wcześniej przesłanych danych. Zanim serwer będzie mógł wysłać kolejną porcję danych do klienta, musi otrzymać takie potwierdzenie odbioru. Czasami powoduje to opóźnienia w dostarczaniu segmentów, ponieważ nie są one wysyłane w sposób ciągły. Jednak te problemy są dopuszczalne, gdy wymagana jest niezawodność komunikacji.

Zakładając, że w segmencie o numerze sekwencyjnym 1 zostanie wysłanych 1000 bajtów danych, gdy klient odbierze pierwszą część danych, wyśle ​​segment z numerem potwierdzenia 1001 do serwera. Gdy serwer wyśle ​​ jeszcze 1000 bajtów, otrzymanym numerem potwierdzenia będzie 2001, następna liczba to 3001, następna 4001 i tak dalej.

Oczywiście w rzeczywistości, gdy host musi każdorazowo potwierdzać otrzymanie tak małej ilości danych, może to spowodować duże przeciążenie łącza, np. czas ładowania strony może być długi. W związku z tym przesyłanych jest więcej danych, które są potwierdzane informacją zwrotną. Ilość danych, które serwer może wysłać przed otrzymaniem potwierdzenia od klienta, nazywana jest rozmiarem okna.

Rozmiar ten jest określony w nagłówku segmentu TCP i oprócz określania, ile danych można przesłać bez potwierdzenia, pozwala kontrolować przepływ danych między urządzeniami. Jeśli klient napotka blokowanie podczas odbierania danych i dany segment zostanie utracony, urządzenie może wysłać informacje do serwera, aby zmniejszyć rozmiar tego okna, ilość danych, które można odebrać bez potwierdzenia, spowalniając transfer, ale zapobiegając utracie segmentu. Po pewnym czasie rozmiar okna powraca do swojego pierwotnego rozmiaru. Zmiana rozmiaru okna podczas transferu nazywana jest oknem dynamicznym lub oknem przesuwnym.