Co to jest UDP?
Autor: Redakcja Domeny.ForSale Opublikowano
W skrócie: UDP to protokół sieciowy, który przesyła krótkie porcje danych bez wcześniejszego nawiązywania połączenia. Sam nie potwierdza ich odbioru, nie ponawia utraconych pakietów i nie zapewnia właściwej kolejności dostarczenia. Jest przydatny tam, gdzie aktualność danych i małe opóźnienia mają większe znaczenie niż odzyskanie każdej brakującej porcji — na przykład w rozmowach głosowych i grach online.
Jak działa UDP i czym jest datagram?
UDP, czyli User Datagram Protocol, jest protokołem warstwy transportowej: określa sposób przekazywania danych między aplikacjami przez sieć. Działa na bazie IP, czyli protokołu odpowiedzialnego za adresowanie i przesyłanie pakietów między urządzeniami. IP pomaga dotrzeć do właściwego hosta, a UDP wykorzystuje numery portów, aby skierować dane do odpowiedniej usługi lub aplikacji.
Pojedyncza wiadomość UDP to datagram. Zawiera dane aplikacji oraz nagłówek z informacjami takimi jak port źródłowy, port docelowy i długość wiadomości. Nagłówek UDP ma 8 bajtów; do przesłania przez sieć potrzebne są jeszcze nagłówki innych warstw, w tym IP.
Nadawca wysyła datagram pod wybrany adres IP i numer portu. UDP nie wykonuje wcześniej uzgodnienia połączenia z odbiorcą, zwanego handshake. Nie oznacza to jednak, że aplikacja korzystająca z UDP nie może mieć logowania, sesji ani własnego etapu uzgadniania komunikacji.
UDP zachowuje granice wiadomości: dwa wysłane datagramy nie stają się jednym strumieniem bajtów. Odbiorca może jednak dostać je w odwrotnej kolejności, otrzymać duplikat albo nie dostać żadnego z nich.
Czego UDP nie gwarantuje?
Udane wysłanie datagramu przez aplikację nie jest dowodem, że odbiorca go otrzymał. Pakiet może zginąć między innymi wskutek przeciążenia sieci, działania zapory albo braku programu nasłuchującego na danym porcie. Sam UDP nie naprawia takiej sytuacji.
Protokół nie zapewnia również kontroli przepływu, czyli dopasowywania tempa nadawania do możliwości odbiorcy, ani kontroli przeciążenia sieci. Jeżeli aplikacja ich potrzebuje, musi wykorzystać dodatkowe mechanizmy. Wysyłanie coraz większej ilości danych bez reagowania na straty może pogorszyć komunikację zamiast ją przyspieszyć.
UDP nie szyfruje danych i nie potwierdza tożsamości nadawcy. Poufność i uwierzytelnianie mogą zapewniać protokoły działające ponad nim, na przykład DTLS albo QUIC. Brak tych funkcji w samym UDP nie oznacza więc, że każda korzystająca z niego usługa przesyła informacje bez zabezpieczeń.
UDP a TCP: kiedy różnica ma znaczenie?
TCP, czyli Transmission Control Protocol, to inny powszechnie używany protokół transportowy. Nawiązuje połączenie i udostępnia aplikacji uporządkowany strumień bajtów, automatycznie ponawiając transmisję utraconych danych. Jeśli komunikacji nie da się kontynuować, może zakończyć się ona błędem — TCP także nie gwarantuje powodzenia całej operacji biznesowej, na przykład zapisania zamówienia.
| Cecha | UDP | TCP |
|---|---|---|
| Nawiązanie połączenia | Brak w samym protokole | Wymagane |
| Sposób przekazywania danych | Osobne datagramy | Strumień bajtów |
| Ponawianie utraconych danych | Brak automatycznego ponawiania | Wbudowane |
| Kolejność danych | Niegwarantowana | Zachowana w strumieniu |
| Kontrola przeciążenia | Brak w samym UDP | Wbudowana |
Stwierdzenie „UDP jest szybszy od TCP” jest uproszczeniem. UDP ma mniejszy nagłówek i nie czeka na potwierdzenia, ale rzeczywiste opóźnienia zależą również od sieci i konstrukcji aplikacji. Gdy program musi sam potwierdzać odbiór i ponawiać każdą wiadomość, część tej przewagi może zniknąć.
Wyobraź sobie grę, w której klient regularnie otrzymuje pozycję przeciwnika. Jeśli jedna aktualizacja zginie, nowsza może być bardziej użyteczna niż ponowne przesłanie starej. Natomiast informacja o zakupie przedmiotu wymaga potwierdzenia i ochrony przed podwójnym wykonaniem — sam UDP tego nie zapewni.
Gdzie spotkasz UDP w praktyce?
UDP jest wykorzystywany w wielu usługach, choć szczegóły zależą od konkretnego programu i warunków sieciowych:
- Rozmowy głosowe i wideokonferencje: spóźniona próbka dźwięku może być mniej przydatna niż krótka przerwa zamaskowana przez aplikację.
- Gry online: częste aktualizacje stanu mogą być przesyłane bez czekania na odzyskanie wcześniejszych danych.
- DNS, czyli system nazw domenowych: wiele zapytań i odpowiedzi korzysta z UDP, ale DNS używa również TCP, a jego szyfrowane warianty wykorzystują dodatkowe protokoły.
- HTTP/3: korzysta z QUIC, który działa na UDP i dodaje między innymi szyfrowanie, niezawodny transport strumieni oraz kontrolę przeciążenia.
HTTP/3 pokazuje, że „działa na UDP” nie znaczy „może bez konsekwencji gubić treść strony”. Gwarancje nieobecne w UDP mogą zostać zapewnione przez warstwę znajdującą się nad nim.
Jak sprawdzić, czy aplikacja potrzebuje UDP?
Jeśli konfigurujesz router lub zaporę, sprawdź w dokumentacji aplikacji wymagany protokół, port oraz kierunek ruchu. Port TCP i port UDP o tym samym numerze to odrębne punkty komunikacji: dopuszczenie TCP nie odblokuje automatycznie UDP.
Nie otwieraj obu protokołów „na wszelki wypadek”. Zwykłe połączenie wychodzące zazwyczaj nie wymaga ręcznego przekierowania portu, natomiast udostępnienie serwera z sieci domowej może go wymagać. Zacznij od ustalenia, czy program tylko łączy się z usługą, czy ma przyjmować ruch z internetu — od tego zależy właściwa konfiguracja.
Zobacz też: Co to jest GitLab?
