Udp protokol

Obsah:

  1. Co je to UDP protokol?
  2. Technický přehled
  3. Porty
  4. Rozdíl mezi TCP a UDP
  5. UDP jako jednoduchá "obálka" protokolu IP
  6. Formát UDP datagramu

Co je to UDP protokol

UDP (User Datagram Protocol) je jedním ze sady protokolů internetu. O protokolu UDP říkáme, že nedává záruky na datagramy, které přenáší mezi počítači v síti. Někdy je označován jako nespolehlivý, ale to je velmi zavádějící označení. Na rozdíl od protokolu TCP totiž nezaručuje, zda se přenášený datagram neztratí, zda se nezmění pořadí doručených datagramů nebo zda se některý datagram nedoručí vícekrát.Protokol UDP je vhodný pro nasazení, které vyžaduje jednoduchost nebo pro aplikace pracující systémem otázka-odpověď (např. DNS, sdílení souborů v LAN). Jeho bezstavovost je užitečná pro servery, které obsluhují mnoho klientů nebo pro nasazení, kde se počítá se ztrátami datagramů a není vhodné, aby se ztrácel čas novým odesíláním (starých) nedoručených zpráv (např. VoIP, online hry).

Technický přehled

UDP protokol je protokol transportní vrstvy orientovaný na zprávy a je zdokumentovaný v IETF RFC 768. V sadě protokolů Internetu poskytuje UDP velmi jednoduché rozhraní mezi síťovou vrstvou pod a aplikační vrstvou nad. UDP neposkytuje žádné záruky doručení a odesilatelova UDP vrstva si u jednou už odeslaných zpráv neudržuje žádný stav. UDP pouze přidává kontrolní součty a schopnost roztřiďovat UDP pakety mezi více aplikací běžících na stejném počítači.

+ bity 0-15 16-31
0 zdrojový port cílový port
32 délka kontrolní součet

UDP hlavička se skládá jen ze 4 políček, z nichž 2 jsou volitelná. Políčka zdrojového a cílového portu jsou 16bitová a identifikují odesílající a přijímající proces. Protože UDP je bezestavový a odesilatel nemusí vyžadovat odpověď, zdrojový port je volitelný. Pokud se nepoužije, zdrojový port by měl být nastaven na nulu. Po číslech portů následuje povinná délka UDP paketu včetně dat, v bytech. Minimální hodnota je 8 bajtů. Zbývající políčko hlavičky je 16bitový kontrolní součet pokrývající hlavičku i data. Tento součet je možné vynechat, ale v praxi se téměř vždy používá. Kvůli chybějícím zárukám se UDP aplikace musí smířit s nějakými ztrátami, chybami nebo duplikacemi. Některé aplikace (jako třeba TFTP) mohou podle potřeby přidávat jednoduchý mechanismus spolehlivosti do aplikační vrstvy.Aplikace používající UDP naštěstí nejčastěji opravný mechanismus nepotřebují, a dokonce jím mohou být zdržovány. Pokud aplikace vyžaduje vysoký stupeň spolehlivosti, může se místo něj použít TCP nebo opravné kódy.Protože UDP postrádá mechanizmus předcházení a regulace zahlcení sítě, je nutné nadbytečné UDP datagramy na routerech zahazovat. Jako částečné řešení tohoto problému je navrhován protokol DCCP (Datagram Congestion Control Protocol). Ačkoliv je celkové množství UDP provozu na typické síti jen v řádu procent, je UDP používán řadou klíčových služeb včetně DNS, SNMP, DHCP a RIP.

Porty

UDP používá porty, aby bylo možné rozlišit v počítači jednotlivé aplikace a správně jim doručit data, i když jich komunikuje v počítači více. Port je 16 bitová hodnota, která umožňuje používat porty z rozsahu 0-65535. Port 0 je rezervován, ale je možné ho použít, pokud odesílající proces neočekává žádnou odpověď. Porty 1-1023 jsou tzv. dobře známé (anglicky well known ports) a na Unixech a odvozených operačních systémech jsou potřeba práva uživatele root, aby je bylo možné použít. Porty 1024-49151 jsou registrované porty. Porty 49152-65535 jsou používány pro komunikaci klienta se serverem.

Rozdíl mezi TCP a UDP

