UDP: ce este, protocolul fără stabilirea conexiunii și cum funcționează

Autor: IT Sectr Publicat: 2026-03-06 Timp de citire: 8 min

UDP (User Datagram Protocol) — protocol de transmitere a datelor fără stabilirea conexiunii, care funcționează peste IP și asigură o întârziere minimă la trimiterea de datagrame. Spre deosebire de TCP, UDP nu garantează livrarea, ordinea pachetelor sau protecția împotriva duplicării. Conform datelor IETF RFC 768 (2024), UDP procesează peste 40% din traficul global de internet datorită apelurilor video, streamingului și cererilor DNS.

Principalele puncte

  • UDP — protocol fără stabilirea conexiunii, care trimite datagrame fără confirmarea livrării
  • Întârziere minimă datorită absenței handshake-ului, controlului de congestie și retransmisiilor
  • Se aplică în apeluri video, jocuri online, DNS, DHCP și transmisii în flux
  • Datagrama UDP are un antet de doar 8 octeți față de 20–60 de octeți la TCP
  • Pierderile de pachete sunt compensate la nivel de aplicație prin FEC, retransmisie sau redundanță a datelor

Ce este UDP?

UDP (User Datagram Protocol) — unul dintre protocoalele cheie ale stratului de transport al modelului TCP/IP, dezvoltat de David Reed în 1980. Acesta oferă un mecanism minim de transmitere a datelor: aplicația trimite o datagramă, iar protocolul nu urmărește dacă a ajuns la destinatar.

Antetul UDP este format din doar patru câmpuri: portul sursă, portul destinație, lungimea și suma de control. Fiecare câmp ocupă 2 octeți, deci dimensiunea totală a antetului este de 8 octeți. Pentru comparație, antetul TCP fără opțiuni ocupă 20 de octeți, iar cu opțiuni — până la 60 de octeți.

Protocolul nu suportă fragmentarea la nivelul său — dacă datagrama depășește MTU (Maximum Transmission Unit), este fragmentată la nivelul IP. La pierderea unui fragment, întreaga datagramă este eliminată, deoarece UDP nu poate solicita retransmisia fragmentelor individuale. Dezvoltatorii trebuie să controleze dimensiunea datagramei — pentru rețelele mobile, MTU este adesea de 1400 de octeți, deci dimensiunea maximă nu trebuie să depășească această valoare.

Cum funcționează UDP

Aplicația care utilizează UDP creează un socket de tip SOCK_DGRAM, specifică portul și adresa IP de destinație și trimite datagrama. Protocolul adaugă un antet minim și transmite pachetul la nivelul IP. Destinatarul ascultă pe portul său și extrage datele din datagramele primite.

UDP nu efectuează controlul de congestie — aplicația poate trimite datagrame cu viteza maximă pe care o suportă rețeaua. Acest lucru poate duce la suprasolicitarea canalului, dar în scenariile de timp real, o astfel de agresivitate este justificată: pentru un apel video, fluxul de date cu posibile pierderi este mai important decât oprirea transmisiei.

python
import socket

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(b'Hello, UDP!', ('192.168.1.100', 8888))
sock.close()

În exemplu, se creează un socket SOCK_DGRAM pentru UDP. Metoda sendto trimite datagrama fără stabilirea conexiunii — este suficient să cunoaștem IP-ul și portul destinatarului. Metoda recvfrom pe partea serverului returnează atât datele, cât și adresa expeditorului pentru răspuns. Socketurile UDP pe platformele mobile se configurează similar, dar necesită permisiuni suplimentare: pe iOS trebuie adăugat NSAppTransportSecurity pentru conexiunile UDP necriptate, iar pe Android — permisiunea INTERNET în manifest.

Avantajele și dezavantajele UDP

Alegerea UDP este justificată în scenariile unde viteza este mai importantă decât fiabilitatea. Protocolul nu pierde timp cu stabilirea conexiunii, confirmările și retransmisiile — acest lucru oferă o întârziere minimă, dar necesită ca dezvoltatorul să gestioneze independent pierderile.

AvantajeDezavantaje
Întârziere redusă — fără handshakeFără garanția livrării
Antet mai mic — 8 octețiFără control de congestie
Suport pentru broadcast și multicastPosibile duplicate de pachete
Independența datagramelor — fără coziDimensiunea datagramei limitată de MTU

