Okno TCP

Damian Stelmach | 26-10-2016

Niezawodność dostarczania danych w sesji z wykorzystaniem protokołu TCP polega na wysyłaniu przez klienta potwierdzeń odbioru wcześniej wysłanych danych. Zanim serwer prześle kolejną porcję danych do klienta, takie potwierdzenie odbioru musi odebrać. Czasami powoduje to opóźnienia w dostarczaniu segmentów ponieważ nie są one wysyłane w sposób ciągły. Uciążliwości te jednak są do przyjęcia, kiedy to wymagana jest niezawodność w komunikacji.

Przyjmijmy, że w ramach jednego segmentu wysyłanych jest 1000 bajtów danych, wartość numeru sekwencyjnego to 1. Kiedy klient odbierze 1 porcję danych, przesyła do serwera segment z numerem potwierdzenia 1001. Oznacza to mnie więcej taki komunikat: odebrałem od ciebie 1000 bajtów, oczekuje na kolejne bajty, zaczynając od bajtu 1001. Kiedy serwer wyśle kolejne 1000 bajtów, to numer potwierdza wysłany do niego jako informacja zwrotna będzie wynosił 2001, następny numer to już 3001, następny 4001 itd.

Wysyłanie segmentu

Oczywiście w rzeczywistości, kiedy to hosty musiałby za każdym razem potwierdzać odebranie tak małej ilości danych spowodowałoby to spory zator na łączach, a przykładowo strony internetowe ładowałyby się bardzo długo. Dlatego też wysyła się więcej segmentów danych, które to potwierdzane są jedną informacją zwrotną. Ilość danych, jaka może być wysłana przez serwer zanim otrzyma on potwierdzenie od klienta nazywana jest wielkością okna, w tym przykładzie wynosi ona 3000 bajtów.

Wielkość okna

Wielkość ta określona jest w nagłówku segmentu TCP i oprócz tego, że określa, jaka ilość danych może zostać wysłana bez potwierdzenia, pozwala jeszcze na sterowanie przepływem danych pomiędzy urządzeniami. Jeśli na kliencie nastąpi zator w przyjmowaniu danych i dany segment zostanie utracony, urządzenie to może wysłać informacje do serwera, o zmniejszeniu wielkość tego okna, czyli ilość danych mogących zostać odebranych bez potwierdzenia, spowalnia to transmisje, ale zapobiega utracie segmentów. Po pewnym czasie wielkość okna przywracana jest to tej początkowej. Zmiana wielkości okna podczas transmisji nazywana jest dynamicznym oknem lub oknem przesuwnym.

Utrata segmentu