Aby zapewnić niezawodność zorientowanego połączeniowo transferu
danych, pakiety danych muszą być dostarczane do odbiorcy w tej samej
kolejności, w której zostały wysłane. Przesyłanie danych za pomocą danego
protokołu nie powiedzie się, jeśli jakieś pakiety danych zostaną utracone,
uszkodzone, powielone lub odebrane w innej kolejności. Łatwym rozwiązaniem jest
potwierdzanie przez odbiorcę odbioru każdego pakietu przed wysłaniem kolejnego.

Gdyby nadawca musiał czekać na potwierdzenie po wysłaniu każdego
pakietu, przepustowość byłaby niska. Z tego powodu w przypadku większości
niezawodnych protokołów zorientowanych połączeniowo dozwolone jest pozostawanie
więcej niż jednego pakietu bez potwierdzenia w danym czasie. Czas pozostały po
zakończeniu transmisji pakietu danych przez nadawcę i przed zakończeniem
przetwarzania otrzymanego przez niego potwierdzenia jest wykorzystywany do
przesłania większej ilości danych. Liczba pakietów danych, które nadawca może
wysłać przed otrzymaniem potwierdzenia, jest określana jako rozmiar okna lub
okno.
Protokół TCP wykorzystuje potwierdzenia typu expectational.
Potwierdzenia typu expectational oznaczają, że numer potwierdzenia odnosi się
do pakietu, który jest oczekiwany jako następny. Obrazowym pojęciem opisującym
dynamiczną negocjację rozmiaru okna podczas sesji TCP jest okienkowanie.
Okienkowanie to mechanizm kontroli przepływu. Wymaga ono, żeby urządzenie
źródłowe otrzymywało od adresata potwierdzenie po wysłaniu określonej ilości
danych. Odbierający proces TCP zgłasza „okno" do wysyłającego procesu TCP.
Okno to określa liczbę pakietów, poczynając od numeru potwierdzenia, do których
odebrania jest obecnie gotów odbierający proces TCP.
Przy rozmiarze okna
równym 3 urządzenie źródłowe może wysłać do adresata trzy bajty. Urządzenie
źródłowe musi następnie czekać na potwierdzenie. Gdy adresat otrzyma trzy
bajty, wysyła potwierdzenie do urządzenia źródłowego, które teraz może wysłać
kolejne trzy bajty. Jeśli adresat z powodu przepełnienia buforów nie otrzyma
tych trzech bajtów, to nie wyśle potwierdzenia. Ponieważ źródło nie otrzyma
potwierdzenia, będzie to oznaczało, że bajty powinny być wysłane ponownie, a
szybkość transmisji powinna zostać zmniejszona.
Jak pokazano na rysunku
, nadawca wysyła trzy pakiety przed rozpoczęciem oczekiwania na
potwierdzenie ACK. Jeśli odbiorca może obsłużyć okno o rozmiarze tylko dwóch
pakietów, z okna odrzucony zostaje pakiet trzeci, określa się go jako następny,
a nowa wartość rozmiaru okna jest określana jako dwa. Nadawca wysyła kolejne
dwa pakiety, lecz ma ciągle ustawiony rozmiar okna równy trzy. Oznacza to, że
nadawca będzie nadal oczekiwał potwierdzenia od odbiorcy po wysłaniu trzech
pakietów. Odbiorca odpowiada, żądając piątego pakietu i nadal określając
rozmiar okna równy dwa.