encyklopedia.space

UDP – User Datagram Protocol

UDP (User Datagram Protocol) jest jednym z głównych protokołów warstwy transportowej w modelu OSI oraz w modelu TCP/IP. Zapewnia on usługi transmisji danych w trybie bezpołączeniowym, bez gwarancji dostarczenia, kolejności ani integralności przesyłanych pakietów.

Historia

Protokół został opracowany w latach 70. XX wieku jako część rodziny protokołów Internet Protocol Suite. Pierwsza wersja UDP została opublikowana wraz z RFC 768 w sierpniu 1980 roku, co uczyniło go oficjalnym standardem.

Budowa i działanie

UDP działa bezpośrednio nad protokołem IP. Każdy pakiet UDP, zwany datagramem, zawiera prosty nagłówek składający się z czterech pól:

  • Source Port – 16‑bitowy numer portu źródłowego (opcjonalny).
  • Destination Port – 16‑bitowy numer portu docelowego, identyfikujący aplikację odbiorcy.
  • Length – 16‑bitowa długość nagłówka i danych (minimum 8 bajtów).
  • Checksum – 16‑bitowa suma kontrolna umożliwiająca wykrycie błędów w nagłówku i danych (opcjonalna w IPv4, obowiązkowa w IPv6).

Po nagłówku następują dane aplikacji. Ponieważ UDP nie utrzymuje żadnego stanu połączenia, każdy datagram jest traktowany jako odrębny, niezależny od pozostałych.

Charakterystyka

Główne cechy UDP:

  • Bezpołączeniowość – nie wymaga ustanawiania i zrywania połączenia, co zmniejsza narzut czasowy.
  • Brak kontroli przepływu i kolejności – pakiety mogą docierać w dowolnej kolejności, a niektóre mogą w ogóle nie dotrzeć.
  • Niska latencja – brak mechanizmów retransmisji pozwala na szybką transmisję, istotną w aplikacjach czasu rzeczywistego.
  • Prosty nagłówek – jedynie 8 bajtów, co zwiększa efektywność przy małych wiadomościach.

Zastosowania

Ze względu na swoją lekkość i niską latencję, UDP jest wykorzystywany w wielu aplikacjach, w których niezbędna jest szybka transmisja, a utrata pojedynczych pakietów jest akceptowalna:

  • Transmisja strumieniowa audio i wideo (VoIP, streaming).
  • Gry sieciowe w czasie rzeczywistym.
  • Protokoły wykorzystywane w diagnostyce sieci, np. ping (ICMP) i traceroute (używają wielu datagramów UDP).
  • Rozproszone systemy czasu (NTP) oraz synchronizacja zegarów.
  • Systemy rozgłaszania i multicastu (multicast).

Porównanie z TCP

Najbardziej znanym konkurentem UDP jest TCP (Transmission Control Protocol). Poniższa tabela podsumowuje najważniejsze różnice:

Cecha UDP TCP
Połączenie Bezpołączeniowe Połączeniowe (handshake)
Gwarancja dostarczenia Brak Tak
Kontrola kolejności Brak Tak
Retransmisja Nie Tak
Nagłówek 8 bajtów co najmniej 20 bajtów
Przeznaczenie Aplikacje wymagające niskiej latencji Aplikacje wymagające niezawodności

Bezpieczeństwo

Ze względu na brak mechanizmów kontroli przepływu i retransmisji, UDP jest podatny na pewne rodzaje ataków, m.in.:

  • Ataki odmowy usługi (DoS) – generowanie dużej liczby datagramów może zalać odbiorcę.
  • Amplification attacks – wykorzystanie usług takich jak DNS do zwiększania rozmiaru odpowiedzi przy minimalnym nakładzie po stronie atakującego.
  • Podszywanie się pod nadawcę – brak weryfikacji stanu połączenia umożliwia łatwe fałszowanie adresu źródłowego.

W praktyce zabezpieczenia opierają się na zewnętrznych mechanizmach, takich jak firewalle, systemy wykrywania włamań oraz wykorzystanie protokołów kryptograficznych (np. DTLS – Datagram Transport Layer Security) działających ponad UDP.

Implementacje i narzędzia

Większość systemów operacyjnych posiada wbudowane wsparcie dla UDP w postaci gniazd (sockets). Popularne narzędzia sieciowe umożliwiające pracę z UDP to:

  • netcat (nc) – prosty klient i serwer UDP.
  • iperf – pomiar wydajności połączeń UDP i TCP.
  • Wireshark – analiza i podgląd pakietów UDP w ruchu sieciowym.

Przyszłość i rozwój

Mimo że UDP jest stosunkowo prosty, jego rola w nowoczesnych technologiach rośnie. Współczesne protokoły takie jak QUIC (oparty na UDP) łączą zalety niskiej latencji UDP z mechanizmami zapewniającymi niezawodność i bezpieczeństwo na poziomie warstwy transportowej.

Zobacz także

TCP | IP | IPv4 | IPv6 | NTP | DNS | DTLS | QUIC

Bibliografia

  1. RFC 768 – User Datagram Protocol, IANA, 1980.
  2. J. Postel, Transmission Control Protocol, RFC 793, 1981.
  3. R. Stewart, Network Protocols Handbook, 3rd ed., 2020.