UDP: cosa si nasconde dietro allo User Datagram Protocol?

La comunicazione dei sistemi nelle reti locali domestiche e aziendali e nelle reti pubbliche come Internet si basa di default sulla famiglia di protocolli Internet. Il componente più noto di questa gamma di protocolli è senza dubbio l’Internet Protocol (IP); questo non è solo responsabile dell’indirizzamento e della frammentazione di pacchetti di dati, ma definisce anche come vengono descritte le informazioni relative alla sorgente e alla destinazione.

La trasmissione dei dati viene generalmente operata dal protocollo di trasporto TCP (Transmission Control Protocol) con connessione, da cui deriva la frequente denominazione delle reti con TCP/IP. TCP garantisce sì la sicurezza ma è anche causa di un ritardo di trasmissione; così, nel 1980, David Patrick Reed pubblicò la sua idea relativa allo User Datagram Protocol (UDP), un’alternativa al protocollo standard più semplice e veloce.

Cos’è UDP (User Datagram Protocol)?

Lo User Datagram Protocol, abbreviato UDP, è un protocollo che consente l’invio senza connessione di datagrammi nelle reti basate su IP. Per raggiungere i servizi desiderati sugli host di destinazione, il protocollo ricorre alle porte elencate come uno dei componenti principali nell’intestazione UDP. Come molti altri protocolli di rete, UDP rientra nella famiglia di protocolli Internet, sebbene questo vada classificato nel livello di trasporto e quindi come istanza intermediaria tra il livello di rete e quello di applicazione.

N.B.

Il protocollo UDP costituisce un’alternativa diretta al TCP ampliato, laddove i due protocolli si differenziano in particolare su un punto: mentre la trasmissione via TCP ha luogo solo dopo l’obbligatorio three-way handshake (autenticazione reciproca tra mittente e destinatario, inclusa la creazione di una connessione), UDP rinuncia a questa procedura per ridurre la durata della trasmissione al minimo possibile.

Con lo User Datagram Protocol un’applicazione può inviare delle informazioni molto velocemente, in quanto non occorre creare una connessione con il destinatario né attendere una risposta. Tuttavia, non vi sono garanzie che i pacchetti arrivino interi e nella stessa sequenza in cui sono stati inviati. Inoltre, questo protocollo è esposto a manipolazioni o accessi di terzi. I pacchetti difettosi sono riconoscibili da una checksum (somma di controllo) opzionale (obbligatoria in combinazione all’IPv6).

Definizione

L’UDP (User Datagram Protocol) è un protocollo senza connessione della suite di protocolli Internet, che opera sul livello di trasporto e che è stato specificato nel 1980 nella RFC (Request for Comments) 768. Come alternativa snella e quasi senza ritardi rispetto a TCP, UDP viene impiegato per la trasmissione rapida di pacchetti di dati nelle reti IP. I settori di impiego tipici di UDP sono pertanto richieste DNS, connessioni VPN e streaming audio/video.

Le caratteristiche di UDP in sintesi

Per comprendere in dettaglio il funzionamento della trasmissione a pacchetto con il protocollo, è importante esaminare con più esattezza le caratteristiche menzionate in merito allo User Datagram Protocol.

  1. UDP è senza connessione: il trasporto di dati mediante protocollo UDP si contraddistingue per il fatto che avviene senza stabilire una connessione tra mittente e destinatario. I rispettivi pacchetti sono inviati in sequenza all’indirizzo IP preferito, indicando la porta di destinazione, senza che il computer che si cela dietro di essa debba fornire una risposta. Se vanno rispediti anche dei pacchetti al mittente, l’intestazione UDP può contenere opzionalmente anche la porta sorgente.
  2. UDP utilizza le porte: UDP ricorre come TCP alle porte per trasmettere i pacchetti ai giusti protocolli successivi o le applicazioni desiderate al sistema di destinazione. Le porte sono definite secondo il modello comprovato per numeri, laddove i numeri compresi tra 0 e 1023 sono assegnati a servizi fissi.
  3. UDP consente una comunicazione rapida e senza ritardi: il protocollo di trasporto è adatto a una trasmissione rapida dei dati, in quanto basato su una configurazione senza connessione. Ciò deriva dal fatto che la perdita di singoli pacchetti influisce solo sulla qualità della trasmissione. Nei collegamenti TCP, i pacchetti persi vengono richiesti nuovamente in automatico, causando il ristagno dell’intero processo di trasmissione.
  4. UDP non offre alcuna garanzia in merito alla sicurezza e alla genuinità dei dati: la rinuncia a un'autenticazione reciproca di mittente e destinatario permette la straordinaria velocità del protocollo UDP, ma questo non garantisce né la completezza né la sicurezza dei pacchetti di dati. Anche l'invio dei pacchetti in sequenza corretta non è garantito. Pertanto, i servizi che si avvalgono dell’UDP mettono a disposizione misure di correzione e protezione proprie.
In sintesi

La caratteristica più importante dello User Datagram Protocol è la sua capacità di trasportare pacchetti di dati senza alcuna connessione. I vantaggi in termini di velocità di trasmissione sono di contro molto soggetti alla manomissione, a una perdita non corretta di pacchetti e a una classificazione in parte arbitraria dei pacchetti. Le applicazioni UDP devono pertanto poter lavorare bene con pacchetti di dati mancanti e non classificati e/o contenere meccanismi di correzione e sicurezza propri.

Com'è strutturata l’intestazione UDP?

