Kontrola przepływu

Protokół TCP zapewnia m. in. mechanizm kontroli przepływu (ang. flow control). Kontrola przepływu wspiera mechanizm zapewnienia niezawodności transmisji TCP, przez dostosowanie tempa przepływu danych między dwoma usługami w ustanowionej sesji. Kontrola przepływu polega na ustaleniu limitu ilości segmentów, wysyłanych w ciągu, po których oczekuje się otrzymania potwierdzenia.

Założeniem kontroli przepływu, jest przede wszystkim ustalenie przez TCP, ilości danych, które wysłane w jednym ciągu będą akceptowane przez odbiorcę. Nagłówek protokołu TCP zawiera 16-bitowe pole o nazwie „rozmiar okna” (ang. window size). Zawiera ono liczbę określającą ilość danych, które podczas sesji TCP będą akceptowane przez odbiorcę w pojedynczym ciągu (po którym wymagane będzie potwierdzenie dostarczenia). Początkowy rozmiar okna jest ustalany podczas nawiązywania sesji w uzgadnianiu trójetapowym, pomiędzy źródłem, a celem. Po uzgodnieniu, host źródłowy musi ograniczyć ilość segmentów, wysyłanych do odbiorcy, bazując na ustanowionym rozmiarze okna. I tylko wtedy, kiedy po wysłaniu uzgodnionej rozmiarem okna ilości segmentów, źródło otrzyma potwierdzenie dostarczenia, może wysłać kolejną porcję danych.

Podczas przerwy w transmisji, wynikającej z oczekiwania na potwierdzenie, nadawca nie może wysyłać kolejnych danych. W okresach przeciążenia sieci lub zajętości zasobów hosta odbierającego, opóźnienia mogą wydłużać się. Jeśli długość okresu przestoju będzie rosła, efektywne tempo transmisji danych dla tej sesji będzie malało. Urządzenie końcowe wykorzystuje zwolnienie transmisji, aby zredukować konflikt zasobów, który może się pojawić podczas wielu, jednocześnie trwających sesji.

Rysunek przedstawia (w uproszczony sposób), rozmiar okna i numery potwierdzeń. W tym przykładzie, w prezentowanej sesji, początkowy rozmiar okna został ustalony na 3000 bajtów. Kiedy nadawca wysłał 3000 bajtów, musi poczekać na potwierdzenie otrzymania tych 3000 bajtów, zanim w tej sesji wyśle kolejne segmenty. Jak tylko nadawca otrzyma potwierdzenie od odbiorcy, może wysyłać kolejne 3000 bajtów.

Protokół TCP używa rozmiaru okna, aby zarządzać przepustowością, tak aby osiągnęła ona możliwą wielkość maksymalną, którą urządzenie docelowe będzie mogło przetworzyć, bez strat i konieczności retransmisji.