Il User Datagram Protocol (UDP) è uno dei principali protocolli di comunicazione utilizzati nella suite di protocolli Internet. Insieme a TCP (Transmission Control Protocol), fa parte del livello di trasporto del modello TCP/IP. A differenza del suo “fratello maggiore” TCP, UDP è un protocollo non orientato alla connessione, senza controllo di errore e senza garanzie di consegna. Ma proprio per queste caratteristiche, è estremamente veloce ed efficiente in molti scenari.
Caratteristiche Principali di UDP
- Non orientato alla connessione
UDP non stabilisce una connessione diretta tra mittente e destinatario prima di inviare i dati. Questo riduce drasticamente l’overhead e i tempi di latenza. - Senza affidabilità
UDP non garantisce che i pacchetti arrivino a destinazione, né si preoccupa di riordinare i pacchetti ricevuti o di ritrasmettere quelli persi. - Semplicità
La struttura dei pacchetti UDP è molto più semplice rispetto a TCP. Questo lo rende leggero e adatto per applicazioni che possono tollerare perdite di dati. - Velocità
L’assenza di meccanismi di controllo e ritrasmissione rende UDP molto più veloce di TCP. È particolarmente utile per applicazioni in tempo reale.
Struttura di un Datagramma UDP
Un datagramma UDP è costituito da una struttura semplice, composta da:
Campo | Lunghezza (bit) | Descrizione |
---|---|---|
Porta sorgente | 16 | Identifica l’applicazione mittente |
Porta destinazione | 16 | Identifica l’applicazione destinataria |
Lunghezza | 16 | Dimensione totale del datagramma (header + dati) |
Checksum | 16 | Per il controllo degli errori (opzionale) |
Dati | Variabile | Contenuto del messaggio |
Come Funziona UDP
Il funzionamento di UDP è piuttosto diretto:
- L’applicazione crea un messaggio e lo invia al livello di trasporto.
- UDP incapsula il messaggio in un datagramma e lo invia al livello di rete (IP).
- Il datagramma viene inoltrato fino alla macchina destinataria, dove viene letto e consegnato all’applicazione finale, sulla porta specificata.
Nessun meccanismo di conferma, nessun handshake, nessun riordino. È un processo “fire and forget”.
Quando Utilizzare UDP
UDP è la scelta ideale per applicazioni che richiedono bassa latenza e che possono tollerare una certa perdita di pacchetti. Ecco alcuni esempi:
- Streaming audio e video (YouTube, Netflix, Twitch)
- Chiamate VoIP (Skype, Zoom, WhatsApp)
- Videogiochi online (soprattutto multiplayer in tempo reale)
- DNS (Domain Name System)
- Broadcast e multicast in rete locale
Differenze tra UDP e TCP
Caratteristica | UDP | TCP |
---|---|---|
Connessione | No | Sì |
Affidabilità | No | Sì |
Ordinamento dati | No | Sì |
Controllo di flusso | No | Sì |
Overhead | Basso | Alto |
Velocità | Alta | Minore |
Sicurezza e UDP
Essendo privo di meccanismi di controllo, UDP è anche più vulnerabile ad attacchi come:
- IP spoofing
- Attacchi DDoS tramite amplificazione (es. attacchi DNS o NTP)
- Flooding di pacchetti
Per mitigare questi rischi, spesso si utilizzano tecniche a livello di applicazione o firewall specifici.