DCN - protokół kontroli transmisji

Protokół kontroli transmisji (TCP) jest jednym z najważniejszych protokołów pakietu protokołów internetowych. Jest to najczęściej używany protokół transmisji danych w sieciach komunikacyjnych, takich jak internet.

cechy

  • TCP to niezawodny protokół. Oznacza to, że odbiorca zawsze wysyła do nadawcy pozytywne lub negatywne potwierdzenie pakietu danych, dzięki czemu nadawca zawsze ma jasną wskazówkę, czy pakiet danych dotarł do miejsca przeznaczenia, czy też musi go ponownie wysłać.

  • TCP zapewnia, że ​​dane dotrą do celu w tej samej kolejności, w jakiej zostały wysłane.

  • TCP jest zorientowany na połączenie. Protokół TCP wymaga ustanowienia połączenia między dwoma zdalnymi punktami przed wysłaniem rzeczywistych danych.

  • Protokół TCP zapewnia mechanizm sprawdzania błędów i odzyskiwania.

  • TCP zapewnia komunikację typu end-to-end.

  • TCP zapewnia kontrolę przepływu i jakość usług.

  • Protokół TCP działa w trybie klient / serwer punkt-punkt.

  • TCP zapewnia serwer z pełnym dupleksem, tzn. Może pełnić rolę zarówno odbiorcy, jak i nadawcy.

nagłówek

Długość nagłówka TCP wynosi minimum 20 bajtów i maksymalnie 60 bajtów.

  • Source Port (16-bits)  - Identyfikuje port źródłowy procesu aplikacji na urządzeniu wysyłającym.

  • Destination Port (16-bits) - Identyfikuje port docelowy procesu aplikacji na urządzeniu odbiorczym.

  • Sequence Number (32-bits) - Liczba sekwencji bajtów danych segmentu w sesji.

  • Acknowledgement Number (32-bits)  - Gdy ustawiona jest flaga ACK, liczba ta zawiera następny numer sekwencyjny oczekiwanego bajtu danych i działa jako potwierdzenie wcześniej odebranych danych.

  • Data Offset (4-bits)  - To pole określa zarówno rozmiar nagłówka TCP (słowa 32-bitowe), jak i przesunięcie danych w bieżącym pakiecie w całym segmencie TCP.

  • Reserved (3-bits)  - Zarezerwowane do użytku w przyszłości i wszystkie są domyślnie ustawione na zero.

  • Flags (1-bit each)

    • NS - Bit sumy jednorazowej jest używany przez proces sygnalizacji powiadomienia o zatorach.

    • CWR - Gdy host odbiera pakiet z ustawionym bitem ECE, ustawia opcję Congestion Windows Reduced na potwierdzenie odebrania ECE.

    • ECE -Ma dwa znaczenia:

      • Jeśli bit SYN ma wartość 0, wtedy ECE oznacza, że ​​pakiet IP ma ustawiony bit CE (doświadczenie przeciążenia).

      • Jeśli bit SYN jest ustawiony na 1, ECE oznacza, że ​​urządzenie obsługuje ECT.

    • URG - Wskazuje, że pole Urgent Pointer zawiera znaczące dane i powinno zostać przetworzone.

    • ACK- Wskazuje, że pole potwierdzenia ma znaczenie. Jeśli ACK jest zerowane, oznacza to, że pakiet nie zawiera żadnego potwierdzenia.

    • PSH - Po ustawieniu jest to żądanie do stacji odbiorczej wysłania danych PUSH (jak tylko nadejdą) do aplikacji odbierającej bez ich buforowania.

    • RST - Flaga resetowania ma następujące funkcje:

      • Służy do odrzucania połączenia przychodzącego.

      • Służy do odrzucania segmentu.

      • Służy do ponownego uruchomienia połączenia.

    • SYN - Ta flaga służy do ustanowienia połączenia między hostami.

    • FIN- Ta flaga służy do zwalniania połączenia i nie ma już więcej danych. Ponieważ pakiety z flagami SYN i FIN mają numery sekwencyjne, są przetwarzane we właściwej kolejności.

  • Windows Size  - To pole jest używane do sterowania przepływem między dwiema stacjami i wskazuje ilość bufora (w bajtach), który odbiornik zaalokował dla segmentu, tj. Ile danych oczekuje odbiornik.

  • Checksum - To pole zawiera sumę kontrolną nagłówka, danych i pseudo nagłówków.

  • Urgent Pointer  - Wskazuje na pilny bajt danych, jeśli flaga URG jest ustawiona na 1.

  • Options  - Ułatwia dodatkowe opcje, które nie są objęte zwykłym nagłówkiem. Pole opcji jest zawsze opisane słowami 32-bitowymi. Jeśli to pole zawiera dane mniejsze niż 32-bitowe, wypełnienie jest używane do pokrycia pozostałych bitów w celu osiągnięcia granicy 32-bitowej.

