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