Come la maggior parte dei protocolli, i pacchetti UDP si compongono generalmente di un’intestazione (header) e dei dati d’uso effettivi. L’header UDP contiene tutte le informazioni necessarie per la trasmissione dei dati con il protocollo di trasporto e un pacchetto UDP identificabile come tale. Suddivisa in due blocchi da 32 bit con 4 diversi campi di dati, la struttura appare come segue:

  bit 0–15 bit 16–31
0 Porta sorgente Porta di destinazione
32 Lunghezza Checksum

I primi 16 bit dell’intestazione rivelano la porta sorgente mediante cui viene inviato il rispettivo pacchetto di dati. Il destinatario ha bisogno di questa informazione per poter rispondere al pacchetto. Dato che l’UDP non si avvale di una connessione e non prevede sostanzialmente interazioni di nessun tipo tra mittente e destinatario, questo campo è opzionale. Pertanto, in questa posizione viene impostato generalmente il valore “0”.

Nel campo successivo sono indicati la porta di destinazione e il servizio controllato. Al contrario della porta sorgente, questa informazione è obbligatoria, in quanto, altrimenti, il datagramma non può essere assegnato in modo corretto.

N.B.

Per i campi della porta si applica il seguente principio: se si tratta di un’applicazione del client, il numero di porta assegnato dovrebbe essere volatile. Se la porta è associata a un processo del server, il numero della porta normalmente fa parte delle “well-known ports” (standard).

La lunghezza del datagramma viene definita nel campo della lunghezza. Essa include la lunghezza dell’intestazione (8 byte) e l’entità dei dati d’uso (massimo teorico: 65.535 byte). Se si impiega un IPv4, il limite effettivo per i dati d’uso è di 65.507 byte, una volta detratte le intestazioni IP e UDP. Per l’IPv6 sono possibili pacchetti (cosiddetti jumbogram) che superano il massimo. Secondo RFC 2675, in un caso simile, il valore del campo di lunghezza è pari a “0”.

Il completamento dell’header UDP costituisce la checksum che serve al riconoscimento degli errori nella trasmissione. In questo modo è possibile riconoscere le manipolazione dei dati trasmessi; tuttavia, i pacchetti corrispondenti vengono scartati senza la necessità di una nuova richiesta. La checksum viene generata unendo parti

  • dell’header UDP,
  • dei dati d’uso
  • e del cosiddetto pseudo header (contiene le informazioni dell’intestazione IP).

La checksum è opzionale nell’IPv4, ma viene impiegata come standard dalla maggior parte delle applicazioni. Se la checksum è assente, questo campo va impostato con valore “0”. Se l’UDP viene impiegato in combinazione all’IPv6, la checksum è obbligatoria.

Quali applicazioni utilizzano il protocollo UDP?

Per via della sua struttura minimalista e dell'assenza di meccanismi per garantire una trasmissione completa e di successo, lo User Datagram Protocol non è impiegabile come protocollo di trasporto universale. In un primo momento era stato progettato principalmente per applicazioni che non necessitavano (ancora) di un servizio di trasmissione affidabile. Il campo d’impiego dell’UDP è pertanto limitato, ma va evidenziato l’enorme valore di questo protocollo, come dimostrano le seguenti classi di applicazione per UDP:

  • Applicazioni “Best-Effort-Delivery”: lo scenario d’impiego classico per l’UDP è rappresentato da applicazioni basate su una “consegna di dati con il massimo sforzo”. Ai programmi che sfruttano lo User Datagram Protocol come servizio di “best effort”, è sufficiente una trasmissione non affidabile delle informazioni, perché ripetono le informazioni regolarmente. Sono un esempio le applicazioni che trasmettono i valori di misura o che eseguono di continuo gli stessi incarichi di lavoro.
  • Applicazioni leggere: l’overload ridotto del protocollo di trasporto offre un supporto ottimale per applicazioni di facile costruzione. Insieme alla rinuncia a una struttura di connessione, questi programmi beneficiano di una performance particolarmente elevata nell’elaborazione e nell’inoltro di pacchetti di dati nelle reti.
  • Applicazioni con meccanismi propri per una trasmissione affidabile: l’UDP può essere interessante anche per applicazioni che si basano su una condivisione affidabile delle informazioni, ma con meccanismi propri per rispondere ai pacchetti. Il vantaggio di tali servizi è che non sono vincolati da schemi fissi per garantire la completezza e la correttezza dei pacchetti di dati inviati. Potrete decidere autonomamente come e quando reagire a informazioni errate o non classificate.
  • Applicazioni multicast: mentre i protocolli di trasporto affidabili come TCP sono limitati all’uso della comunicazione end-to-end, il protocollo UDP supporta anche connessioni IP multicast. Se un’applicazione deve inviare dei pacchetti IP in modo rapido ed efficiente a tanti destinatari in contemporanea, l’UDP costituisce una base adeguata.
  • Applicazioni in tempo reale (Real-time Applications): infine, l’UDP è adatto anche come protocollo di trasporto per servizi che operano con requisiti in tempo reale, come trasmissioni audio o video. Questi devono essere in grado di controllare autonomamente l’invio, la ricezione e la riproduzione dei flussi di dati, il che è possibile senza difficoltà con la trasmissione UDP senza connessione.
N.B.

Oggi le applicazioni in tempo reale si avvalgono principalmente del protocollo RTP (Real-time Transport Protocol), il quale si basa sull’UDP e, a differenza del protocollo di base, può anche rilevare la perdita di pacchetti. Le specifiche più recenti di RTP sono disponibili in RFC 3550.

Hai trovato questo articolo utile?
Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.
Page top