În aplicațiile mobile, UDP este utilizat prin frameworkuri precum WebRTC, care adaugă peste UDP controlul pierderilor, debitul adaptiv și jitter buffer. Acest lucru oferă avantajele vitezei fără dezavantajele protocolului brut.

Un alt aspect important al UDP este absența controlului de congestie. În TCP, algoritmii Slow Start și Congestion Avoidance reduc viteza de transmisie la pierderea pachetelor pentru a nu suprasolicita rețeaua. UDP nu are astfel de mecanisme, prin urmare dezvoltatorii trebuie să își implementeze propriile strategii de control al vitezei — de exemplu, debit adaptiv în apelurile video sau limitare de rată pe serverele de jocuri pentru a preveni suprasolicitarea excesivă a canalului de rețea.

Unde se utilizează UDP

UDP este indispensabil în scenariile unde toleranța la întârziere este mai importantă decât toleranța la pierderea pachetelor. Să examinăm principalele domenii de aplicare ale protocolului în dezvoltarea mobilă și web.

Streaming audio și video

Protocoalele RTP și RTSP, care funcționează peste UDP, sunt utilizate pentru transmiterea fluxurilor audio și video în timp real. WebRTC — standardul pentru apeluri video în browsere și aplicații mobile — folosește UDP ca transport principal pentru datele media și TCP pentru semnalizare. Pierderea unui singur pachet într-un video de 30 fps este imperceptibilă pentru utilizator, spre deosebire de întârzierea retransmisiei care cauzează o înghețare vizibilă a imaginii.

Jocuri online

Jocurile de tip shooter multiplayer și MOBA necesită o întârziere sub 50 ms pentru sincronizare corectă. UDP transmite pozițiile jucătorilor, împușcăturile și evenimentele mai rapid decât TCP, iar pierderea unui pachet este pur și simplu ignorată — următoarea actualizare va sosi în 16–33 ms. Motoarele de jocuri populare, inclusiv Unity și Unreal Engine, utilizează UDP prin propriile lor straturi de transport cu adăugarea de fiabilitate pentru evenimente critice prin confirmări la nivelul aplicației.

DNS și DHCP

Cererile DNS utilizează UDP pe portul 53, deoarece fiecare cerere este o singură datagramă mică (de obicei până la 512 octeți). Dacă răspunsul nu sosește, clientul pur și simplu repetă cererea după un timeout, ceea ce este mai rapid decât stabilirea unei conexiuni TCP cu strângerea sa de mână în trei pași. DHCP funcționează, de asemenea, peste UDP, deoarece clientul nu are încă o adresă IP și nu poate stabili o conexiune TCP, iar pachetele UDP de broadcast permit găsirea serverului DHCP în rețeaua locală.

Comparația UDP și TCP

Alegerea între UDP și TCP este un compromis între viteză și fiabilitate. Fiecare protocol este optim pentru clasa sa de sarcini, iar înțelegerea diferențelor lor ajută la luarea deciziilor arhitecturale corecte în proiectarea interacțiunilor de rețea în aplicațiile mobile.

CriteriuUDPTCP
Stabilirea conexiuniiNu este necesarăStrângere de mână în trei pași
Antet8 octeți20–60 octeți
Garanția livrăriiNuDa, cu confirmare
OrdonareNuDa
Control de congestieNuDa (AIMD, Slow Start)
AplicareStreaming, jocuri, DNSWeb, email, fișiere, API

În proiectele mobile se folosește adesea o abordare hibridă: TCP pentru cererile fiabile (autentificare, încărcare date) și UDP pentru fluxurile media. QUIC — protocolul modern Google care funcționează peste UDP — combină viteza UDP cu fiabilitatea TCP și este deja utilizat în HTTP/3.

Exemplu de cod UDP

Să examinăm un server UDP simplu în Python care primește mesaje de la clienți și trimite răspunsuri. Serverul ascultă pe portul 8888 și procesează datagramele primite într-o buclă infinită.

python
import socket

server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server.bind(('0.0.0.0', 8888))
print('Serverul UDP a pornit pe portul 8888')

while True:
    data, addr = server.recvfrom(1024)
    print(f'Primit de la {addr}: {data.decode()}')
    server.sendto(b'OK', addr)

