11. Zadania warstwy transportowej

11.4. Protokół UDP

Innym protokołem, który realizuje niektóre funkcje warstwy transportowej, jest protokół UDP. W tym przypadku jest to jednak znacznie prostsze, ponieważ protokół nie implementuje żadnego mechanizmu gwarantującego niezawodność dostarczania danych czy kontrolę przepływu.

Protokół UDP jest prostym protokołem bezpołączeniowym, a jego największą zaletą jest niski narzut danych sterujących dodawanych w procesie enkapsulacji. UDP w datagramie dodaje tylko 8 bajtów danych kontrolnych. Nagłówek datagramu UDP wygląda tak:

BIT (0)

BIT (15) BIT (16)

BIT (31)

Port źródłowy (16)

Port docelowy (16)

Długość (16)

Suma kontrolna (16)

Długość warstwy aplikacji (dł. zmienna)

 ·         Port źródłowy — określa port aplikacji, z którego mają być wysyłane dane.

·         Port docelowy — określa port aplikacji, do którego wysyłane są dane.

·         Długość - 16-bitowe pole określające długość całego datagramu UDP

·         Suma kontrolna — 16-bitowe pole używane do sprawdzania poprawności wysyłanych danych.

Bezpołączeniowy UDP oznacza, że ​​host źródłowy nie wysyła żadnych informacji w celu ustanowienia połączenia z hostem docelowym przed rozpoczęciem procesu komunikacji.

Jeśli porównamy to do komunikacji międzyludzkiej, to w przypadku protokołu TCP byłoby to coś w stylu: "Hej Tomek, skup się, bo zaraz będę z tobą rozmawiał", i dopiero jak dostanę określony komunikat rozpocznie się normalna rozmowa, czyli tylko wtedy, gdy Tomek odpowie: "OK, słucham". W przypadku UDP nie powiadamiam Tomka, że ​​mam zamiar zacząć komunikować mu coś ważnego, po prostu zaczynam rozmowę.

Aplikacje lub usługi korzystające z tego protokołu transportowego obejmują DNS, DHCP, telefonię VoIP i strumieniowe przesyłanie wideo.

Dlaczego te? Aplikacje te cenią szybkość bardziej niż niezawodność komunikacji. Wyobraź sobie sytuację, w której oglądamy transmisję wideo lub gramy ze znajomymi, np. w CS. Trudno jest rywalizować w grze lub oglądać cokolwiek, gdy pakiety się spóźniają.

Skąd to opóźnienie? Na przykład segmenty TCP są znacznie większe niż datagramy UDP, a TCP musi potwierdzać dostarczone dane, więc te są przesyłane przez sieć w dużych ilościach, większych niż w przypadku UDP.

W przypadku aplikacji korzystających z tego konkretnego protokołu można tolerować fakt, że czasami pakiety mogą zostać utracone lub uszkodzone. W przypadku usług DNS, jeśli datagram zostanie utracony, zapytanie jest po prostu ponownie wysyłane do serwera DNS i nic się nie stanie, jeśli datagram nie dotrze podczas sesji, ponieważ komunikat zawsze można powtórzyć. W przypadku aplikacji korzystających z protokołu TCP strata lub pomyłka nie jest już akceptowalna. Datagramy odbierane są w kolejności, w jakiej są odbierane, a jeśli jest ich wiele, za ich prawidłowy montaż odpowiada konkretna aplikacja.