Čo je téma
TCP (Transmission Control Protocol) a UDP (User Datagram Protocol) sú dva hlavné protokoly transportnej vrstvy, ktoré umožňujú komunikáciu medzi zariadeniami v sieťach založených na modeli TCP/IP. Kým TCP predstavuje orientáciu na spojenie a garantuje bezchybné doručenie každej časti údajov, UDP funguje bez nadviazania spojenia a uprednostňuje maximálnu rýchlosť pred stopercentnou integritou.
Na čo slúži
Tieto protokoly slúžia na prenos údajov medzi aplikáciatmi, ktoré bežia na rôznych sieťových uzloch. TCP sa využíva všade tam, kde je kritická presnosť dát — napríklad pri prehliadaní webových stránok (protokoly ako HTTP / HTTPS), prenose súborov (FTP) či elektronickej pošte. Naopak, UDP sa uplatňuje v scenároch, kde sú zlé alebo stratené pakety menej dôležité než okamžitá odozva, typicky pri živom videostreamingu, online hraní hier alebo službách DNS (Domain Name System).
Ako funguje komunikácia
Komunikácia pomocou TCP začína procesom zvaným trojcestné trasvanie (three-way handshake). Klient odošle paket so štandardným príznakom SYN, server odpovie kombináciou SYN-ACK a klient nakoniec potvrdí spojenie správou ACK. Až potom sa začnú prenášať samotné dáta, pričom každý segment dostane poradové číslo a príjemca ho potvrdzuje. Ak dôjde k strate, TCP paket automaticky odošle znova. Komunikácia cez UDP je podstatne jednoduchšia. Odosielateľ rozdelí dáta do dátagramov a okamžite ich posiela príjemcovi bez toho, aby kontroloval, či druhá strana existuje, či je pripravená, alebo či pakety dorazili v správnom poradí.
Protokol alebo sieťová vrstva
V hierarchických sieťových modeloch ako sú OSI alebo TCP/IP sa TCP a UDP nachádzajú na štvrtej, teda transportnej vrstve. Táto vrstva zabezpečuje logické prepojenie medzi koncovými aplikačnými procesmi bežiacimi na rôznych hostiteľoch. Transportná vrstva berie dáta z aplikačnej vrstvy (vrstva 7), rozsekuje ich na menšie segmenty (v prípade TCP) alebo datagramy (v prípade UDP) a obaľuje ich do hlavičiek, ktoré obsahujú informácie potrebné na doručenie správnej aplikácii prostrednictvom protokolu IP adresa na sieťovej vrstve.
Dôležité adresy porty alebo parametre
Na identifikáciu konkrétnej aplikácie na zariadení využívajú oba protokoly porty v rozsahu od 0 do 65535. Porty sa delia na známe (Well-Known, 0 až 1023), registrované a dynamické. Medzi dôležité parametre TCP patrí veľkosť okna (Window Size) pre riadenie toku, poradové číslo (Sequence Number) a potvrdzovacie číslo (Acknowledgment Number). UDP má hlavičku oveľa jednoduchšiu, obsahuje iba zdrojový port, cieľový port, celkovú dĺžku a kontrolný súčet (Checksum).
Praktický príklad
Predstavte si situáciu, keď načítavate webovú stránku. Váš prehliadač nadviaže TCP spojenie s webovým serverom cez štandardný port 443. Server vám postupne posiela jednotlivé časti HTML kódu a obrázkov. Ak medzitým dôjde k výpadku jedného paketu v dôsledku preťaženia siete, TCP protokol tento chýbajúci paket rozpozná a vyžiada si jeho opätovné odoslanie, čo síce mierne spomalí načítanie, ale výsledná stránka sa zobrazí kompletne. Ak by ste však sledovali online videokonferenciu využívajúcu UDP, strata jedného paketu s videom sa prejaví len ako nepatrné, takmer nepostrehnuteľné zrnko alebo vynechanie jedného snímku, pričom hovor pokračuje bez prerušenia v reálnom čase.
Bezpečnostné súvislosti
Vzhľadom na to, že TCP vyžaduje nadviazanie spojenia, je náchylné na špecifické útoky, ako je napríklad SYN flood útok, pri ktorom útočník zahltí server požiadavkami na spojenie a vyčerpá jeho pamäť. Na zabezpečenie dôvernosti a integrity dát sa TCP kombinuje s kryptografickými protokolmi, napríklad TLS (Transport Layer Security). UDP, keďže nesleduje stav spojenia, sa často zneužíva na objemové DDoS (Distributed Denial of Service) útoky formou amplifikácie, pretože zmanipulovaný zdrojový IP formát umožňuje posielať malé požiadavky, ktoré generujú obrovské množstvo odpovedí smerujúcich na obete.
Výhody a obmedzenia
Hlavnou výhodou TCP je vysoká spoľahlivosť, kontrola toku a garantované poradie doručenia. Jeho obmedzením je vyššia réžia, dodatočná latencia spôsobená nadväzovaním spojenia a čakaním na stratené pakety. Naopak, výhodou UDP je minimálna réžia, vysoká rýchlosť prenosu a efektivita pri vysielaní pre viacero príjemcov naraz (multicast a broadcast). Obmedzením UDP je absencia akejkoľvek záruky doručenia, nutnosť riešiť prípadné straty dát priamo v aplikačnej vrstve a náchylnosť k strate paketov v preťažených sieťach.
Často kladené otázky
Prečo sa pre webové stránky stále používa TCP, keď je pomalšie?
Pretože webové stránky vyžadujú presnosť. Strata čo i len jedného znaku v konfiguračnom súbore alebo skripte by mohla spôsobiť nefunkčnosť celej webovej aplikácie.
Môže aplikácia používať TCP aj UDP súčasne?
Áno. Mnoho moderných sieťových aplikácií a hier využíva TCP na prenos dôležitých stavových údajov (prihlásenie, inventár) a UDP na prenos rýchlych real-time aktualizácií pozície alebo hlasu.
Čo je to kontrolný súčet v UDP?
Checksum je voliteľný mechanizmus v hlavičke UDP, ktorý slúži na overenie, či dáta počas prenosu neboli poškodené. Ak sa kontrolný súčet nezhoduje, poškodené dáta sa zahodia.