Serverul creează un socket UDP, se leagă de portul 8888 și așteaptă datagrame primite. recvfrom returnează datele și adresa clientului, permițând să se răspundă prin sendto. Spre deosebire de TCP, serverul nu stochează starea conexiunii — fiecare datagramă este procesată independent. Acest lucru face serverele UDP scalabile: un singur server poate gestiona milioane de clienți fără a aloca memorie pentru fiecare conexiune separată, ceea ce este important pentru serverele DNS și sistemele de matchmaking pentru jocuri.

În dezvoltarea mobilă, UDP este adesea utilizat prin biblioteci de nivel înalt. De exemplu, CocoaAsyncSocket pentru iOS oferă socketuri UDP cu delegati și GCD pentru procesarea asincronă a evenimentelor. Pe Android, clasa DatagramSocket face parte din biblioteca standard java.net și nu necesită dependențe suplimentare. Pentru Flutter există pachetul udp, care oferă o interfață simplă pentru trimiterea și primirea de datagrame fără configurarea socketurilor native.

Este important de menționat că multe rețele mobile și firewalluri corporative blochează traficul UDP, în special pe porturile peste 1024. Dacă aplicația dvs. utilizează UDP, trebuie să prevedeți un fallback pe TCP sau verificarea disponibilității protocolului prin servere STUN, așa cum face WebRTC. Pe iOS, frameworkul de sistem Network.framework cu NWConnection suportă atât TCP, cât și UDP, selectând automat protocolul optim pe baza disponibilității. Pentru aplicațiile de timp real, se recomandă, de asemenea, implementarea debitului adaptiv, care reduce calitatea fluxului la pierderea pachetelor, asigurând continuitatea redării chiar și pe canale instabile cu un nivel ridicat de erori.

Întrebări frecvente

Prin ce se deosebește UDP de TCP?

UDP nu stabilește o conexiune și nu garantează livrarea pachetelor, ceea ce îl face mai rapid decât TCP. Antetul UDP — 8 octeți față de 20–60 octeți la TCP. UDP este potrivit pentru streaming și jocuri, TCP — pentru cereri web și transfer de fișiere.

Ce este o datagramă în UDP?

Datagrama — un pachet de date independent cu antet UDP (port sursă, port destinație, lungime, sumă de control). Fiecare datagramă este procesată independent, fără legătură cu cele anterioare. Dimensiunea datagramei este limitată de MTU-ul rețelei și, conform specificației, până la 65507 octeți.

Cum se asigură fiabilitatea la utilizarea UDP?

UDP nu asigură fiabilitatea la nivelul de transport — aceasta este implementată de aplicație. Dezvoltatorii adaugă numere de ordine, sume de control, cereri repetate și corectare de erori. FEC (Forward Error Correction) permite recuperarea pachetelor pierdute fără retransmitere.

Când nu trebuie utilizat UDP?

UDP nu este potrivit pentru scenariile unde integritatea datelor este critică: transfer de fișiere, tranzacții bancare, REST-API. În aceste cazuri, TCP garantează că fiecare octet va sosi în ordinea corectă. UDP nu este, de asemenea, recomandat pe canale instabile cu un nivel ridicat de pierderi.

Ce este QUIC și cum se leagă de UDP?

QUIC — un protocol de transport care funcționează peste UDP, dezvoltat de Google și standardizat de IETF ca RFC 9000. Acesta combină viteza UDP cu fiabilitatea TCP, suportă multiplexarea fără blocare și criptarea integrată. HTTP/3 utilizează QUIC ca strat de transport.

Rezumat

  • UDP — protocol fără stabilirea conexiunii cu întârziere minimă și antet de 8 octeți
  • Nu garantează livrarea, ordinea pachetelor sau protecția împotriva duplicării
  • Se aplică în apeluri video, jocuri online, DNS, DHCP și transmisii în flux
  • Alegerea UDP sau TCP depinde de echilibrul dintre viteză și fiabilitate în scenariul specific
  • Pierderile de pachete sunt compensate la nivelul aplicației prin FEC, cereri repetate sau redundanță
  • QUIC peste UDP combină viteza UDP cu fiabilitatea TCP în protocolul HTTP/3
  • Dezvoltatorii trebuie să controleze dimensiunea datagramei și să prevadă un fallback pe TCP în cazul blocării sau filtrării UDP în rețea

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și