Internet și rețele

TCP și UDP: cum își trimit datele aplicațiile prin rețea

Diferența dintre TCP și UDP explicată cu exemple: confirmarea pachetelor, retransmiterea, viteza, și de ce jocurile și apelurile video aleg UDP.

De Publicația LumeaTehnologiei5 min de citit
Colete așezate pe o bandă transportoare într-un depozit logistic, pe drum spre destinație
Cuprins 6 secțiuni

TCP și UDP sunt cele două protocoale de transport pe care se sprijină aproape tot ce faci pe internet. Ele hotărăsc cum sunt împărțite datele în pachete, cum ajung la destinație și ce se întâmplă când un pachet se pierde pe drum. TCP pune accent pe corectitudine, UDP pe viteză, iar diferența se vede în aplicațiile pe care le folosești zilnic, de la un simplu site până la un joc online.

Nu trebuie să fii inginer de rețele ca să înțelegi ideea. O analogie cu poșta este suficientă pentru a vedea de ce un protocol este potrivit pentru un tip de trafic și nepotrivit pentru altul.

Ce face protocolul de transport?

Protocolul de transport pregătește datele aplicației pentru drumul prin rețea și le predă la destinație aplicației potrivite. Datele mari sunt tăiate în pachete, fiecare cu un antet care conține adresele și porturile de sursă și de destinație. Portul este numărul care spune ce aplicație din dispozitiv primește datele, de exemplu 443 pentru pagini web securizate; despre el găsești mai multe în articolul despre porturi și firewall.

Sub protocolul de transport lucrează protocolul IP, care se ocupă doar de adrese și de ruta pachetelor, fără nicio garanție. Pachetele pot ajunge în altă ordine, pot ajunge duplicate sau pot să nu ajungă deloc. Tocmai aici apar diferențele dintre TCP și UDP.

Cum funcționează TCP-ul?

TCP (Transmission Control Protocol) construiește o conexiune între cele două capete și garantează că datele ajung complete și în ordinea corectă. Pentru asta folosește trei mecanisme.

Stabilirea conexiunii. Înainte de orice date, cele două părți schimbă trei mesaje scurte, numite three-way handshake: clientul trimite o cerere, serverul răspunde cu o confirmare, iar clientul confirmă la rândul lui. Abia apoi începe transferul.

Numerotarea și confirmarea. Fiecare pachet are un număr de ordine, iar receptorul confirmă ce a primit. Dacă o confirmare nu vine în timp util, emițătorul retrimite pachetul respectiv.

Controlul fluxului și al congestiei. TCP mărește treptat ritmul de trimitere și îl reduce când observă pierderi, ca să nu înece rețeaua. Din acest motiv o descărcare pornește mai lent și accelerează după câteva secunde.

Prețul acestor garanții este timpul: handshake-ul adaugă un drum dus-întors înainte de date, iar un pachet pierdut blochează livrarea celor de după el până când este retrimis.

Cum funcționează UDP-ul?

UDP (User Datagram Protocol) trimite pachete, numite datagrame, fără conexiune, fără confirmări și fără retransmitere. Antetul lui are doar câteva câmpuri, deci adaugă foarte puțin la fiecare pachet. Dacă un pachet se pierde, UDP nu știe și nu face nimic.

Pare un dezavantaj, dar pentru anumite aplicații este exact ce trebuie. Într-un apel video, o imagine primită cu întârziere de câteva secunde nu mai folosește nimănui; este mai bine să sari peste ea și să afișezi ce vine acum. Același lucru este valabil într-un joc, unde poziția unui jucător de acum două secunde nu mai contează.

Sfat: Când un apel video îngheață scurt și apoi continuă, de obicei s-au pierdut pachete UDP pe drum, iar aplicația a ales să meargă mai departe în loc să aștepte retransmiterea.

TCP sau UDP: cum se compară?

Cele două protocoale rezolvă probleme diferite, iar tabelul arată principalele deosebiri.

CaracteristicăTCPUDP
Conexiune prealabilăda, prin handshakenu
Confirmări și retransmiteredanu
Ordinea pachetelorgarantatănegarantată
Viteză și încărcare suplimentarămai mare, cu garanțiimică, fără garanții
Folosit tipic pentrupagini web, e-mail, descărcăriapeluri, jocuri, DNS, streaming live
Turn de radiocomunicații cu antene pe un cer albastru, folosit la transmiterea semnalelor

Exemple concrete din viața de zi cu zi

Când deschizi un site securizat, browserul folosește de regulă TCP (sau un protocol modern construit peste UDP, despre care vorbim mai jos), pentru că o pagină la care lipsesc bucăți din cod nu se afișează corect. Când transferi un fișier, TCP asigură că fiecare octet ajunge neschimbat.

Căutările DNS folosesc de obicei UDP, fiindcă întrebarea și răspunsul sunt foarte mici, iar o eventuală pierdere se rezolvă prin repetarea întrebării. Asta se vede în explicația despre DNS. Apelurile vocale, jocurile și multe transmisiuni live aleg UDP pentru a menține latența mică; pentru legătura dintre cele două, vezi articolul despre latență și lățime de bandă.

Ce este QUIC și de ce contează?

QUIC este un protocol modern construit peste UDP, care adaugă peste el garanțiile pe care le oferă TCP, dar într-un mod mai flexibil. Păstrează fiabilitatea, adaugă criptarea integrată (în stilul celei descrise în articolul despre HTTPS) și reduce timpul de stabilire a conexiunii.

Un avantaj important este că pierderea unui pachet nu mai blochează toate celelalte fluxuri de date de pe aceeași conexiune. Pe rețele mobile, unde pachetele se pierd mai des, diferența se simte la încărcarea paginilor. Este baza versiunii HTTP/3, folosită tot mai des de site-urile mari și de rețelele de livrare a conținutului, despre care ai mai multe în articolul despre CDN.

De ce nu se renunță pur și simplu la TCP?

TCP este implementat peste tot, în fiecare sistem de operare, router și firewall, și funcționează fiabil de zeci de ani. Echipamentele din rețea îl înțeleg bine, în timp ce traficul UDP necunoscut este uneori limitat sau blocat de firewall-uri. Schimbarea se face deci treptat, nu dintr-odată.

Pentru imaginea de ansamblu a drumului unui pachet, de la dispozitiv la server, citește ghidul despre cum funcționează internetul.

Pe aceeași temă, citește și securitatea online: ghid detaliat pentru utilizatori obișnuiți.

Întrebări frecvente

Care este mai rapid, TCP sau UDP?

UDP are mai puțină încărcare și nu așteaptă confirmări, deci livrează mai repede ce primește. TCP este mai lent la pornire, dar garantează că datele ajung complete.

De ce folosesc jocurile online UDP?

Pentru că latența mică contează mai mult decât livrarea fiecărui pachet. Informația veche de câteva sute de milisecunde nu mai este utilă, așa că jocul preferă să meargă înainte.

Pot descărca fișiere sigur prin UDP?

Da, dar aplicația trebuie să adauge singură verificările de care e nevoie, cum face QUIC. UDP simplu nu le oferă.

TCP și UDP folosesc aceleași porturi?

Au spații de porturi separate. Numărul 53, de exemplu, există atât pentru TCP, cât și pentru UDP, iar aplicația decide pe care îl folosește.

Se poate bloca UDP într-o rețea?

Da, unele rețele de birou sau școală limitează UDP-ul din motive de securitate. Atunci aplicațiile revin la TCP, de obicei cu o calitate mai slabă la apelurile video.

↑