UDP: co to je, protokol bez navázání spojení a jak funguje

Autor: IT Sectr Publikováno: 2026-03-06 Doba čtení: 8 min

UDP (User Datagram Protocol) — protokol pro přenos dat bez navázání spojení, pracující nad IP a zajišťující minimální zpoždění při odesílání datagramů. Na rozdíl od TCP, UDP negarantuje doručení, pořadí paketů ani ochranu před duplikováním. Podle údajů IETF RFC 768 (2024), UDP zpracovává více než 40% světového internetového provozu díky videohovorům, streamování a DNS dotazům.

Hlavní body

  • UDP — protokol bez navázání spojení, odesílající datagramy bez potvrzení doručení
  • Minimální zpoždění je dosaženo díky absenci handshake, řízení zahlcení a opakovaných přenosů
  • Používá se ve videohovorech, online hrách, DNS, DHCP a streamování
  • Datagram UDP obsahuje hlavičku pouze 8 bajtů oproti 20–60 bajtům u TCP
  • Ztráty paketů jsou kompenzovány na úrovni aplikace pomocí FEC, retransmise nebo redundance dat

Co je UDP?

UDP (User Datagram Protocol) — jeden z klíčových protokolů transportní vrstvy modelu TCP/IP, vyvinutý Davidem Reedem v roce 1980. Poskytuje minimální mechanismus přenosu dat: aplikace odešle datagram a protokol nesleduje, zda dorazil k příjemci.

Hlavička UDP se skládá pouze ze čtyř polí: zdrojový port, cílový port, délka a kontrolní součet. Každé pole zabírá 2 bajty, takže celková velikost hlavičky je 8 bajtů. Pro srovnání, hlavička TCP bez voleb zabírá 20 bajtů a s volbami — až 60 bajtů.

Protokol nepodporuje fragmentaci na své úrovni — pokud datagram překročí MTU (Maximum Transmission Unit), je fragmentován na úrovni IP. Při ztrátě jednoho fragmentu je celý datagram zahozen, protože UDP nemůže požadovat opakovaný přenos jednotlivých fragmentů. Vývojáři musí kontrolovat velikost datagramu — pro mobilní sítě je MTU často 1400 bajtů, takže maximální velikost by neměla tuto hodnotu překračovat.

Jak funguje UDP

Aplikace používající UDP vytvoří socket typu SOCK_DGRAM, určí port a cílovou IP adresu a odešle datagram. Protokol přidá minimální hlavičku a předá paket IP vrstvě. Příjemce naslouchá na svém portu a extrahuje data z příchozích datagramů.

UDP neprovádí řízení zahlcení — aplikace může odesílat datagramy maximální rychlostí, kterou síť podporuje. To může vést k přetížení kanálu, ale v scénářích reálného času je taková agresivita oprávněná: pro videohovor je důležitější datový tok s možnými ztrátami než zastavení přenosu.

python
import socket

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(b'Hello, UDP!', ('192.168.1.100', 8888))
sock.close()

V příkladu je vytvořen socket SOCK_DGRAM pro UDP. Metoda sendto odešle datagram bez navázání spojení — stačí znát IP a port příjemce. Metoda recvfrom na straně serveru vrací jak data, tak adresu odesílatele pro odpověď. UDP sockety na mobilních platformách se konfigurují podobně, ale vyžadují další oprávnění: na iOS je třeba přidat NSAppTransportSecurity pro nešifrovaná UDP spojení a na Android — oprávnění INTERNET v manifestu.

Výhody a nevýhody UDP

Volba UDP je oprávněná v scénářích, kde je rychlost důležitější než spolehlivost. Protokol neztrácí čas navazováním spojení, potvrzováním a opakovanými přenosy — to poskytuje minimální zpoždění, ale vyžaduje od vývojáře samostatné zpracování ztrát.

VýhodyNevýhody
Nízké zpoždění — bez handshakeBez záruky doručení
Menší hlavička — 8 bajtůBez řízení zahlcení
Podpora broadcast a multicastMožné duplicity paketů
Nezávislost datagramů — bez frontVelikost datagramu omezena MTU

