User Datagram Protocol (sauUDP, în traducere liberă din englezăProtocolul Datagramelor Utilizator[1]) este un protocol de comunicație pentru calculatoare ce aparține nivelului Transport (nivelul 4 ) al modelului standardOSI.
Împreună cuInternet Protocol (IP), acesta face posibilă livrarea mesajelor într-o rețea. Spre deosebire de protocolulTCP, UDP constituie modul decomunicație fără conexiune. Este similar cu sistemul poștal, în sensul căpachetele de informații (corespondența) sunt trimise în general fără confirmare de primire, în speranța că ele vor ajunge, fără a exista o legătură efectivă între expeditor și destinatar.[2] Practic, UDP este un protocol ce nu oferă siguranța sosirii datelor la destinație (nu dispune de mecanisme de confirmare); totodată nu dispune nici de mecanisme de verificare a ordinii de sosire adatagramelor sau a datagramelor duplicate. UDP dispune, totusi, în formatul datagramelor, desume de control pentru verificarea integrității datelor sau de informații privind numărul portului pentru adresarea diferitelor funcții la sursa/destinație.
Caracteristicile de baza ale UDP îl fac util pentru diferite aplicații.
- orientat către tranzacții - util în aplicații simple de tip întrebare-răspuns cum ar fiDNS.
- estesimplu foarte util în aplicații deconfigurări, precumDHCP sau TFTP (TrivialFTP).
- lipsa întârzierilor de retransmisie îl pretează pentru aplicații în timp real ca VoIP, jocuri online.
- lucrează excelent în medii de comunicațiiunidirecționale precum furnizarea de informațiibroadcast, în servicii de descoperire (discovery services), sau în partajarea de informații către alte noduri (RIP).
Antetul UDP este alcătuit din 4 câmpuri fiecare având lungimea de 2 octeți.
| Biti | 0 - 15 | 16 - 32 |
|---|
| 0 | Portul sursa | Portul destinație |
|---|
| 32 | Lungime | Suma de control |
|---|
| 64 | Date |
|---|
- Portul sursa - în adresarea bazata pe IPv4 acest câmp este opțional. Daca nu este utilizat acest câmp, are valoarea zero; când reprezinta informație semnificativa, el va indica portul inițiator al procesului de transmisie a datagramelor.
- Portul destinație - spre deosebire de portul sursa, câmpul este obligatoriu și indica portul de recepție
- Lungime - acest câmp indica lungimea în octeți a datagramei: antet plus secțiune de date (valoarea minima a lungimii este 8).
- Suma de control - asigura imunitatea la erori; se calculează ca fiind complementul fata de 1 (pe 16 biți) a pseudo-antetului cu informații extrase din antetul IP, antetului UDP și a câmpului de date, eventual se completează cu zerouri pentru a atinge lungimea stabilita.
Pseudo-antetul prefixează antetul UDP și va conține, printre altele, adresele sursa, destinație, lungimea pachetului UDP.
Atunci când UDP rulează sub IPv4, pseudo-antetul este utilizat în calcularea sumei de control; formatul acestuia va arata astfel (s-a prezentat situatia reala cu antetul UDP în continuarea pseudo-antetului).
| Biți | 0 - 7 | 8 - 15 | 16 - 23 | 24 - 31 |
|---|
| 0 | Adresa sursa |
|---|
| 32 | Adresa destinație |
|---|
| 64 | Zero | Protocol | Lungime UDP |
|---|
| 96 | Portul sursa | Portul destinație |
|---|
| 128 | Lungime | Suma de control |
|---|
| 160 | Date |
|---|
CampulProtocol are valoarea 17 (hexazecimal 0x11) specifica protocolului UDP.
Atunci cand UDP ruleaza sub IPv6, suma de control este obligatorie. Metoda de calcul este descrisa inRFC 2460.
| Biți | 0 - 7 | 8 - 15 | 16 - 23 | 24 - 31 |
|---|
| 0 | Adresa sursa |
|---|
| 32 |
|---|
| 64 |
|---|
| 96 |
|---|
| 128 | Adresa destinație |
|---|
| 160 |
|---|
| 192 |
|---|
| 224 |
|---|
| 256 | Lungime UDP |
|---|
| 288 | Zero | Antetul următor |
|---|
| 320 | Portul sursa | Portul destinație |
|---|
| 352 | Lungime | Suma de control |
|---|
| 384 | Date |
|---|