Menu Zavrieť

3.3. Transportný protokol UDP

UDP: user datagram protocolRFC 768

Protokol UDP pridáva k možnostiam nižších vrstiev okrem adresácie soketov cez čísla portov, už iba kontrolný súčet. Hlavička UDP segmentu obsahuje zdrojový a cieľový port, informáciu o počte bajtov segmentu a 16 bitový kontrolný súčet.

Napíšme si základné vlastnosti UDP protokolu:

  • nepodporuje spoľahlivý prenos dát
    • Protokoly nižších vrstiev nezabezpečujú spoľahlivosť doručenia každého segmentu na cieľový počítač. To znamená, že UDP segmenty sa môžu stratiť (ich pakety zahodí niektorý router na ceste kvôli zahlteniu, alebo cieľová stanica kvôli tomu, že nestíha daný segment spracovať) alebo byť doručené v inom poradí ako boli vysielané. Protokol UDP tieto vlastnosti zachováva v plnom rozsahu. Aplikačnej vrstve odovzdáva správy (dáta) tak ako prichádzajú. Z toho vyplýva, že ak aplikačná vrstva využíva protokol UDP, musí počítať s tým, že niektoré časti odosielanej správy sa nemusia dostať k cieľovému procesu. Sieťové aplikácie sa teda musia buď vedieť zotaviť zo strát prenesených dát, alebo si správu prenesených dát realizovať sami.
  • bez spojenia
    • Protokol neobsahuje žiadnu inicializáciu ani uzatváranie spojenia. To znamená, že nie je potrebné ani uchovávanie stavu spojenia v koncových staniciach. Dáta sú odosielané k cieľu bez toho, aby bolo vyžadované potvrdenie prijatia správ. Dokonca môže ísť iba o jednosmerné vysielanie bez akejkoľvek spätnej reakcie. Typickým príkladom, kde sa to využíva je streamovanie rádia a televízií (záujemcovia pozrite si RTP protokol, ktorý dokonca umožňuje, že raz odoslané dáta môžu dôjsť k viacerým príjemcom – tzv. multicast).
  • žiadna kontrola toku dát ani zahltenia siete
    • UDP protokol umožňuje odosielať tak rýchlo, ako umožňuje najbližšie sieťové pripojenie, bez ohľadu na to, či je na ceste k cieľu užšie miesto, kde sa strácajú pakety. Odľahčuje to správu odosielania, ale môže to nepriaznivo ovplyvniť sieť a spôsobiť zahltenie príjemcu alebo routrov na ceste.

3.3.1  Kontrolný súčet

Kontrolný súčet sa používa na odhalenie chýb v dátach spôsobených prenosom. Chyba môže nastať ľubovoľným negatívnym vplyvom pri prenose (silné magnetické pole, nečistota v optickom vlákne a pod.). Chyba sa obvykle prejaví zmenou niektorých bitov segmentu na opačné.

Na vytvorenie kontrolného súčtu vezmeme obsah správy plus čísla portov a rozdelíme na kúsky veľkosti 16 bitov. Tým nám vznikne mnoho 16 bitových čísiel, ktoré všetky sčítame, pričom ignorujeme prenesené bity mimo 16 bitový rozsah.

Napríklad, ak máme urobiť kontrolný súčet z dát 11100110 01100110 01010101 01010101 00001111 00001111, potrebujeme sčítať tri 16 bitové čísla. Najprv sčítame prvé dve a k výsledku pripočítame tretie.

 1110011001100110 
 0101010101010101
 ================
10011101110111011

0011101110111011
0000111100001111
================
0100101011001010

Nakoniec ešte vytvoríme z výsledku inverzné číslo, t.j. zmeníme vo výsledku všetky 1 na 0 a všetky 0 na 1. Takto vzniknuté číslo prehlásime za kontrolný súčet a vložíme ho do hlavičky UDP segmentu. Príjemca segmentu urobí opäť súčet doručeného segmentu rovnakým spôsobom a nakoniec ho pripočíta ku kontrolnému súčtu. Ak vo výsledku sa nachádza aspoň jedna nula, segment obsahuje chybu. Inak predpokladáme, že segment chybu neobsahuje, aj keď to aj tak nevieme na 100%.

          súčet: 0100101011001010
kontrolný súčet: 1011010100110101
                 ================
                 1111111111111111