V mobilních aplikacích je UDP používán prostřednictvím frameworků jako WebRTC, které nad UDP přidávají řízení ztrát, adaptivní bitrate a jitter buffer. To poskytuje výhody rychlosti bez nevýhod holého protokolu.

Dalším důležitým aspektem UDP je absence řízení zahlcení. V TCP algoritmy Slow Start a Congestion Avoidance snižují rychlost přenosu při ztrátě paketů, aby nepřetěžovaly síť. UDP takové mechanismy nemá, proto musí vývojáři implementovat vlastní strategie řízení rychlosti — například adaptivní bitrate ve videohovorech nebo rate limiting na herních serverech k zabránění nadměrného přetížení síťového kanálu.

Kde se UDP používá

UDP je nepostradatelný v scénářích, kde je tolerance zpoždění důležitější než tolerance ztráty paketů. Podívejme se na hlavní oblasti použití protokolu v mobilním a webovém vývoji.

Streamování audia a videa

Protokoly RTP a RTSP, pracující nad UDP, se používají k přenosu audio a video streamů v reálném čase. WebRTC — standard pro videohovory v prohlížečích a mobilních aplikacích — používá UDP jako hlavní transport pro mediální data a TCP pro signalizaci. Ztráta jednoho paketu ve videu 30 fps je pro uživatele nepostřehnutelná, na rozdíl od zpoždění opakovaného přenosu, které způsobuje znatelné zamrzání obrazu.

Online hry

Víceuživatelské střílečky a MOBA vyžadují zpoždění menší než 50 ms pro správnou synchronizaci. UDP přenáší pozice hráčů, výstřely a události rychleji než TCP a ztráta paketu je jednoduše ignorována — další aktualizace přijde za 16–33 ms. Populární herní enginy, včetně Unity a Unreal Engine, používají UDP prostřednictvím vlastních transportních vrstev s přidáním spolehlivosti pro kritické události pomocí potvrzení na úrovni aplikace.

DNS a DHCP

DNS dotazy používají UDP na portu 53, protože každý dotaz je jeden malý datagram (obvykle do 512 bajtů). Pokud nepřijde odpověď, klient jednoduše zopakuje dotaz po časovém limitu, což je rychlejší než navázání TCP spojení s jeho třífázovým handshakem. DHCP také pracuje nad UDP, protože klient ještě nemá IP adresu a nemůže navázat TCP spojení, a broadcast UDP pakety umožňují najít DHCP server v lokální síti.

Srovnání UDP a TCP

Volba mezi UDP a TCP je kompromisem mezi rychlostí a spolehlivostí. Každý protokol je optimální pro svou třídu úloh a pochopení jejich rozdílů pomáhá při správných architektonických rozhodnutích při návrhu síťové interakce v mobilních aplikacích.

KritériumUDPTCP
Navázání spojeníNení vyžadovánoTřífázový handshake
Hlavička8 bajtů20–60 bajtů
Záruka doručeníNeAno, s potvrzením
ŘazeníNeAno
Řízení zahlceníNeAno (AIMD, Slow Start)
PoužitíStreamování, hry, DNSWeb, email, soubory, API

V mobilních projektech se často používá hybridní přístup: TCP pro spolehlivé požadavky (autorizace, načítání dat) a UDP pro mediální streamy. QUIC — moderní protokol Google pracující nad UDP — kombinuje rychlost UDP se spolehlivostí TCP a je již používán v HTTP/3.

Příklad kódu UDP

Podívejme se na jednoduchý UDP server v Pythonu, který přijímá zprávy od klientů a odesílá odpovědi. Server naslouchá na portu 8888 a zpracovává příchozí datagramy v nekonečné smyčce.

python
import socket

server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server.bind(('0.0.0.0', 8888))
print('UDP server spuštěn na portu 8888')

while True:
    data, addr = server.recvfrom(1024)
    print(f'Přijato od {addr}: {data.decode()}')
    server.sendto(b'OK', addr)

