Podczas korzystania z protokołu TCP urządzenia muszą najpierw nawiązać połączenie z systemem równorzędnym przed transmisją danych,
aby sesja
połączenia zorientowana została ustanowiona między hostem A i hostem B.
Jedna maszyna zainicjuje połączenie, które musi następnie zostać zaakceptowane przez drugą maszynę.
Protokoły modułów oprogramowania w systemach operacyjnych urządzeń hosta komunikują się ze
sobą, wysyłając komunikaty przez sieć, aby sprawdzić, czy transfer jest
autoryzowany i że obie strony
są gotowe do przesłania danych.
Aby to nastąpiło, następuje trójstronne uzgadnianie między urządzeniami hosta używającymi protokołu TCP.
Zatem host inicjujący sesję ustawi flagę SYN lub bit SYN w nagłówku
TCP początkowego segmentu wysyłającemu do hosta B.
Host A wybierze również początkowy numer sekwencji, który w
tym przykładzie powiedzmy 100.
Zatem flaga kontrolna SYN jest ustawiona, a numer
sekwencji jest ustawiony na wartość początkową równą 100.
Jest to używane do rozpoczęcia procesu uzgadniania.
Ten segment synchronizacji określa również numer portu, z którym chce nawiązać
połączenie, na przykład port 80 lub HTTP.
Host po prawej stronie będzie oczekiwał na żądanie połączenia od zdalnego klienta, w
tym przypadku hosta A.
kiedy SYN jest odebrany i
zaakceptowany host b odeśle segment TCP z ustawionymi flagami SYN i ACK.
Zatem flagi kontrolne SYN i ACK są włączone
i służą do negocjowania połączenia i potwierdzania odbioru
segmentu synchronizacji inicjałów nadawcy.
B ustawia również początkowy numer sekwencji, aby wskazać
następny numer kolejnego bajtu danych, które spodziewa się
odebrać od hosta A.
host B ustawia także flagę potwierdzenia, w tym
przypadku 101, jak wskazuje flaga ACK, następna porcja danych, którą host oczekuje odebrać.
Tak więc host A początkowo wysłał numer sekwencyjny 100
i host B, w tym przypadku przyjmując, że rozmiar okna wynoszący 1
odsyła potwierdzenie 101.
Trzeci krok w potrójnym uzgadnianiu polega na tym, że host inicjujący
w tym przypadku host A odebrał SYN z hosta B i odsyła segment TCP z polem kontrolnym ustawionym
na ACK, innymi słowy potwierdzeniem. 36 W związku z tym host A potwierdza następny segment,
który spodziewa się odebrać od hosta B w tym przypadku 301, początkowo host B wysłał sekwencyjny numer 300.
Tak więc host A spodziewa się następnego segmentu 301.
Host A ustawia numer sekwencji na 101.
Początkowy segment wysłany to 100, a następny w tym przypadku to 101, ponieważ bit
SYN lub flaga SYN
jest rozbrojony, co potwierdza pomyślne zakończenie potrójnego uzgadniania.
Aby powtórzyć, bity kontrolne lub flagi początkowo A wysyłają segment
z ustawionym bitem SYN lub SYN.
Zatem flaga kontrolna SYN jest ustawiona na 1. 46 Host B w drugim kroku potrójnego
uzgadniania ustawia swoje flagi kontrolne lub bity na SYN ACK.
Innymi słowy, bit SYN jest ustawiony na
1, a bit ACK na 1.
W ostatnim kroku potrójnego
uzgadniania Host A ustawia bit ACK na 1 lub włącza flagę ACK.
Bit SYN lub flaga SYN jest ustawiony na 0, aby wskazać,
że potrójne uzgadnianie zakończyło się pomyślnie.
Teraz numery porządkowe i podziękowania mogą powodować wiele zamieszania, więc teraz zamierzam je
bardziej szczegółowo wyjaśnić.
Zakładamy, że w tym przykładzie użyto okna o rozmiarze 1.
Teraz, jeśli pamiętasz rozmiar okna, to maksymalna ilość danych,
które odbiorca może odbierać od nadawcy i przetwarzać poprawnie. 59 Zakładamy, że tylko 1 segment
może zostać przesłany w dowolnym momencie, zanim zostanie odebrane
potwierdzenie potwierdzające odbiór tego segmentu.
Przyjmijmy więc, że A zaczyna się od początkowej sekwencji
5 z powodu rozmiaru okna 1, tylko 1 segment może być wysłany z A do B.
B pomyślnie odbiera segment od A i
potwierdza następny segment, który chce otrzymać.
więc zamiast potwierdzać otrzymanie numeru sekwencyjnego 5,
potwierdza on numer sekwencyjny
6, co oznacza, że wszystkie poprzednie numery sekwencji będą poprawnie odbierane.
Zatem B potwierdza w tym przypadku sekwencję numer 6, ale B może
zaczynać się od początkowego numeru sekwencyjnego 10. 71 więc w nagłówku TCP B mówi A, że
jego początkowy numer sekwencyjny to 10 i że pomyślnie otrzymał sekwencję o numerze 5 od
A i oczekuje sekwencji numer 6 od A w następnym pakiecie.
Załóżmy, że z powodzeniem odbiera ten segment,
więc A będzie teraz wysyłać segment 6 do B, innymi
słowy, kolejny numer sekwencji.
A również potwierdza odbiór segmentu 10 od hosta B.
A więc A pomyślnie odebrał segment o numerze kolejnym 10.
Należy jeszcze
raz zaznaczyć, że host może losowo
wybierać początkowe numery sekwencji, a
więc w początkowym potrójnym uzgadnianiu, że informacja musi zostać
przekazana między dwoma hostami, aby wiedzieli, jakie są początkowe numery sekwencji. 84 Zatem ponownie A wysyła sekwencję numer 6 do B i potwierdza sekwencję 11.
Załóżmy, że B z powodzeniem
odbiera ten segment i dlatego potwierdza dla segmentu 7.
Następny segment, który ma
otrzymać ponownie 7 w potwierdzeniu wskazuje, że poprzedni segment został pomyślnie odebrany.
Zatem host B, ustawiając numer sekwencji na 7, mówi hostowi A, że
numer sekwencji 6 został pomyślnie odebrany.
Host B wysyła numer sekwencji 11, ponieważ jest
to następny numer sekwencji, który A oczekuje odebrać.
Należy jeszcze raz zauważyć, że początkowe numery sekwencji,
które host oczekuje, a kolejność numerów na przykład
11 oznacza, że pomyślnie otrzymano numer porządkowy 10 i poprzedni numer sekwencji.
Teraz kontrola przepływu po raz kolejny zapobiega problemowi, w którym nadawca wysyła tak dużo
danych 99 że bufory odbiornika są przepełnione.
Jeśli jest to bardzo potężna maszyna i jest to starsza maszyna to nie jest tak potężne, możliwe, że A może zostać pokonany bufory B, ponieważ wysyłają tak dużo danych. 103 Tak więc B potrzebuje mechanizmu, aby poinformować A o spowolnieniu, aby D
mógł pomyślnie przetworzyć ruch, który odbiera. 105 Jako przykład załóżmy, że rozmiar okna w tym przykładzie
wynosi 3 zamiast 1. 107 A może wysłać 3 segmenty danych przed uzyskaniem potwierdzenia. 108 Zaletą zwiększenia rozmiaru okna jest przepustowość może znacznie wzrosnąć, ponieważ host może przesłać więcej danych z mniejszą liczbą potwierdzeń, a zatem czasy podróży w obie strony drastycznie spadają. 111 W tym przykładzie A wysyła 3 segmenty do B. 112 Załóżmy, że
odebrany bufor B jest pełny i nie może obsłużyć takiej ilości danych 114 B wyśle nie gotowy wskaźnik do A 115 i robi to poprzez ustawienie rozmiaru okna na 0.
To mówi nadawcy, aby przestał wysyłać dane i czekać na gotowy wskaźnik od odbiornika. 118 Zakładając, że host B jest teraz w stanie przetworzyć dane w jego buforze odbioru i może teraz otrzymywać więcej danych. 120 Może wysłać gotowy wskaźnik do A, aby powiadomić go o wznowieniu wysyłania datagramów.
więc A wznawia transmisję, wysyłając na przykład 3 segmenty do B. 122 Ponieważ rozmiar okna wynosi 3. 123 Proszę zauważyć w tle, że host TCP w rozmowie może negocjować różne
parametry, a jednym z nich jest kontrola przepływu 125 gdzie odbiornik może poinformować nadawcę o spowolnieniu lub przestać wysyłać dane 126 dopóki odbiornik nie ma dostępnej przestrzeni buforowej do odbioru przesyłanych segmentów.
Pozwala to na komunikację pomiędzy bardzo potężnymi lub szybka maszyna i wolniejsza lub mniej wydajna maszyna gdzie mogą wynegocjować szybkość transmisji.