UDP / User Datagram Protocol

Il protocollo UDP

UDP è un protocollo di tipo connectionless, a differenza di TCP che invece è connection oriented, e non gestisce né il riordino dei pacchetti trasmessi, né la ritrasmissione di quelli persi. UDP quindi è un protocollo a bassa affidabilità. Tuttavia, ha dalla sua un’elevata velocità di trasmissione, essendo privo di latenza dovuto alle operazioni di riordino e ritrasmissione proprie del TCP, ed è quindi efficace ed utilizzato nell’ambito delle applicazioni time-sensitive, dove quindi la velocità di trasmissione ha importanza prevalente. Si usa quindi in quegli ambiti nei quali un pacchetto perso, o in ritardo, ha influenza scarsa o nulla, come ad esempio negli streaming audio/video o nel VoIP, o nella trasmissione di streaming dati di giochi online, e quindi in contesti nei quali il protocollo TCP non sarebbe adatto.

L’UDP fornisce soltanto i servizi basilari del livello di trasporto, ovvero:

  • Multiplexing delle connessioni, ottenuta attraverso il meccanismo di assegnazione delle porte;
  • Verifica degli errori (integrità dei dati) mediante la presenza di un campo checksum inserito nell’header del pacchetto

L’UDP, oltre ad essere connectionless è anche un protocollo stateless, ovvero non tiene nota dello stato della connessione e di conseguenza, rispetto al TCP, ha decisamente meno informazioni da memorizzare: un server dedicato ad una particolare applicazione che scelga UDP come protocollo di trasporto può supportare quindi molti più client attivi.

Le applicazioni che trasmettono tramite protocollo UDP possono utilizzare il meccanismo dei socket per stabilire comunicazioni host-to-host. Un’applicazione lega un socket al suo endpoint di trasmissione dei dati, che è costituito dalla combinazione di un indirizzo IP e di un numero di porta.

In questo modo, UDP fornisce il multiplexing delle applicazioni. Ricordiamo che una porta è una struttura software identificata da un valore intero a 16 bit, quindi i numeri di porta hanno range che va 0 e 65535. La porta 0 è riservata, ma è un valore di porta sorgente consentito se il processo di invio non prevede messaggi in risposta.

Struttura, Datagrammi e affidabilità del Protocollo UDP >>