Adresowanie

Komunikacja TCP między dwoma zdalnymi hostami odbywa się za pomocą numerów portów (TSAP). Numery portów mogą wynosić od 0 do 65535, które są podzielone na:

  • Porty systemowe (0 - 1023)
  • Porty użytkownika (1024 - 49151)
  • Porty prywatne / dynamiczne (49152-65535)

Zarządzanie połączeniami

Komunikacja TCP działa w modelu serwer / klient. Klient inicjuje połączenie, a serwer je akceptuje lub odrzuca. Uzgadnianie trójetapowe służy do zarządzania połączeniami.

Ustanowienie

Klient inicjuje połączenie i wysyła segment z numerem sekwencji. Serwer potwierdza to swoim własnym numerem sekwencyjnym i ACK segmentu klienta, który jest o jeden większy niż numer sekwencyjny klienta. Klient po otrzymaniu ACK swojego segmentu wysyła potwierdzenie odpowiedzi serwera.

Wydanie

Zarówno serwer, jak i klient mogą wysłać segment TCP z flagą FIN ustawioną na 1. Gdy strona odbierająca odpowiada na to potwierdzając FIN, ten kierunek komunikacji TCP jest zamykany, a połączenie jest zwalniane.

Zarządzanie przepustowością

TCP wykorzystuje koncepcję rozmiaru okna, aby dostosować się do potrzeb zarządzania przepustowością. Rozmiar okna informuje nadawcę na zdalnym końcu, ile segmentów bajtów danych może odebrać odbiornik na tym końcu. Protokół TCP używa fazy powolnego uruchamiania, używając rozmiaru okna 1 i zwiększa wykładniczo rozmiar okna po każdej pomyślnej komunikacji.

Na przykład klient używa systemu Windows w rozmiarze 2 i wysyła 2 bajty danych. Po otrzymaniu potwierdzenia tego segmentu rozmiar okna jest podwojony do 4, a następnie wysłany, wysłany segment będzie miał 4 bajty danych. Po otrzymaniu potwierdzenia 4-bajtowego segmentu danych klient ustawia rozmiar okna na 8 i tak dalej.

W przypadku pominięcia potwierdzenia, tj. Utraty danych w sieci tranzytowej lub otrzymania NACK, wówczas rozmiar okna zmniejsza się o połowę i rozpoczyna się od nowa faza powolnego startu.

Kontrola błędów i kontrola przepływu

TCP używa numerów portów, aby wiedzieć, jakiego procesu aplikacji potrzebuje do przekazania segmentu danych. Oprócz tego używa numerów sekwencyjnych do synchronizacji ze zdalnym hostem. Wszystkie segmenty danych są wysyłane i odbierane z numerami sekwencyjnymi. Nadawca wie, który ostatni segment danych został odebrany przez Odbiorcę, gdy otrzyma ACK. Odbiorca wie o ostatnim segmencie wysłanym przez Nadawcę odwołując się do numeru sekwencyjnego ostatnio odebranego pakietu.

