MECHANIZM PRZUWNEGO OKNA

Transkrypt

MECHANIZM PRZUWNEGO OKNA
SEGMENT TCP – CZ. I
Numer portu źródłowego (ang. Source port),
przeznaczenia (ang. Destination port) –
identyfikują aplikacje wysyłającą odbierającą
dane, te dwie wielkości wraz adresami IP
źródła i przeznaczenia umieszczonymi w
nagłówku IP, jednoznacznie identyfikują każde
połączenie
Numer sekwencyjny (ang. Sequence number)
– identyfikuje bajt w strumieniu danych,
przesyłanych między nadawcą a odbiorcą,
który jest pierwszym bajtem w przesyłanym
segmencie. Numer ten po osiągnięciu 2^32 - 1
rozpoczyna się znowu od zera
Numer potwierdzenia – zawiera kolejny numer
sekwencyjny, którego nadejścia spodziewa się
wysyłający potwierdzenie. Pole to jest ważne
przy ustawieniu bitu ACK.
Długość nagłówka (ang. Data offset) - pole
podaje długość nagłówka w postaci słów 32
bitowych, typowy rozmiar bez opcji wynosi 20
bajtów.
SEGMENT TCP – CZ. II
Bity znaczników (ang. Flags):
URG
- wskaźnik ważności pola wskaźnika
przynaglającego
ACK
- wskaźnik ważności pola numer
potwierdzenia
PSH
- odbiorca powinien jak najszybciej
przesłać dane do aplikacji
RST
- restart połączenia
SYN
- synchronizacja numerów
sekwencyjnych w celu inicjalizacji
połączenia
FIN
- zakończenie wysyłania danych
Rozmiar okna (ang. Window) – liczba bajtów,
liczba bajtów poczynając od tego, który
określony został przez pole numeru
potwierdzenia, które odbiorca będzie w stanie
zaakceptować
Suma kontrolna (ang. Checksum) – liczona
dla danych jak i nagłówka, weryfikowana po
stronie odbiorczej
SEGMENT TCP – CZ. III
Wskaźnik ważności (ang. Urgent pointer) brane pod uwagę przy ustawieniu bitu URG,
jest on dodatnim przesunięciem, które musi
być dodane do pola numeru sekwencyjnego
segmentu, aby uzyskać numer sekwencyjny
ostatniego bajtu ważnych danych
Opcje (ang. Options) – może określać np.
maksymalną długość segmentu MSS (ustalana
przy nawiązaniu połączenia, maksymalny
rozmiar segmentu jaki nadawca chce
otrzymać),
często
określa
również
współczynnik rozmiaru okna (zwykle w bajtach,
przy ustawieniu skala okna jest ustawiona na F
wówczas rozmiar okna jest mnożony przez
2^F, przy czym maksymalnie F=14) oraz
znaczniki
czasu
wykorzystywane
przy
pomiarze czasu dostarczania pakietu.
POŁĄCZENIA TCP
Wydarzenie po
stronie nadawcy
Komunikaty
Komunikaty
sieciowe
Wydarzeniepo
po
Wydarzenie
stronie
odbiorcy
stronie odbiorcy
Wydarzenie po
stronie nadawcy
Wysłanie pakietu 1
Utrata pakietu
Uruchomienie zegara
Wysłanie pakietu 1
Odebranie pakietu 1
Spodziewane przybycie
ACK
Odebranie ACK1
Komunikaty
Komunikaty
sieciowe
Wydarzeniepo
po
Wydarzenie
stronie
odbiorcy
stronie odbiorcy
Wysłanie ACK1
Wysłanie pakietu 2
Odebranie pakietu 2
Spodziewane
przybycie pakietu
Powinno
zostać wysłane ACK
Przekroczenie limitu czasowego
Retransmisja pakietu 1
Odebranie pakietu 1
Uruchomienie zegara
Odebranie ACK2
Wysłanie ACK2
Odebranie ACK 1
Wysłanie ACK 1
Skasowanie zegara
A. Protokół pozytywnie
potwierdzający z retransmisją
B. Przekroczenie limitów czasu i
retransmisja przy utracie pakietu
NAWIĄZYWANIE POŁĄCZENIA TCP
Proces nawiązania połączenia składa się z 3 kroków („three way handshake”) :
Strona, która wysyła zapytania (zwykle zwana klientem) nadaje segment SYN,
określający numer portu serwera, z którym klient chce się połączyć,
a także początkowy numer sekwencyjny klienta
Serwer odpowiada, wysyłając własny
segment SYN zawierający początkowy
numer sekwencyjny serwera. Ponadto
serwer potwierdza odebranie segmentu SYN
klienta, wysyłając (ACK) z nadesłanym przez
klienta INS plus jeden.
Klient potwierdza nadesłany przez serwer
segment SYN – wysyłając ACK z INS
serwera powiększony o jeden
Klient
Segment 1
Serwer
SYN
10:10(0)
<MSS
1024>
Segment 2
Ack 11, ms<1042>
Ack 100
Segment 3
Strona, która wysyła pierwszy SYN wykonuje tak zwane aktywne otwarcie.
Druga strona, która odbiera SYN i wysyła w odpowiedzi segment SYN,
wykonuje tak zwane pasywne otwarcie.
ZAKOŃCZENIE POŁĄCZENIA TCP
Ponieważ połączenie TCP jest połączeniem full-duplex, to każdy z
kierunków musi zostać zamknięty niezależnie.
Odebranie FIN oznacza jedynie, że w tym kierunku połączenia nie będą
płynęły już dane. TCP może nadal wysyłać dane po odebraniu FIN (połączenie
półzamknięte).
Klient
Application
close
Serwer
FIN
EOF to
application
Ack FIN
FIN
Application
close
Ack FIN
W celu pełnego zamknięcia połączenia druga strona musi wykonać
podobną sekwencję operacji (FIN, oraz potwierdzenie ACK FIN).
MECHANIZM PRZUWNEGO OKNA
W sterowaniu przepływem danych masowych jest wykorzystywany
mechanizm przesuwnego okna (sliding window).
Na rysunku liczby od 1 do 11 są numerami kolejnych bajtów. Okno,
o którym informacje podaje odbiorca, nazywane jest oknem oferowanym
(offered window) i pokrywa bajty od 4 do 9, co oznacza, że odbiorca
potwierdził otrzymanie wszystkich bajtów od 1 do 3 włącznie i proponuje
użycie oknao rozmiarze 6.
Rozmiar okna jest uzależniony od potwierdzonego numeru sekwencyjnego.
Nadawca liczy wielkość okna użytecznego (usable window), które określa,
ile danych może być przesłanych natychmiast.
O fe r o w a n e o k n o
(ro z g ła s z a n e p rz e z o d b io rc ę )
O k n o u ż y te c z n e
1
2
W y s ła n e i
p o tw i e r d z o n e
3
4
5
6
W y s ła n e i
n i e p o tw i e r d z o n e
7
8
M o ż n a w y s ła ć
A S A P
9
10
11
...
N ie m o ż n a w y s ła ć d o p ó k i
o k n o je s t w ru c h u
MECHANIZM PRZUWNEGO OKNA - CD
W miarę upływu czasu okno to rozszerza się w prawo o tyle, o ile pozwalają
odebrane potwierdzenia przesłanych danych. Położenie prawej i lewej
krawędzi okna zmienia jego wielkość.
Do opisu ruchu prawej i lewej krawędzi używane są terminy:
Okno zamyka się – kiedy lewa krawędź zbliża się do prawej. Dzieje
się tak wtedy, kiedy przesyłane dane są potwierdzane.
Okno otwiera się - kiedy prawa krawędź odsuwa się w prawo,
pozwalając na przesyłanie większej i ilości danych. Ma to miejsce,
kiedy proces odbierający czyta potwierdzone dane, zwalnia miejsce w
buforze wejściowym TCP.
Okno kurczy się, kiedy prawa krawędź przysuwa się do lewej.
Nie dopuszcza się takich sytuacji, ponieważ może to doprowadzić do
otrzymania okna zerowego, wtedy nadawca przestaje wysyłać dane.
STEROWANIE OKNEM
ODBIORCA
NADAWCA
1000 1001
2400 2401
SN = 1001
1000 1001
SN = 1201
2400 2401
SN = 1401
1000
1601
2401
A
1000 1001
2001 2401
1600 1601 2001
1600 1601
1600 1601
01,
= 16
2601
2600 2601
4000 4001
0
100
=
W
SN
=
SN
=
SN = 2001
1600 1601
2600 2601
160
1
180
1
SN = 2201
1600 1601 2001
2601
SN = 2401
A = 2601, W
= 1400
2600 2601
4000 4001