Podstawy sieci komputerowych
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.