Systemy operacyjne i sieci komputerowe Protokoły warstwy transportowej
Protokoły warstwy transportowej W warstwie transportowej w stosie protokołów TCP/IP może działać protokół połączeniowy TCP, niezawodny lub protokół bezpołączeniowy UDP, zawodny.
Protokół TCP Protokół TCP (Transmission Control Protocol) działa w warstwie transportowej w trybie połączeniowym. Korzystanie z trybu połączeniowego umożliwia zagwarantowanie dostarczenia danych do odbiorcy. Połączenia TCP są połączeniami wirtualnymi, rozpoznawanymi po adresach i portach urządzeń docelowych i źródłowych. Połączenia takie charakteryzują się możliwościami sterowania przepływem, potwierdzaniem odbioru, zachowywaniem kolejności danych, kontrolą błędów i przeprowadzaniem retransmisji. Segmenty TCP składają się z nagłówka i danych.
Budowa nagłówka protokołu TCP
Budowa nagłówka protokołu TCP Zawiera on następujące pola: Numer portu źródłowego i numer portu docelowego – podają numery portów procesów aplikacyjnych korzystających z usług TCP. Kombinacja tych numerów z adresami sieciowymi określają parę gniazd tworzących połączenie protokołu TCP. Numer sekwencyjny SN (ang. Sequensc Number) - zawiera numer sekwencyjny pierwszego bajtu danych w segmencie. Ta wartość określa pozycję segmentu w strumieniu bajtów. Numer potwierdzenia ACK (ang. Acknowledgement Number) – zawiera numer sekwencyjny następnego oczekiwanego bajtu po stronie odbiorczej. Jednocześnie jest to potwierdzenie poprawnego odbioru bajtów o numerach sekwencyjnych mniejszych od zawartego w tym polu. Potwierdzenia mówią nadawcy ile bajtów danych zostało już poprawnie odebranych.
Budowa nagłówka protokołu TCP Długość nagrania (nagłówka) – zawiera liczbę całkowitą, która określa długość nagłówka segmentu mierzoną w wielokrotnościach 32 bitów. Rezerwa – pole to jest pozostawione do wykorzystania w przyszłości.
Budowa nagłówka protokołu TCP Znaczniki – składają się z sześciu bitów sterujących, które ustawione na 2 mają następujące znaczenie: UGR – wskazuje na ważność pola wskaźnik pilności, ACK – wskazuje na ważność pola numer potwierdzania, PSH – wskazuje na działanie funkcji wymuszającej wysyłanie segmentu, RST – wyzerowanie połączenia, SYN – wskazuje, że w polu numer sekwencyjny umieszczony jest inicjujący numer sekwencyjny INS. Jest on przeznaczony do synchronizacji numerów sekwencyjnych w fazie ustanowienia połączenia. FIN – wskazuje, że nadawca nie ma nic więcej do nadania – sygnał końca danych.
Budowa nagłówka protokołu TCP Okno (ang. Window) – umożliwia przystosowanie transmisji do warunków sieci: większy natłok – mniejsza szybkość transmisji. W to pole urządzenie odbiorcze wpisuje liczbę bajtów danych, które są w stanie przyjąć jego bufory. Jeśli wpisze zero – nadawca musi przerwać nadawanie. Wznowienie transmisji nastąpi wtedy, gdy odbiorca wpisze liczbę większą od zera. Suma kontrolna TCP – zawiera 16-bitową liczbę całkowitą służącą do sprawdzenia, czy dane i nagłówek TCP nie zostały naruszone.
Budowa nagłówka protokołu TCP Wskaźnik pilności – zaznacza czy przy transmisji danych w segmencie są one pilne. Opcje – ma długość zmienną będącą wielokrotnością 8 bitów. Zawiera ono numery opcji – każdy numer zapisany w jednym bajcie. Dla protokołu TCP zdefiniowano trzy opcje: 0 - koniec listy opcji, 1 - brak działania, 2 - maksymalna długo segmentu.
Przebieg transmisji Ponieważ na komputerze posiadającym jeden adres IP może jednocześnie działać wiele aplikacji, to do ich identyfikacji wykorzystuje się porty. Porty reprezentowane są przez liczby naturalne z zakresu od 0 do 65535. Numery portów od 0 do 1023 są ogólnie znane (well-known port numbers) i zarezerwowane dla usług, np. WWW korzysta z portu 80, a telnet z portu 23. Dzięki portom możemy określić, dla jakiej aplikacji jest przeznaczony segment danych (port docelowy) lub z którego portu wysłano dane (port źródłowy).
Przebieg transmisji cd. Komunikacja między aplikacjami może się odbywać za pomocą gniazd (socket). Gniazdo to kombinacja adresu IP i numeru portu. Gniazdo jednoznacznie określa proces w sieci lub zakończenie logicznego łącza komunikacyjnego między dwiema aplikacjami. Jeśli aplikacje uruchomione są na dwóch różnych komputerach, to para odpowiadających im gniazd definiuje połączenie. Gniazdo możemy traktować jako kanał komunikacyjny – jeden program wpisuje do niego dane, a drugi je odbiera. Serwer otwiera gniazdo i oczekuje na połączenie. Klient łączący się z otwartym gniazdem musi znać sieciowy adres komputera oraz numer portu.
Przebieg transmisji cd. Każdy przesyłany segment danych jest oznaczany kolejnym numerem sekwencyjnym. Przed rozpoczęciem transmisji nadawca i odbiorca wymieniają między sobą numery sekwencyjne. Odbiorca wiadomości na podstawie numeru sekwencyjnego ustala kolejność segmentów oraz sprawdza, czy wszystkie segmenty dotarły do miejsca przeznaczenia. Potwierdzenie odebrania segmentu polega na wysłaniu przez odbiorcę numeru kolejnego segmentu, który powinien być przesłany. Na przykład jeżeli ostatni poprawnie odebrany segment miał numer 123, to odbiorca wyśle numer potwierdzenia 124 (numer następnego segmentu, który ma być przesłany).
Przebieg transmisji cd. Potwierdzenie jest wysyłane po odebraniu pewnej liczby danych określonych w polu szerokość okna. Jeżeli w sieci występuje dużo błędów, to wielkość okna jest zmniejszana, aby częściej otrzymywać potwierdzenia i przez to zmniejszyć liczbę segmentów danych wymagających retransmisji. Jeżeli liczba błędów się zmniejsza, to rozmiar okna jest powiększany, aby zapewnić większą przepustowość sieci.
Aplikacje wykorzystujące TCP WWW, FTP, poczta elektroniczna, telnet.
Protokół UDP Protokół UDP (User Datagram Protocol) działa w warstwie transportowej w trybie bezpołączeniowym. Protokół ten nie gwarantuje dostarczenia danych do odbiorcy. Jeżeli pakiet nie dotrze do odbiorcy lub dotrze uszkodzony, UDP nie podejmie żadnych działań zmierzających do retransmisji danych, a zapewnienie niezawodności pozostawi warstwie wyższej. Nagłówek protokołu UDP jest prostszy niż TCP. Protokół jest wykorzystywany do szybkiego przesyłania danych w niezawodnych sieciach.
Budowa nagłówka protokołu UDP
Pola nagłówka protokołu UDP Port źródłowy - identyfikuje port, z którego została wysłana wiadomość, kiedy jest znaczący to wskazuje port wysyłającego procesu i może zostać przyjęty jako port, do którego powinna zostać zwrócona wiadomo zwrotna w przypadku braku innej informacji. Port nadawcy jest polem opcjonalnym. Gdy pole to nie jest używane przyjmuje wartość zero. Port docelowy - identyfikuje port odbiorcy i jest polem wymaganym.
Pola nagłówka protokołu UDP Długość 16-bitowe – pola specyfikuj długo w bajtach całego datagramu: nagłówek i dane. Minimalna długość to 8 bajtów i jest to długość nagłówka. Wielkość pola ustala teoretyczny limit 65 527 bajtów, dla danych przenoszonych przez pojedynczy datagram UDP. Suma kontrolna 16 bitowe – pole, które jest użyte do sprawdzania poprawności nagłówka oraz danych. Pole jest opcjonalne. Ponieważ IP nie wylicza sumy kontrolnej dla danych, sum kontrolna UDP jest jedyną gwarancją, że dane nie zostały uszkodzone.
Aplikacje wykorzystujące UDP wideokonferencje przesyłanie strumieniowe dźwięku gry sieciowe komunikatory sieciowe rozwiązywanie nazw symbolicznych (DNS) transfer plików (TFTP) NFS VolP RPC
Dzięki temu, że istnieją dwa alternatywne względem siebie protokoły w warstwie transportowej, TCP i UDP, jest możliwy dobór przez aplikacje odpowiedniego dla siebie rozwiązania.