Quando si parla di networking, configurazione di un router o utilizzando un software capita spesso di imbattersi negli acronimi TCP e UDP. Questi sono due protocolli utilizzati per inviare e ricevere dati su Internet o su una rete locale. E’ molto importante conoscere la differenza da protocollo TCP e UDP in quanto un utilizza scorretto può veramente portare a risultati inaspettati.
Questi due protocolli determinano le regole con le quali incapsulare un insieme di bit dati da far navigare nella rete. Superficialmente, quando si creano questi pacchetti, i protocolli TCP e UDP forniscono informazioni diverse al ricevente istruendolo sulle azioni da intraprendere.
Protocollo TCP: Transmission Control Protocol
Questo è il protocollo più utilizzato in networking. Quando ad esempio effettuiamo una ricerca sul web, il motore di ricerca preparerà una serie di pacchetti contenenti Bit che andranno a costituire, una volta riassemblati, i nostri risultati di ricerca. La peculiarità principale del protocollo TCP è che il mittente di un pacchetto si assicura della ricezione dello stesso in quanto il destinatario invia un altro pacchetto TCP confermando di aver ricevuto quanto inviato. Se il mittente non riceve conferma entro un tempo massimo reinvia il pacchetto mancante per un numero di volte definito finchè il destinatario non viene identificato come irraggiungibile. Il protocollo TCP, per questa sua caratteristica è molto affidabile in quanto è progettato per garantire che nessun dato venga perso. Anche quando abbiamo una connessione lenta o interrotta per pochi secondi infatti, abbiamo ad esempio garanzia che un file che stiamo scaricando venga completato senza perdita di dati.
Facciamo un esempio molto semplicistico. Il Computer di Pippo, deve inviare un’immagine a quello di Pluto. L’immagine è costituita da una serie di bit ad esempio: 011 101 110 110 110 100 010 . Per inviare questa sequenza di bit, il computer di Pippo suddivide la stringa in tanti pacchetti contenenti ognuno una porzione di bit ad esempio:
Pacchetto 1: 011
Pacchetto 2: 101
Pacchetto 3: 110
Pacchetto 4: 110
Pacchetto 5: 110
Pacchetto 6: 100
Pacchetto 7: 010
Nel Pacchetto 1 vengono inviate anche delle altre informazioni tra cui il numero di pacchetti che si sta inviando. Vediamo quindi un esempio molto semplificato del funzionamento del protocollo TCP tra Pippo e Pluto che si inviano l’immagine di cui sopra:
STEP | PC PLUTO | PC PIPPO |
1 | Ciao Pluto, sono Pippo e ti sto mandando un’immagine composta da 7 pacchetti | |
2 | Grazie Pippo, ho ricevuto la tua comunicazione e conterò i pacchetti che mi arrivano e ti notifico quando mi arrivano, nel caso in cui non ti arrivi la notifica reinviami il pacchetto | |
3 | Pacchetto 1 inviato | |
4 | Pacchetto 1 Ricevuto | |
5 | Pacchetto 2 Inviato | |
6 | Pacchetto 2 Ricevuto | |
7 | Pacchetto 3 inviato | |
8 | Pacchetto 3 Ricevuto | |
9 | Pacchetto 4 inviato | |
10 | Pacchetto 4 Ricevuto | |
11 | Pacchetto 5 inviato | |
12 | Pacchetto 5 Ricevuto | |
13 | Pacchetto 6 Inviato | |
14 | (Mancata Risposta da Pluto) | |
15 | (Mancata Risposta da Pluto) | |
16 | Non mi è arrivata la notifica per il pacchetto 6, te lo rimando | |
17 | Pacchetto 6 Ricevuto | |
18 | Pacchetto 7 Inviato | |
19 | Pacchetto 7 Ricevuto. Grazie |
Come abbiamo visto, quando Pippo si accorge che Pluto non ha dato conferma di ricezione in un tempo stabilito a rinviato il pacchetto mancante.
Protocollo UDP: User Datagram Protocol
Il funzionamento del protocollo UDP è molto simile all’TCP con una differenza sostanziale: non controlla gli errori e non richiede notifiche di ricezione:
Utilizzando questo protocollo, i pacchetti vengono inviati più velocemente al destinatario e qualora questo ne perdesse qualcuno non avrà modo di richiederlo ma andrà semplicemente perso. Il vantaggio è però una comunicazione molto più veloce. Questo tipo di protocollo è utilizzato per lo più nei casi dove la perdita di qualche pacchetto è ritenuto un evento ininfluente come ad esempio uno streaming video (in cui al massimo perdiamo qualche fotogramma) e noi giochi online. Nell’esempio Precedente la comunicazione sarebbe in questo modo:
STEP | PC PLUTO | PC PIPPO |
1 | Ciao Pluto, sono Pippo e ti sto mandando un’immagine composta da 7 pacchetti | |
2 | Pacchetto 1 inviato | |
3 | Pacchetto 2 Inviato | |
4 | Pacchetto 3 inviato | |
5 | Pacchetto 4 inviato | |
6 | Pacchetto 5 inviato | |
7 | Pacchetto 6 Inviato | |
8 | Pacchetto 7 Inviato |
Approfondimenti
Per visionare una reale comunicazione tra 2 PC utilizzando i protocolli TCP e UDP si può utilizzare il software Wireshark.
Il protocollo TCP è disciplinato dall’RFC 793
Il protocollo UDP è disciplinato dall’RFC 768
Disclaimer
Le nozioni fornite in questa guida sono volutamente espresse in modo estremamente semplicistico al fine di fornire un concetto abbozzato di differenza tra i due protocolli.
Chicca
Una bella immagine che riassume brevemente le differenza tra protocollo TCP e UDP 😉