Skip to main content

10.1 Protokoly TCP a UDP

Transportná vrstva

Na transportnej vrstve siete sa pre prenos údajov vo forme segmentov (alebo datagramov) využívajú protokoly TCP a UDP. Oba tieto protokoly identifikujú konkrétne konverzácie daného zariadenia – a to v podobe 16-bitového čísla (0 až 65535), ktoré nazývame port. Kým IP adresa identifikuje zariadenie, port identifikuje konkrétneho účastníka konverzácie, teda aplikáciu alebo službu. Podobne ako v prípade IP adresy, aj pri portoch ide o dva identifikátory: zdrojový a cieľový port. Dvojicu IP:port nazývame soket (socket), napríklad 192.168.1.1:80. Každá konverzácia má takúto dvojicu na oboch koncoch.

Funkcie a úlohy

Transportná vrstva zodpovedá za nasledovné funkcie (ktoré môže, ale nemusí realizovať každý jej protokol):

  • evidencia jednotlivých spojení / konverzácií a identifikácia aplikácie – operačný systém zaeviduje číslo portu ku konkrétnej aplikácii, aby po prijatí údajov na určitý port vedel určiť, ktorej aplikácii patria;
  • segmentácia prenášaných údajov a ich zostavenie – teda rozdelenie objemných údajov na menšie časti (segmenty) pri odosielaní a poskladanie týchto častí do celku po prijatí, prípadne aj riešenie nedoručených segmentov;
  • zostavenie hlavičky segmentu – do hlavičky sa zapíšu rôzne údaje, napríklad čísla portov, prípadne aj poradové číslo segmentu konverzácie;
  • multiplexovanie konverzácie – súvisí so segmentáciou, segmenty s údajmi jednotlivých aplikácií sa odosielajú striedavo tak, aby prebiehali „súčasne“ (pripomína to princíp multitaskingu v OS).

Protokol TCP

Protokol TCP (Transmission Control Protocol) vytvára obojsmerné spojenie pre konverzáciu, je spoľahlivý (potvrdzovaný – nedoručené segmenty odošle znovu, usporiada prijaté segmenty podľa poradového čísla), riadi tok dát (reguluje rýchlosť). Používa sa tam, kde je potrebný spoľahlivý prenos aj za cenu zdržania, napríklad pri prenose webstránky, e-mailu. Umožňuje len unicast komunikáciu. Hlavička TCP segmentu má v základe 20 B (môže však obsahovať aj ďalšie položky), obsahuje aj kontrolný súčet prenášaných údajov.

Zo známych aplikačných protokolov využívajú TCP napríklad HTTP, FTP, SSH, SMTP, POP3, IMAP4, ale aj väčšina tradičných protokolov.

Protokol UDP

Protokol UDP (User Datagram Protocol) ani nevytvára skutočné spojenie – hoci môžeme vnímať akési dočasné „pseudo-spojenia“ a budeme ich vedieť identifikovať neskôr aj na firewalli. Nerieši spoľahlivosť (nepotvrdzuje doručenie, nerieši poradie), neriadi tok dát (čo stihne prísť, to príde). Používa sa tam, kde je potrebný prenos v reálnom čase bez zdržania, aj za cenu straty časti údajov (teda kde je oneskorenie väčším problémom ako strata časti údajov), napríklad pre telefonovanie alebo živý prenos z kamery. Ak je potrebný spoľahlivý prenos (riešenie stratených datagramov), musí to riešiť aplikačný protokol alebo aplikácia.

Okrem unicast komunikácie je UDP možné využiť pre multicast a broadcast komunikáciu. Odosielané segmenty údajov nazývame datagramy. Hlavička UDP datagramu má len 8 B, okrem portov obsahuje len veľkosť prenášaných údajov a ich kontrolný súčet.

Zo známych aplikačných protokolov využívajú UDP napríklad DNS, DHCP, TFTP, ale aj všetky multicast prenosy (napríklad IPTV, mDNS) a protokoly pre VoIP, či všeobecne pre prenosy hlasu a videa v reálnom čase.

Protokol QUIC

Relatívne novým je protokol QUIC (Quick UDP Internet Connections), ktorý síce formálne funguje na UDP, no prináša spoľahlivý prenos aj so šifrovaním. Je základom protokolu HTTP/3 a už v súčasnosti ho vo veľkej miere využívajú predovšetkým veľkí prevádzkovatelia webových služieb (napríklad Google, Facebook, Wikipedia).

Hlavným cieľom protokolu QUIC je zvýšiť rýchlosť webu elimináciou zdržaní vyplývajúcich z tradičného TCP + TLS. Kým v prípade TCP sa najskôr v troch krokoch vytvára spojenie, potom sa na vyššej vrstve TLS rieši šifrovanie, QUIC dohaduje spojenie zároveň aj so šifrovaním v jedinom kroku, čo prináša výrazne vyššiu rýchlosť odozvy. Zrýchlenie je aj pri následnom prenose údajov – kým v prípade TCP sú prenosy webu realizované jedným spojením, ktoré sa pozastaví pri každej strate údajov, QUIC rieši stratené segmenty individuálne pre každý prenos (dokument). QUIC tiež rieši presun klienta medzi sieťami, identifikuje spojenie aj pri zmene IP adresy. Dalo by sa povedať, že QUIC efektívne spája viaceré komunikačné vrstvy.

Pre overenie dostupnosti QUIC na ľubovoľnom webe je možné využiť HTTP/3 Check.