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

Cosa è il protocollo UDP

User Datagram Protocol è 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.

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.

Rispondendo a @marco99 : ecco perchè il protocollo UDP viene utilizzato per i giochi in rete.