Jeśli numer kolejny ostatnio odebranego segmentu nie zgadza się z numerem sekwencyjnym, którego oczekiwał odbiorca, jest on odrzucany, a NACK jest odsyłany. Jeśli nadejdą dwa segmenty z tym samym numerem sekwencji, w celu podjęcia decyzji porównuje się wartość znacznika czasu TCP.

Multipleksowanie

Technika łączenia dwóch lub więcej strumieni danych w jednej sesji nazywa się multipleksowaniem. Kiedy klient TCP inicjuje połączenie z serwerem, zawsze odwołuje się do dobrze zdefiniowanego numeru portu, który wskazuje proces aplikacji. Sam klient używa losowo wygenerowanego numeru portu z prywatnych pul numerów portów.

Używając multipleksowania TCP, klient może komunikować się z wieloma różnymi procesami aplikacji w jednej sesji. Na przykład, klient żąda strony internetowej, która z kolei zawiera różne typy danych (HTTP, SMTP, FTP itp.), Limit czasu sesji TCP zostaje zwiększony, a sesja pozostaje otwarta przez dłuższy czas, dzięki czemu można być unikanym.

Umożliwia to systemowi klienckiemu otrzymywanie wielu połączeń za pośrednictwem jednego połączenia wirtualnego. Te połączenia wirtualne nie są dobre dla serwerów, jeśli limit czasu jest zbyt długi.

Kontrola zatorów

Kiedy duża ilość danych jest dostarczana do systemu, który nie jest w stanie ich obsłużyć, pojawia się przeciążenie. TCP kontroluje przeciążenie za pomocą mechanizmu okna. TCP ustawia rozmiar okna, informując drugą stronę, ile segmentów danych ma wysłać. TCP może używać trzech algorytmów do kontroli przeciążenia:

  • Addytywny wzrost, multiplikatywny spadek

  • Powolny start

  • Limit czasu reakcji

Zarządzanie zegarem

TCP używa różnych typów timerów do sterowania i zarządzania różnymi zadaniami:

Licznik czasu podtrzymania życia:

  • Ten zegar służy do sprawdzania integralności i ważności połączenia.

  • Po wygaśnięciu czasu utrzymywania aktywności host wysyła sondę, aby sprawdzić, czy połączenie nadal istnieje.

Zegar retransmisji:

  • Ten licznik czasu utrzymuje stanową sesję wysłanych danych.

  • Jeżeli potwierdzenie wysłania danych nie zostanie odebrane w czasie retransmisji, segment danych jest wysyłany ponownie.

Licznik czasu trwałego:

  • Sesja TCP może zostać wstrzymana przez dowolny host, wysyłając Window Size 0.

  • Aby wznowić sesję, host musi wysłać rozmiar okna z większą wartością.

  • Jeśli ten odcinek nigdy nie osiągnie drugiego końca, oba końce mogą czekać na siebie przez nieskończony czas.

  • Po wygaśnięciu licznika czasu utrwalania host ponownie wysyła rozmiar swojego okna, aby powiadomić drugą stronę.

  • Persist Timer pomaga uniknąć zakleszczeń w komunikacji.

Czas oczekiwania:

  • Po zwolnieniu połączenia jeden z hostów czeka na czas oczekiwania na całkowite zakończenie połączenia.

  • Ma to na celu upewnienie się, że drugi koniec otrzymał potwierdzenie żądania zakończenia połączenia.

  • Limit czasu może wynosić maksymalnie 240 sekund (4 minuty).

Odzyskiwanie po awarii

TCP to bardzo niezawodny protokół. Dostarcza numer sekwencyjny do każdego bajtu wysyłanego w segmencie. Zapewnia mechanizm sprzężenia zwrotnego, tj. Kiedy host odbiera pakiet, jest powiązany z potwierdzeniem ACK, który pakiet ma następny oczekiwany numer sekwencyjny (jeśli nie jest to ostatni segment).

Gdy serwer TCP ulegnie awarii w trakcie komunikacji i ponownie uruchomi swój proces, wysyła transmisję TPDU do wszystkich swoich hostów. Hosty mogą następnie wysłać ostatni segment danych, który nigdy nie był niepotwierdzony, i kontynuować.