Confronto tra i protocolli TCP e UDP

Confronto tra i protocolli TCP e UDP

TCP

Il protocollo TCP è di tipo connection oriented, e richiede quindi l’instaurarsi preventivo della connessione prima di iniziare la vera comunicazione end-to-end. Dopo aver impostato una connessione, i dati dell’utente possono essere inviati in modo bidirezionale tramite la connessione. Le sue principali caratteristiche sono quindi le seguenti:

Affidabilità: TCP gestisce il riconoscimento, la ritrasmissione, il riordino e il timeout dei messaggi. Vengono effettuati più tentativi di recapito del messaggio. Se i dati vengono persi durante il percorso allora verranno spediti nuovamente. In TCP non sono ammessi dati mancanti e, in caso di timeout multipli, la connessione viene interrotta.

Ordinamento: se due messaggi vengono inviati su una connessione in sequenza, il primo messaggio raggiungerà per primo l’applicazione ricevente. Tuttavia, si può verificare che due o più segmenti di dati arrivino nell’ordine sbagliato. In questo caso TCP provvede a memorizzare questi dati nel buffer e quindi aspetta fino a quando non riceve tutti i dati, che verranno ordinati e correttamente inviati all’applicazione.

Peso: il protocollo TCP richiede tre pacchetti per impostare una connessione, secondo il sistema visto di Three Way Handshake. È necessario quindi uno scambio di tre messaggi prima che i dati possano essere effettivamente inviati. TCP è quindi “pesante”, ma gestisce l’affidabilità e il controllo della congestione.

Streaming: i dati vengono letti come flusso di byte, nessuna indicazione distintiva viene trasmessa ai confini del messaggio (segmento) del segnale.

UDP

La principale differenza consiste proprio nel fatto che UDP è un protocollo connectionless, basato quindi su un sistema di messaggi più semplice. I protocolli connectionless non instaurano una connessione end-to-end dedicata e la comunicazione si ottiene trasmettendo le informazioni in una sola direzione, direttamente dalla sorgente alla destinazione senza alcun controllo preventivo circa la disponibilità o lo stato del ricevente. Le principali caratteristiche del protocollo UDP sono le seguenti:

Inaffidabilità: quando viene inviato un messaggio UDP, non è possibile sapere se raggiungerà la sua destinazione in quanto potrebbe anche perdersi lungo la strada. Non esiste alcun concetto di riconoscimento, ritrasmissione, timeout o di riordino. Le funzioni di controllo sulla ricezione ed integrità dei dati vengono demandate ai protocolli di livello superiore, ovvero ai processi dell’applicazione.

Non ordinato: se due messaggi vengono inviati allo stesso destinatario, l’ordine in cui arrivano non può essere garantito. UDP non effettua nessun processo di riordino, che dovrà eventualmente essere gestito a livello Application.

Leggerezza: la mancanza di funzioni di controllo e riordino, se da un lato ne caratterizzano la bassa affidabilità, dall’altro gli conferiscono una grande leggerezza. Si tratta infatti del livello di trasporto più semplice disponibile su IP.

Nessun controllo della congestione: l’UDP non effettua nessun controllo nemmeno sulla congestione della rete attraverso la quale effettua la sua trasmissione. Anche le eventuali misure di controllo della congestione, così come quelle di integrità e riordino, vengono demandate al livello di applicazione.

Broadcast: essendo un protocollo connectionless, UDP può trasmettere senza dover preventivamente attivare una  connessione e i pacchetti inviati possono essere indirizzati per essere ricevibili da tutti i dispositivi della subnet.

Multicast: è supportata una modalità operativa multicast in base alla quale un singolo pacchetto di datagramma può essere instradato automaticamente senza duplicazione ad un gruppo di host.