W sieciach komputerowych UDP oznacza protokół datagramów użytkownika. David P. Reed opracował protokół UDP w 1980 roku. Jest on zdefiniowany w RFC 768 i stanowi część protokołu TCP/IP, a więc jest standardowym protokołem w Internecie. Protokół UDP umożliwia aplikacjom komputerowym wysyłanie wiadomości w formie datagramów z jednego komputera na drugi za pośrednictwem sieci protokołu internetowego (IP). UDP jest alternatywnym protokołem komunikacyjnym do protokołu TCP (protokół kontroli transmisji). Podobnie jak protokół TCP, UDP zapewnia zestaw reguł regulujących sposób wymiany danych w Internecie. Protokół UDP działa poprzez enkapsulację danych w pakiecie i dostarczanie do pakietu własnych informacji nagłówkowych. Następnie ten pakiet UDP jest kapsułkowany w pakiecie IP i wysyłany do miejsca docelowego. Oboje TCP i UDP protokoły przesyłają dane przez sieć protokołu internetowego, dlatego jest ona również nazywana TCP/IP i UDP/IP. Istnieje wiele różnic pomiędzy tymi dwoma protokołami. UDP umożliwia procesowi przetwarzanie komunikacji, podczas gdy TCP zapewnia komunikację między hostami. Ponieważ UDP wysyła komunikaty w formie datagramów, uważa się, że jest to najbardziej efektywny sposób komunikacji. TCP wysyła pojedyncze pakiety, jest więc niezawodnym medium transportowym. Inną różnicą jest to, że TCP jest protokołem zorientowanym na połączenie, podczas gdy UDP jest protokołem bezpołączeniowym, ponieważ nie wymaga żadnego obwodu wirtualnego do przesyłania danych.
UDP zapewnia również inny numer portu w celu rozróżnienia różnych żądań użytkowników, a także zapewnia możliwość sprawdzenia sumy kontrolnej w celu sprawdzenia, czy dotarły kompletne dane, czy nie; warstwa IP nie zapewnia tych dwóch usług.
Cechy protokołu UDP
Poniżej przedstawiono cechy protokołu UDP:
UDP to najprostszy protokół komunikacyjny warstwy transportowej. Zawiera minimalną ilość mechanizmów komunikacyjnych. Uważany jest za protokół zawodny i opiera się na usługach dostarczania typu best-effort. UDP nie zapewnia mechanizmu potwierdzania, co oznacza, że odbiorca nie wysyła potwierdzenia odebranego pakietu, a nadawca również nie czeka na potwierdzenie wysłanego pakietu.
UDP jest protokołem bezpołączeniowym, ponieważ nie tworzy wirtualnej ścieżki do przesyłania danych. Nie korzysta ze ścieżki wirtualnej, więc pakiety są wysyłane różnymi ścieżkami pomiędzy nadawcą a odbiorcą, co prowadzi do utraty pakietów lub odbierania ich w niewłaściwej kolejności.
Zamówiona dostawa danych nie jest gwarantowana.
W przypadku protokołu UDP datagramy wysyłane w określonej kolejności zostaną odebrane w tej samej kolejności, co nie jest gwarantowane, ponieważ datagramy nie są numerowane.
Protokół UDP wykorzystuje różne numery portów, dzięki czemu dane mogą zostać przesłane do właściwego miejsca docelowego. Numery portów są definiowane w przedziale od 0 do 1023.
UDP umożliwia szybszą transmisję, ponieważ jest protokołem bezpołączeniowym, co oznacza, że do przesyłania danych nie jest wymagana żadna wirtualna ścieżka. Istnieje jednak ryzyko utraty pojedynczego pakietu, co wpływa na jakość transmisji. Z drugiej strony, jeśli pakiet zostanie utracony w połączeniu TCP, pakiet ten zostanie wysłany ponownie, co gwarantuje dostarczenie pakietów danych.
UDP ma dowolny mechanizm potwierdzania, tj. nie ma uzgadniania między nadawcą UDP a odbiorcą UDP. Jeżeli wiadomość jest wysyłana w protokole TCP to odbiorca potwierdza, że jestem gotowy, po czym nadawca wysyła dane. W przypadku protokołu TCP uzgadnianie następuje pomiędzy nadawcą a odbiorcą, podczas gdy w przypadku protokołu UDP nie ma uzgadniania pomiędzy nadawcą a odbiorcą.
Każdy segment UDP jest obsługiwany indywidualnie, ponieważ każdy segment podąża inną ścieżką do miejsca docelowego. Segmenty UDP mogą zostać utracone lub dostarczone w niewłaściwej kolejności, aby dotrzeć do miejsca docelowego, ponieważ nie ma skonfigurowanego połączenia między nadawcą a odbiorcą.
Jest to protokół bezstanowy, co oznacza, że nadawca nie otrzymuje potwierdzenia wysłania pakietu.
Dlaczego potrzebujemy protokołu UDP?
Jak wiemy, UDP jest protokołem zawodnym, ale w niektórych przypadkach nadal potrzebujemy protokołu UDP. Protokół UDP jest wdrażany tam, gdzie pakiety wymagają dużej przepustowości wraz z rzeczywistymi danymi. Na przykład podczas przesyłania strumieniowego wideo potwierdzanie tysięcy pakietów jest kłopotliwe i powoduje marnowanie dużej przepustowości. W przypadku strumieniowego przesyłania wideo utrata niektórych pakietów nie może stanowić problemu, ale można ją również zignorować.
Format nagłówka UDP
W UDP rozmiar nagłówka wynosi 8 bajtów, a rozmiar pakietu wynosi do 65 535 bajtów. Jednak taki rozmiar pakietu nie jest możliwy, ponieważ dane muszą być enkapsulowane w datagramie IP, a w pakiecie IP rozmiar nagłówka może wynosić 20 bajtów; dlatego maksymalna wartość UDP wyniesie 65 535 minus 20. Rozmiar danych, jakie może przenieść pakiet UDP, wyniesie 65 535 minus 28, co oznacza 8 bajtów nagłówka pakietu UDP i 20 bajtów nagłówka IP.
Nagłówek UDP zawiera cztery pola:
Koncepcja kolejkowania w protokole UDP
W protokole UDP liczby służą do rozróżnienia różnych procesów na serwerze i kliencie. Wiemy, że UDP zapewnia proces przetwarzania komunikacji. Klient generuje procesy wymagające usług, podczas gdy serwer generuje procesy świadczące usługi. Kolejki są dostępne dla obu procesów, tj. po dwie kolejki dla każdego procesu. Pierwsza kolejka to kolejka przychodząca, która odbiera komunikaty, a druga to kolejka wychodząca, która wysyła komunikaty. Kolejka działa, gdy proces jest uruchomiony. Jeśli proces zostanie zakończony, kolejka również zostanie zniszczona.
UDP obsługuje wysyłanie i odbieranie pakietów UDP za pomocą następujących komponentów:
Kilka procesów chce korzystać z usług UDP. Protokół UDP multipleksuje i demultipleksuje procesy, dzięki czemu wiele procesów może działać na jednym hoście.
Ograniczenia
- Zapewnia zawodną usługę dostarczania połączenia. Nie świadczy żadnych usług protokołu IP z wyjątkiem komunikacji między procesami.
- Wiadomość UDP może zostać utracona, opóźniona, zduplikowana lub może być nieprawidłowa.
- Nie zapewnia niezawodnej usługi dostawy transportu. Nie zapewnia żadnego mechanizmu potwierdzania ani kontroli przepływu. Jednak w pewnym stopniu zapewnia kontrolę błędów.
Zalety
- Generuje minimalną liczbę kosztów ogólnych.