TCP je spojově orientovaný protokol což znamená, že k navázání "end-to-end" komunikace potřebuje, aby proběhl mezi klientem a serverem tkz. "handshaking". Poté, co bylo spojení navázáno, data mohou být posíláná oběma směry. Charakteristické vlastnosti TCP protokolu jsou: spolehlivost – TCP používá potvrzování o přijetí, opětovné posílání a překročení časového limitu. Pokud se jakákoliv data ztratí po cestě, server si je opětovně vyžádá. U TCP nejsou žádná ztracená data, jen pokud několikrát po sobě vyprší časový limit, tak je celé spojení ukončeno. zachování pořadí – Pokud pakety dorazí ve špatném pořadí, TCP vrstva příjemce se postará o to, aby se některá data pozdržela a finálně je předala správně seřazená. vyšší režie – TCP protokol potřebuje např. tři pakety pro otevření spojení, umožňuje to však zaručit spolehlivost celého spojení. UDP je jednodušší protokol založený na odesílání nezávislých zpráv. Charakteristika protokolu: bez záruky – Protokol neumožňuje ověřit, jestli data došla zamýšlenému příjemci. Datagram se může po cestě ztratit. UDP nemá žádné potvrzování, přeposílání ani časové limity. V případě potřeby musí uvedené problémy řešit vyšší vrstva. nezachovává pořadí – Při odeslání dvou zpráv jednomu příjemci nelze předvídat, v jakém pořadí budou doručeny. jednoduchost – Nižší režie než u TCP (není zde řazení, žádné sledování spojení atd.).

udp
Obr. 1: UDP setup; zdroj

UDP jako jednoduchá "obálka" protokolu IP

Mechanismem, který entitám (procesům, úlohám, programům) aplikační vrstvy zpřístupňuje nespolehlivé a nespojované, zato ale rychlé a efektivní přenosové služby síťové vrstvy (protokolu IP), je právě protokol UDP (User Datagram Protocol). Můžeme si jej představit jako jednoduchou "obálku" nad protokolem IP, která nijak nemění povahu ani kvalitu jeho přenosových služeb, ale pouze je zprostředkovává své bezprostředně vyšší vrstvě. V podstatě jediné, co UDP zajišťuje navíc, je multiplexování a demultiplexování datagramů (viz minulý díl seriálu), tedy rozlišování různých příjemců, resp. odesilatelů v rámci téhož hostitelského počítače - podle čísla portu.

Odpovědnost přebírá aplikace

Každý aplikační program, který se rozhodne používat transportní služby protokolu UDP, tak na sebe přebírá odpovědnost za zajištění takové úrovně spolehlivosti přenosů, jakou sám potřebuje. Sám se také musí vyrovnávat i s dalšími důsledky, které vyplývají z nespolehlivého a nespojovaného charakteru přenosových služeb protokolu UDP - jako je např. zajišťování správného pořadí doručovaných datagramů, eliminace duplicitních datagramů apod.Jak jsme si již uvedli v předchozích dílech, je volba nespolehlivých transportních služeb protokolu UDP determinována především charakterem aplikace a jeho požadavky na efektivitu přenosových služeb. Svou roli při rozhodování mezi nespolehlivými ale rychlejšími službami protokolu UDP a spolehlivými, zato ale pomalejšími transportními službami protokolu TCP však sehrává i prostředí, ve kterém jsou tyto transportní služby zajišťovány. Například v lokálních sítích, které jsou velmi rychlé a především relativně spolehlivé, může být protokol UDP pro mnohé aplikace velmi výhodný. Při přechodu do prostředí rozlehlých sítí, které jsou ve své podstatě mnohem méně spolehlivé, však může natolik narůst režie konkrétního aplikačního programu na zajištění potřebné spolehlivosti, že se pro ni stane protokol UDP méně výhodný, než "spolehlivý" protokol TCP, nebo se použití protokolu UDP stane dokonce zcela neúnosné.

udp
Obr. 1: UDP setup; zdroj

Formát UDP datagramu

Jak jsme si již také uvedli v 53. dílu, protokol UDP dostává od své bezprostředně vyšší vrstvy bloky dat, které se snaží vkládat celé do jednotlivých datagramů síťové vrstvy (IP datagramů), viz obr. 56.1. Proto se také těmto blokům na úrovni transportní vrstvy říká uživatelské datagramy (user datagrams), nebo též UDP datagramy (UDP datagrams). Jejich formát je uveden na obrázku 56.2. Hlavičku (anglicky: header) UDP datagramu tvoří 4 položky v rozsahu 16 bitů, které po řadě vyjadřují číslo portu odesilatele a příjemce, délku UDP datagramu, a kontrolní součet - viz obr. 56.2. Číslo portu příjemce (položka UDP DESTINATION PORT) je základní informací, podle které se protokol UDP na straně příjemce rozhoduje, komu má přijatý datagram doručit - přesněji: přes který port má přijatý datagram předat entitě aplikační vrstvy. Číslo portu odesilatele (v položce UDP SOURCE PORT) je nepovinné; vyplňuje se v případě, kdy je požadována odpověď (v opačném případě se tato položka zaplňuje nulami). Položka LENGTH vyjadřuje délku UDP datagramu, měřenou v oktetech (tj. osmicích bitů) - včetně vlastní hlavičky. Minimální délka UDP datagramu je proto 8, což je právě velikost hlavičky, s prázdnou datovou částí.


Seznam zdrojů

  1. http://cs.wikipedia.org/wiki/UDP
  2. http://www.earchiv.cz/a93/a303c110.php3

Autor

výpočet

Ověřit XHTML 1.0 Strict
Ověřit CSS