User Datagram Protocol (UDP) è un protocollo del livello di trasporto della Internet Protocol Suite. Fornisce un servizio di comunicazione semplice e senza connessione tra host su una rete. UDP invia pacchetti di dati, chiamati datagrammi, senza stabilire una connessione o garantire la conferma della consegna, rendendolo un protocollo leggero ed efficiente per la trasmissione di dati in cui la velocità e il sovraccarico minimo hanno la priorità rispetto all’affidabilità.
UDP è un protocollo che consente alle applicazioni di inviare brevi messaggi, noti come datagrammi, ad altri host su una rete IP senza la necessità di una comunicazione preventiva per impostare canali di trasmissione o percorsi dati speciali.
Un esempio di utilizzo di UDP sono le query DNS (Domain Name System). Quando il tuo computer deve risolvere un nome di dominio (come www.example.com) in un indirizzo IP, invia una query UDP a un server DNS. Il server risponde con un pacchetto UDP contenente l’indirizzo IP corrispondente. Questo processo è rapido ed efficiente, ideale per la risoluzione DNS in cui la velocità è fondamentale e la perdita occasionale di pacchetti è accettabile.
UDP ha diverse funzionalità chiave:
- Senza connessione: UDP non stabilisce una connessione prima di inviare dati e non garantisce la consegna o l’ordine dei pacchetti.
- Basso sovraccarico: ha un sovraccarico minimo dell’intestazione rispetto a TCP, rendendolo più veloce ed efficiente per la trasmissione di piccole quantità di dati.
- Nessun controllo della congestione: UDP non esegue il controllo della congestione, il che può portare a una potenziale congestione della rete in alcuni scenari.
- Inaffidabile: non garantisce la consegna, la conferma o il ripristino degli errori. Le applicazioni che utilizzano UDP devono gestire questi aspetti a livello di applicazione, se necessario.
Il numero di protocollo UDP nell’intestazione IPv4 è 17 e in IPv6 è lo stesso. Questo numero identifica UDP all’interno dell’intestazione del pacchetto IP e viene utilizzato dall’host ricevente per determinare a quale protocollo consegnare i dati ricevuti dopo che il livello IP li ha elaborati.