Server vytvoří UDP socket, připojí se k portu 8888 a čeká na příchozí datagramy. recvfrom vrací data a adresu klienta, což umožňuje odpovědět prostřednictvím sendto. Na rozdíl od TCP server neukládá stav spojení — každý datagram je zpracováván nezávisle. To činí UDP servery škálovatelnými: jeden server může obsluhovat miliony klientů bez alokace paměti pro každé jednotlivé spojení, což je důležité pro DNS servery a herní matchmaking systémy.

V mobilním vývoji je UDP často používán prostřednictvím knihoven vysoké úrovně. Například CocoaAsyncSocket pro iOS poskytuje UDP sockety s delegáty a GCD pro asynchronní zpracování událostí. Na Androidu je třída DatagramSocket součástí standardní knihovny java.net a nevyžaduje další závislosti. Pro Flutter existuje balíček udp, který poskytuje jednoduché rozhraní pro odesílání a příjem datagramů bez konfigurace nativních socketů.

Je důležité poznamenat, že mnoho mobilních sítí a firemních firewallů blokuje UDP provoz, zejména na portech nad 1024. Pokud vaše aplikace používá UDP, je třeba zajistit fallback na TCP nebo kontrolu dostupnosti protokolu prostřednictvím STUN serverů, jak to dělá WebRTC. Na iOS systémový framework Network.framework s NWConnection podporuje TCP i UDP a automaticky vybírá optimální protokol na základě dostupnosti. Pro aplikace reálného času se také doporučuje implementovat adaptivní bitrate, který snižuje kvalitu streamu při ztrátě paketů a zajišťuje kontinuitu přehrávání i na nestabilních kanálech s vysokou úrovní chyb.

Často kladené otázky

Čím se UDP liší od TCP?

UDP nenavazuje spojení a negarantuje doručení paketů, což ho činí rychlejším než TCP. Hlavička UDP — 8 bajtů oproti 20–60 bajtům u TCP. UDP je vhodný pro streamování a hry, TCP — pro webové požadavky a přenos souborů.

Co je datagram v UDP?

Datagram — samostatný datový paket s UDP hlavičkou (zdrojový port, cílový port, délka, kontrolní součet). Každý datagram je zpracováván nezávisle, bez vazby na předchozí. Velikost datagramu je omezena MTU sítě a dle specifikace — až 65507 bajtů.

Jak je zajištěna spolehlivost při použití UDP?

UDP nezajišťuje spolehlivost na transportní úrovni — tu implementuje aplikace. Vývojáři přidávají pořadová čísla, kontrolní součty, opakované požadavky a korekci chyb. FEC (Forward Error Correction) umožňuje obnovit ztracené pakety bez opakovaného přenosu.

Kdy by se UDP nemělo používat?

UDP není vhodný pro scénáře, kde je integrita dat kritická: přenos souborů, bankovní transakce, REST-API. V těchto případech TCP garantuje, že každý bajt dorazí ve správném pořadí. UDP se také nedoporučuje na nestabilních kanálech s vysokou úrovní ztrát.

Co je QUIC a jak souvisí s UDP?

QUIC — transportní protokol pracující nad UDP, vyvinutý Googlem a standardizovaný IETF jako RFC 9000. Kombinuje rychlost UDP se spolehlivostí TCP, podporuje multiplexování bez blokování a vestavěné šifrování. HTTP/3 používá QUIC jako transportní vrstvu.

Shrnutí

  • UDP — protokol bez navázání spojení s minimálním zpožděním a hlavičkou 8 bajtů
  • Negarantuje doručení, pořadí paketů ani ochranu před duplikováním
  • Používá se ve videohovorech, online hrách, DNS, DHCP a streamování
  • Volba UDP nebo TCP závisí na rovnováze rychlosti a spolehlivosti v konkrétním scénáři
  • Ztráty paketů jsou kompenzovány na úrovni aplikace pomocí FEC, opakovaných požadavků nebo redundance
  • QUIC nad UDP kombinuje rychlost UDP se spolehlivostí TCP v protokolu HTTP/3
  • Vývojáři musí kontrolovat velikost datagramu a zajistit fallback na TCP při blokování nebo filtrování UDP v síti

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také