Protokół TCP

        Protokół Telnet do transmisji danych wykorzystuje protokół TCP. Aktualna wersja protokołu TCP jest dziesiąta z kolei. Został przygotowany przez Instytut Nauk Uniwersytetu Południowej Kalifornii na zlecenie Agencji Zaawansowanych Projektów Obronnych DARPA.
        Protokół IP nie zapewnia bezpiecznej transmisji danych, wysyła on dane "w sieć" i nie zajmuje się nimi dalej. Jeżeli jakiś pakiet zostanie zagubiony, sam protokół IP nie zapewni jego ponownej transmisji. Za to jest odpowiedzialny protokół warstwy wyższej, w tym przypadku TCP, który musi zapewniać:
  • Podstawowy transfer danych(Basic data transfer)
  • Wiarygodność transmisji(Reliability)
  • Kontrolę przepływu(Flow control)
  • Multipleksowanie(Multiplexing)
  • Połączenia(Connections)
Podstawowy transfer danych

        TCP zajmuje się przesyłaniem ciągów oktetów (ośmiobitowych porcji danych) w obu kierunkach transmisji, od i do użytkownika. Oktety przed wysłaniem są pakowane w segmenty danych. Protokół najczęściej sam decyduje czy dany segment danych należy już wysłać, czy poczekać na większą ilość danych. Jeśli protokół zadecyduje ze dany segment danych należy wysłać, przekazuje go do niższej warstwy, w tym przypadku do protokołu IP.

Wiarygodność transmisji

        TCP zapewnia odzyskanie danych, które zostały zniszczone, zgubione, zduplikowane, lub dotarły w złej kolejności. W tym celu każdy oktet otrzymuje swój unikalny numer sekwencyjny. Komputer odbierający dane musi potwierdzić odbiór segmentu poprzez wysłanie sygnału ACK(ang. Acknowledment - potwierdzenie). Jeżeli komputer wysyłający dane nie otrzyma w określonym czasie potwierdzenie odbioru, wyśle ponownie dane. Numer sekwencyjny służy komputerowi odbierającemu do złożenia danych w odpowiedniej kolejności, oraz do wyeliminowania duplikatów. W celu wyeliminowania uszkodzonych lub przekłamanych danych służą sumy kontrolne. Jeśli przesyłany segment danych okaże się uszkodzony, protokół zażąda ponownej transmisji uszkodzonego segmentu. Cały ten system zapewnia, że błędy transmisji nie mają wpływu na poprawność przesyłanych danych.

Kontrola przepływu

        Komputer otrzymujący dane może sterować ilością danych wysyłanych przez komputer źródłowy. Uzyskuje się to poprzez przesyłanie wraz z każdym sygnałem potwierdzenia ACK tzw. okna , które informuje komputer wysyłający dane ile może przesłać oktetów przed otrzymaniem kolejnego pozwolenia.

Multipleksowanie

        Na każdym komputerze podłączonym do sieci najczęściej działa wiele programów które potrzebują skorzystać z protokołu TCP. Aby umożliwić im wspólne, jednoczesne korzystanie z sieci, TCP udostępnia dodatkowy zbiór adresów(portów) przypisanym konkretnym usługom (np. Telnet korzysta z portu 23). Numer takiego portu(liczba 16-bitowa) w połączeniu z adresem komputera tworzy gniazdo. Para gniazd identyfikuje każde połączenie.

Połączenia

        Opisane wyżej mechanizmy wymagają od TCP zainicjalizowania połączenia oraz utrzymania informacji statusowych dotyczących każdego przesłanego strumienia danych. Kombinacja tych danych łącznie z gniazdami, numerami sekwencyjnymi, oraz wielkością okien, jest nazywana połączeniem.
        Kiedy dwa procesy mają rozpocząć pomiędzy sobą wymianę danych, muszą najpierw nawiązać połączenie. Po zakończeniu komunikacji połączenie jest zamykane w celu zwolnienia zasobów.

Format nagłówka TCP


Rys.1 - Nagłówek protokołu TCP

Numery portów - Port źródłowy i docelowy identyfikują procesy które się pomiędzy sobą komunikują.
Numer sekwencyjny - 32-bitowa liczba charakteryzująca przesyłany segment danych.
Numer potwierdzenia - 32-bitowa liczba, jeśli jest ustawiony bit ACK, to pole zawiera numer sekwencyjny oczekiwany przez komputer wysyłający dane.
Offset danych - (Przesunięcie danych) Pole 4-bitowe. Zawiera liczbę słów 32-bitowych, które składają się na nagłówek TCP i tym samym informuje gdzie rozpoczynają się dane. Wielkość nagłówka może być różna ze względy na zmienną ilość opcji.
Zarezerwowane - 6 bitów zarezerwowanych do wykorzystania w przyszłych implementacjach, muszą być ustawione na zero.
Bity kontrolne:
  • URG - Ustawiony na "1" oznacza ważność pola "priorytet".
  • ACK - Ustawiony na "1" oznacza ważność pola "numer potwierdzenia".
  • PSH - Ustawiony na "1" oznacza wykorzystanie funkcji "push".
  • RST - Ustawiony na "1" oznacza zakończenie połączenia.
  • SYN - Ustawiony na "1" wykonanie synchronizacji numerów sekwencyjnych.
  • FIN - Ustawiony na "1" oznacza koniec transmisji.
Okno - Liczba oktetów możliwych do zaakceptowania przez komputer wysyłający bieżący segment.
Suma kontrolna - To 16-Bitowe pole zawiera obliczoną dla całego segmentu danych sumę kontrolną pozwalającą na wykrycie jakichkolwiek przekłamań.
Priorytet - Ma znaczenie tylko jeśli jest ustawiona flaga URG. Specyfikuje ona pozycję ważnych danych w przesyłanym segmencie.
Opcje - Lista opcji nie jest ustalona i może się zmieniać, muszą one zajmować wielokrotność 32-bitów, jeśli zajmują mniej zajmuje tzw. Wypełnienie (wolne bity zapełnia się zerami).

        Dodatkowo istnieje jeszcze tzw. Pseudo nagłówek. Zawiera on 32-bitowe adresy portu źródłowego i docelowego, 8-bitowy identyfikator protokołu (W tym przypadku TCP) oraz 8-bitowe pole specyfikujące wielkość przesyłanego segmentu TCP. Pseudo nagłówek znajduje się przed właściwym nagłówkiem TCP, a jego parametry przekazywane są do warstwy IP.

Rys.2 - Pseudo nagłówek TCP

Józek Łapiński


Bibliografia:
  • Ogólnoświatowa sieć komputerowa Internet
  • "Biblia TCP/IP, Tom 1 - Protokoły" - W.Richard Stevens
  • Magazyn "Internet"


MAIN

JAK TO DZIAŁA?
WADY,ZALETY
ZASTOSOWANIE
HISTORIA
PROGRAMY
KONFIGURACJA
PODSUMOWANIE
AUTORZY
LINKI
INDEX




HTML Vadilator 2.1