UDP vs TCP

UDP

UDP(User Datagram Protocol) jest szybkim i prostym protokołem. Działa w oparciu o protokół IP. Wprowadza kilka dodatkowych paramentów na protokół IP, dzięki którym system może  przekazać dany pakiet do konkretnej aplikacji oraz sprawdzić czy nie uległ uszkodzeniu. Narzut ze strony nagłówka jest minimalny, co z kolej przekłada się na mały narzut wydajności.

Rysunek poniżej przedstawia strukturę nagłówka UDP.

Port UDP działa w oparciu o mechanizm portów (który również występuje w TCP). Port to 16-bitowa liczba, wybrana przez aplikację wysyłającą lub odbierającą dane. W niektórych systemach operacyjnych wybranie portów z przedziału 0-1023 wymaga uprawnień administratora. Mechanizm portów pozwala kierować dane (lub informację o połączeniu) do konkretnej aplikacji lub usługi. Umożliwia to jednoczesną wymianę danych pomiędzy wieloma programami. Nadawca wiadomości musi podać numer portu docelowego, aby system mógł przekazać pakiet do właściwej aplikacji. 

TCP

Do zapewnienia niezawodnej komunikacji wykorzystuje się protokół TCP(Transmission Control Protocol). Podobnie jak UDP działa w warstwie transportowej (czwarta warstwa). TCP stara się zagwarantować jak najwyższą niezawodność połączenia oraz integralność przesyłanych strumieniowo danych. W przeciwieństwie do UDP podczas transmisji TCP można mieć pewność, że dane dotrą w takim stanie jakim zostały wysłane. Jeśli korekcja błędów nie będzie możliwa, to rozmowa zostanie porzucona. Często obarczone jest ponownym wysyłaniem pakietów.

Struktura nagłówka TCP przedstawiona jest na rysunku poniżej.

Warto zwrócić uwagę na:

Bity sterujące m.in. ACK i SYN – wykorzystywane podczas nawiązywania połączenia.Suma kontrolna – 16-bitowa, umożliwia wykrycie uszkodzonych danych.Numer sekwencyjny oraz numer potwierdzający – służą do zapewnienia właściwej kolejności odbioru danych zgodnej z kolejnością ich wysyłania oraz do kontroli, czy wszystkie pakiety dotarły do odbiorcy.

TCP jest protokołem połączeniowym. W celu nawiązania połączenia jedna ze stron tworzy gniazdo nasłuchujące i wiąże je z określonym portem TCP oraz lokalnym adresem IP interfejsu sieciowego (lub może być powiązane z portem na wszystkich dostępnych interfejsach sieciowych – wówczas za adres IP przypisuje się 0.0.0.0). 

Gdy gniazdo nasłuchujące jest gotowe, druga strona komunikacji może zainicjajizować połączenie. Odbywa się to to za pomocą mechanizmu trójetapowego negocjowania połączenia (three-way handshake). Przesyłane są specjalne pakiety (bez danych) do ustalenia celu komunikacji, potwierdzenia tożsamości i ustalenia początkowych numerów sekwencyjnych i potwierdzających. W uproszczeniu proces ten wygląda następująco:

  • Klient wysyła do serwera pusty pakiet z ustawionym bitem SYN oraz początkowym numerem sekwencyjnym
  • Serwer wysyła do klienta pakiet z ustawionymi bitami SYN i ACK
  • Klient wysyła do serwera pakiet z ustawionym bitem ACK

Negocjowanie połączenia eliminuje możliwość prostego podszycia się pod jednego z rozmówców (istotne jest wybranie trudnych do przewidzenia początkowych numerów sekwencyjnych). Po udanej negocjacji połączenie jest nawiązane. Po stronie serwera zostaje utworzone drugie gniazdo, reprezentujące nawiązane połączenie, które służyć będzie do wymiany danych pomiędzy stronami. Gniazdo nasłuchujące nadal pozostaje aktywne i może służyć do nawiązania kolejnych połączeń.Zakończenie sesji następuje, gdy jedna ze stron wyśle pakiet z ustawionym bitem FIN oraz odpowiednim numerem sekwencyjnym. Jest możliwe również zakończenie połączenia w dowolnym momencie poprzez wysłanie pakietu RST.

Podsumowanie

TCPUDP
AkronimTransmission Control ProtocolUser Datagram Protocol
StanowośćPołączeniowyBezpołączeniowy
Kontrola danych16-bitowa suma kontrolna16-bitowa suma kontrolna
Reakcja na uszkodzone danePonowienie transmisji
Odrzucenie pakietu
Kolejność danychKolejność odebranych danych zgodna z kolejnością ich wysyłaniaBrak
PotwierdzeniaPotwierdzenia po otrzymaniu segmentu danychBrak
Rozpoczęcie transmisjiObie stony negocjują/potwierdzają chęć połączeniaBrak
Zakończenie transmisjiJedna ze stron może zażądać zakończenia połączenia lub po określonym czasie braku aktywności którejkolwiek ze stronBrak
Prędkość transmisjiWolniejszy niż UDPSzybszy niż TCP
Używany przez
HTTP, HTTPS, FTP, SMTP, Telnet
DNS, DHCP, TFTP, VOIP 

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *