User Datagram Protocol ( UDP , francouzský User Datagram Protocol ) je jedním z hlavních protokolů telefonického používá internet . Je součástí dopravního vrstvy z OSI modelu , čtvrté vrstvě tohoto modelu, jako je TCP . To bylo definováno v roce 1980 Davidem P. Reedem (in) a je podrobně popsáno v RFC 768 .
Úlohou tohoto protokolu je umožnit přenos dat (ve formě datagramů ) velmi jednoduchým způsobem mezi dvěma entitami, z nichž každá je definována IP adresou a číslem portu. K navázání připojení není nutná žádná předchozí komunikace, na rozdíl od TCP (který používá proces handshaking ). UDP používá režim přenosu bez připojení .
Integrita dat je zajištěna kontrolním součtem záhlaví. Použití tohoto součtu je však volitelná v IPv4 , ale povinná s IPv6 . Pokud hostitel nevypočítal kontrolní součet přenášeného datagramu, je hodnota datagramu nastavena na nulu. Kontrolní součet zahrnuje také zdrojovou a cílovou IP adresu.
Kvůli absenci mechanismu handshaking tento protokol vystavuje program, který jej používá, možným problémům se spolehlivostí sítě; neexistuje tedy žádná záruka ochrany, pokud jde o doručení, pořadí příjezdu nebo možné duplikace datagramů. Pokud je požadována funkce opravy chyb, může se aplikace obrátit na protokoly TCP nebo SCTP , které jsou pro tento účel navrženy. UDP je proto vhodný pro použití, pro které není nutná detekce a oprava chyb, nebo jsou prováděny přímo aplikací.
Povaha UDP je užitečná pro rychlý přenos malého množství dat z jednoho serveru na mnoho klientů nebo v případech, kdy je upřednostněna případná ztráta datagramu před čekáním na jeho opakovaný přenos. DNS je VoIP nebo on-line hraní her jsou typické použití tohoto protokolu.
UDP je protokol transportní vrstvy dokumentovaný v RFC 768 . Neposkytuje záruku protokolu vyšší vrstvy , pokud jde o doručení zprávy. Kromě toho vrstva UDP nezachovává informace o stavu zpráv UDP, jakmile jsou odeslány. Z těchto důvodů se UDP označuje jako nespolehlivý přenosový protokol .
Díky seznamu vlastností je UDP zvláště vhodný pro určité aplikace.
Paket UDP je zapouzdřen v paketu IP . Zahrnuje záhlaví následované skutečnými daty, která mají být přenesena.
IP hlavička | Záhlaví UDP | Data |
Záhlaví datagramu UDP je jednodušší než záhlaví TCP :
Zdrojový port (16 bitů) |
Cílový port (16 bitů) |
Délka (16 bitů) |
Kontrolní součet (16 bitů) |
Data (proměnná délka) |
Obsahuje následující čtyři pole:
Zdrojový port označuje, ze kterého portu byl paket odeslán. Cílový přístav označuje, na který port má být paket odeslán. Délka označuje celkovou délku (vyjádřenou v bajtech) segmentu UDP (záhlaví a data). Minimální délka je tedy 8 bajtů (velikost záhlaví). Kontrolní součet to umožňuje zajistit integritu přijatého paketu, když se liší od nuly. Vypočítává se na celou hlavičku UDP a data, ale také na pseudo hlavičku (výpis z hlavičky IP)Následující tabulka popisuje pole použitá pro výpočet kontrolního součtu UDP přes IPv4 (záporné indexy odpovídají záhlaví pseudo IP):
+ | Bity 0-7 | 8 - 15 | 16 - 23 | 24 - 31 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
-96 | Zdrojová adresa | |||||||||||||||||||||||||||||||
-64 | Cílová adresa | |||||||||||||||||||||||||||||||
-32 | Nuly | Protokol | Velikost UDP | |||||||||||||||||||||||||||||
0 | Zdrojový port | Cílový přístav | ||||||||||||||||||||||||||||||
32 | Délka | Kontrolní součet | ||||||||||||||||||||||||||||||
64 | Data |
Číslo protokolu přidělené UDP je 17 (desítkově).
Používá se tam, kde je nutné přenášet data velmi rychle a kde ztráta části těchto dat není příliš důležitá, jedná se zejména o případy, kdy požadavky jdou oběma směry (od klienta k serveru a naopak) žít. Nebo k přenosu malého množství dat, kde by „ 3-WAY “ TCP spojení bylo zbytečně nákladné z hlediska zdrojů.
Například v případě přenosu hlasem přes IP je občasná ztráta paketu přijatelná, pokud existují mechanismy pro nahrazení chybějících dat, na druhou stranu je rychlost přenosu základním kritériem pro kvalitu poslechu.
Používá se také k současnému odesílání dat do několika přijímačů ( vícesměrové vysílání , všesměrové vysílání ), přičemž připojení TCP je pouze bod-bod .
Příklady použití: