Basi

Protocollo UDP: Perchè i giochi in rete usano ? Perchè è il più veloce !

Cosa è il protocollo UDP

User Datagram Protocol (Sezione Rookie) è un protocollo di comunicazione alternativo al Transmission Control Protocol (TCP) e viene utilizzato principalmente per stabilire connessioni a bassa latenza e a basso consumo di tempo computazionale tra applicazioni su Internet. Il protocollo UDP è uno dei due principali protocolli di trasporto utilizzati nella suite di protocolli di Internet (l’altro è il TCP, Transmission Control Protocol). UDP è noto come un protocollo di trasporto senza connessione, il che significa che non stabilisce una connessione prima di inviare dati.

 

tcp vs udp headers - il protocollo udp
tcp vs udp headers – il protocollo UDP

TCP e UDP

I protocolli UDP e TCP funzionano sopra il protocollo Internet (IP) e sono talvolta denominati UDP/IP o TCP/IP. Ma ci sono differenze importanti tra i due protocolli.
Quando l’UDP consente la comunicazione da processo a processo “process-to-process” , il TCP supporta la comunicazione da host a host. TCP invia singoli pacchetti ed è considerato un mezzo di trasporto affidabile; UDP invia messaggi, detti datagrammi, ed è considerato il miglior modo per comunicare (rispetto la velocità).

Inoltre  il TCP fornisce il controllo degli errori e del flusso ma tali meccanismi non sono supportati in UDP.

UDP è considerato un protocollo senza connessione perché non richiede la creazione di un circuito virtuale prima del trasferimento dei dati.

Il protocollo UDP fornisce due servizi non forniti dal livello IP: fornisce numeri di porta per aiutare a distinguere le diverse richieste degli utenti e, facoltativamente, una capacità di checksum per verificare che i dati siano arrivati intatti.

TCP è emerso come il protocollo dominante utilizzato per la maggior parte della connettività Internet grazie alla sua capacità di suddividere grandi insiemi di dati in singoli pacchetti, controllare e inviare nuovamente i pacchetti persi e riassemblare i pacchetti nella sequenza corretta. Ma questi servizi aggiuntivi hanno un costo in termini di sovraccarico di dati aggiuntivi e ritardi chiamati latenza.

Al contrario, UDP invia solo i pacchetti, il che significa che ha una larghezza di banda e una latenza molto più bassi. Con UDP, i pacchetti possono prendere percorsi diversi tra mittente e ricevente e, di conseguenza, alcuni pacchetti possono essere persi o ricevuti “out of order”

Applicazioni di UDP

UDP è un protocollo ideale per applicazioni di rete in cui la latenza percepita è critica, come ad esempio nei giochi e nelle comunicazioni vocali e video, che possono subire perdite di dati senza influire negativamente sulla qualità percepita. In alcuni casi, le tecniche di correzione degli errori di trasmissione vengono utilizzate per migliorare la qualità audio e video nonostante alcune perdite.

UDP può essere utilizzato anche in applicazioni che richiedono una trasmissione dati senza perdita di dati quando l’applicazione è configurata per gestire il processo di ritrasmissione dei pacchetti persi e la corretta disposizione dei pacchetti ricevuti. Questo approccio può aiutare a migliorare la velocità di trasferimento dati di file di grandi dimensioni rispetto al TCP.

Nel modello di comunicazione Open Systems Interconnection (OSI), UDP, come TCP, è nel Layer 4, il livello di trasporto. UDP lavora in combinazione con protocolli di livello superiore per aiutare a gestire i servizi di trasmissione dati tra cui Trivial File Transfer Protocol (TFTP), Real Time Streaming Protocol (RTSP), Simple Network Protocol (SNP) e DNS (Domain Name System) lookups, NTP (Network Time Protocol) ,BOOTP, DHCP,NNP (Network News Protocol) , RIP, OSPF.

Può essere utilizzato dove sono collegati un gran numero di client e dove non è necessaria la correzione degli errori in tempo reale, come i giochi, le conferenze vocali o video e lo streaming media.

Composizione dell’intestazione UDP

L’intestazione User Datagram Protocol ha quattro campi, ognuno dei quali è di 2 byte.

  • numero della porta di origine, che è il numero del mittente;
  • numero della porta di destinazione ( la porta a cui è indirizzato il datagramma);
  • lunghezza, la lunghezza in byte dell’intestazione UDP ed eventuali dati incapsulati;
  • checksum che viene utilizzato per il controllo degli errori. Il suo utilizzo è richiesto in IPv6 e facoltativo in IPv4.
UDP Datagram
UDP Datagram

 

Le differenze tra TCP e UDP

TCP aiuta l’IT a controllare la consegna dei pacchetti in due modi. In primo luogo, il TCP numera ogni pacchetto in modo che l’endpoint di destinazione li renda nell’ordine corretto. In secondo luogo, il TCP include meccanismi per garantire che l’endpoint di destinazione riceva ogni pacchetto di dati.

Dopo aver ricevuto un pacchetto, il dispositivo destinatario invia un messaggio al mittente che conferma la consegna. Se il mittente non riceve una risposta dal destinatario, il mittente ritrasmette il pacchetto fino a quando l’endpoint lo riceve con successo o annulla le comunicazioni, come nel caso di un timeout. TCP include anche funzionalità di controllo degli errori per garantire che nessun dato sia danneggiato.
Sfortunatamente, tutta questa affidabilità è accompagnata da un notevole sovraccarico, con conseguente aumento delle trasmissioni, una maggiore richiesta di larghezza di banda della rete e un’elaborazione complessivamente più lenta.

UDP risolve questi problemi eliminando i controlli e gli equilibri del TCP, concentrandosi invece solo sulla trasmissione dei dati. Non vi è alcuna numerazione dei pacchetti, controllo degli errori o riconoscimento della consegna dei pacchetti. Se i pacchetti si perdono nella trasmissione, rimangono persi. Se i pacchetti sono “out of order” , rimangono in questo stato.


ROOKIE


Il Protocollo UDP

Immaginate UDP come un sistema di spedizione di pacchetti. Ogni pacchetto è come una piccola scatola contenente un messaggio, e deve essere consegnato da un mittente a un destinatario attraverso una serie di corrieri. Ma c’è una differenza fondamentale rispetto ad altri servizi di spedizione: i corrieri non hanno ricevute di consegna, quindi non sapete sempre se il pacchetto è arrivato a destinazione o se è stato consegnato nell’ordine corretto.

Ogni pacchetto UDP ha un indirizzo di origine (il mittente) e un indirizzo di destinazione (il destinatario), proprio come una lettera con un mittente e un destinatario. Quando il mittente mette il messaggio nel pacchetto e lo affida al primo corriere, è fatto. Non c’è bisogno di aspettare una conferma di consegna o di seguire il corriere fino a destinazione.

 

UDP (User Datagram Protocol) communication protocol
UDP (User Datagram Protocol) communication protocol

Quindi ?

Questa mancanza di conferma di consegna rende UDP molto veloce, ma ha un lato negativo: non si può essere sicuri al 100% che il messaggio sia stato consegnato o che sia arrivato nell’ordine corretto. Questo è come inviare un pacco postale senza richiedere una firma di ricevuta. Potrebbe arrivare, ma potrebbe anche andare perso o arrivare fuori sequenza.

Applicazioni come le videochiamate, i giochi online e lo streaming video spesso utilizzano UDP perché richiedono velocità e un piccolo ritardo nella consegna dei dati è accettabile. Tuttavia, per le applicazioni in cui è fondamentale avere la certezza che tutti i dati vengano consegnati in modo accurato e in ordine, come il trasferimento di file o l’invio di email, si preferisce utilizzare protocolli più affidabili come TCP.

UDP è un modo veloce di inviare messaggi o dati attraverso la rete, ma a volte può essere un po’ come una spedizione di pacchetti senza ricevute di consegna. È adatto a determinati scopi, ma va usato con attenzione a seconda delle esigenze dell’applicazione.