11. Úkoly transportní vrstvy

11.4. Protokol UDP

Dalším protokolem, který implementuje některé funkce transportní vrstvy, je protokol UDP. V tomto případě je to však mnohem jednodušší, protože protokol neimplementuje žádný mechanismus, který by zaručoval spolehlivost doručení dat nebo řízení toku.

Protokol UDP je jednoduchý protokol bez spojení a jeho největší výhodou je nízká režie řídicích dat přidaných během zapouzdření. Protokol UDP přidává do datagramu pouze 8 bajtů řídicích dat. Záhlaví datagramu UDP vypadá takto:

BIT (0)

BIT (15) BIT (16)

BIT (31)

Zdrojový port (16)

Cílový port (16)

Délka (16)

Kontrolní součet (16)

Délka aplikační vrstvy (proměnná délka)

- Zdrojový port - určuje port aplikace, ze kterého mají být data odeslána.

- Cílový port - určuje port aplikace, na který mají být data odeslána.

- Length - 16-bitové pole, které určuje délku celého datagramu UDP.

- Kontrolní součet - 16-bitové pole sloužící k ověření platnosti odesílaných dat.

UDP bez spojení znamená, že zdrojový hostitel před zahájením komunikace neodesílá žádné informace pro navázání spojení s cílovým hostitelem. Obecně platí, že pokud chce zdrojové zařízení zahájit přenos, chce odeslat právě dokončená data bez předchozí dohody.

Pokud bychom to přirovnali ke komunikaci mezi lidmi, pro protokol TCP by to vypadalo asi takto: Hej, Tome, soustřeď se, protože se s tebou chystám mluvit a teprve až dostanu tuhle zprávu, začne normální konverzace, samozřejmě jen pokud Tom odpoví: OK, začnu poslouchat. V případě UDP to Toma neupozornilo, že se chystám začít mu sdělovat něco důležitého, prostě jsem začal konverzaci.

Mezi aplikace nebo služby využívající tento přenosový protokol patří DNS, DHCP, telefonie VoIP a streamování videa.

Proč právě tyto? Odpověď je jednoduchá, tyto aplikace upřednostňují rychlost před spolehlivostí komunikace, respektive potřebou přijímat všechna přenášená data. Představte si situaci, kdy sledujeme videopřenos nebo hrajeme hru s přáteli, například CS. Je obtížné soutěžit ve hře nebo cokoli sledovat, když se balíčky opozdí.

Někdo by se mohl zeptat: ale kde se bere to zpoždění? Například segmenty TCP jsou mnohem větší než datagramy UDP a TCP musí potvrzovat doručená data, takže se jich po síti posílá větší množství než v případě UDP.

U aplikací využívajících tento konkrétní protokol lze tolerovat, že někdy může dojít ke ztrátě nebo poškození paketů. V případě služeb DNS se v případě ztráty datagramu dotaz jednoduše znovu odešle na server DNS a není tragédií, pokud datagram během relace nedorazí, protože zprávy lze vždy opakovat. U aplikací využívajících protokol TCP již není ztráta nebo záměna přípustná. Datagramy jsou přijímány v pořadí, v jakém byly přijaty, a pokud je datagramů více, je povinností konkrétní aplikace zajistit jejich správné sestavení.