TCP e UDP: Qual è la differenza?

TCP e UDP: Qual è la differenza? blog banner image

Cosa sappiamo di TCP e UDP? Internet, blockchain, cloud computing: indipendentemente dal settore, i computer sono più efficaci quando sono collegati tra loro. Tuttavia, il processo di invio dei dati – e la garanzia che raggiungano il pubblico nella sua interezza – richiede una complessa interconnessione di reti e nodi. Prima di entrare nello specifico dei protocolli Transport Control Protocol (TCP) e User Datagram Protocol (UDP), è importante fare un passo indietro.

Tutti i modelli di rete mirano a descrivere un processo simile: come i bit di dati vengono inviati attraverso i fili sotto forma di impulsi elettrici o attraverso i cavi in fibra ottica sotto forma di schemi di luce. E – alla fine del percorso – come questi bit di dati vengono ricevuti e riassemblati.

Il trasferimento di dati da un’applicazione a un’altra su un computer sarebbe tecnicamente possibile con un unico protocollo. Tuttavia, questo metodo sarebbe incredibilmente fragile: qualsiasi modifica all’hardware comporterebbe la necessità di cambiare l’intera applicazione e il software di protocollo. Per ottenere la flessibilità richiesta per il collegamento dei dispositivi, il networking utilizza stack stratificati di diversi protocolli. Ogni strato dello stack ha una funzione specifica e interagisce con gli strati immediatamente superiori e inferiori.

Oggi, il framework più inclusivo è l’Open System Interconnection (OSI). Sia UDP che TCP tagliano e modificano alcuni degli strati coinvolti, quindi iniziare con l’OSI garantisce il miglior punto di partenza per approfondire.

Una rapida panoramica del modello OSI

Strato fisico

Al livello più elementare, questo strato è costituito dagli elementi meccanici di invio e ricezione dei dati. Questo determina il modo in cui i pin e i fili codificano gli 0 e gli 1 in un segnale che viene poi inviato ai media locali sotto forma di segnali luminosi, elettrici e radio.

Strato di collegamento dati (DLL)

Lo strato di collegamento dati funge da intermediario tra i componenti fisici di un dispositivo e i pacchetti di dati basati sulla rete. I dati nello strato fisico sono essenzialmente non strutturati e il compito di questo strato è quello di impacchettarli in frame. In questo modo, il flusso costante di dati inviati viene raggruppato in cluster, un processo chiamato multiplexing. In questo caso, a ogni pacchetto di dati viene assegnato un header per etichettare il mittente e la destinazione previsti.

Strato di rete

Con i pacchetti di dati pronti a partire, lo strato di rete (o Internet) è in grado di instradare i pacchetti di dati da un dispositivo all’altro attraverso una rete. Ciò avviene assegnando a ogni dispositivo un indirizzo IP univoco, che viene utilizzato per identificare il dispositivo e determinare il percorso che i pacchetti devono seguire per raggiungerlo.

Strato di trasporto

Situato tra lo strato di rete e quello di sessione, lo strato di trasporto si concentra sulla consegna dei messaggi a un host. Lo strato di trasporto consente alle applicazioni e ai servizi di funzionare più velocemente, poiché i processi a monte non devono considerare le caratteristiche uniche della rete di comunicazione di ogni dispositivo. Questo strato è alla base dei protocolli UDP e TCP, di cui parleremo tra poco.

Strato di sessione

Lo strato di trasporto non si preoccupa se due computer hanno già comunicato, ma si concentra solo sul trasporto dei pacchetti avanti e indietro. Lo strato di sessione organizza il traffico in un inizio e una fine logici.

Strato di presentazione

Il volume di questi pacchetti di dati può essere molto elevato. Lo strato di presentazione si concentra principalmente sulla codifica e sulla compressione di questi pacchetti per ridurre la loro richiesta di larghezza di banda prima che lascino il dispositivo del mittente.

Strato applicazione

Infine, i dati ricevuti (o quelli che stanno per essere inviati) devono essere comunicati all’utente. Sebbene l’OSI sia un modello utile, tieni presente che nessun protocollo moderno ne segue le caratteristiche precise in tutti e 7 gli strati. Per esempio, i protocolli TCP e UDP si concentrano solo sugli strati di rete e di trasporto.

Che cos’è il TCP

Il Transport Control Protocol è stato essenzialmente il primo protocollo di rete. Inventato poco dopo l’avvento di Internet nel 1981, la sua prima forma era incentrata sulla segmentazione dei dati in pacchetti. Nei decenni successivi, è cresciuto e si è sviluppato fino a diventare lo stack TCP/IP che è lo standard odierno. I pacchetti all’interno del TCP sono suddivisi in 4 strati: data link, rete, trasporto e applicazione.

Come suggerisce il nome, il TCP è più influente a livello di trasporto. Prima dell’invio di qualsiasi dato, il TCP stabilisce una breve connessione tra due endpoint della rete tramite un handshake a tre vie.

Innanzitutto, il client avvia la connessione inviando un messaggio SYN (sincronizzazione) (sotto forma di un numero casuale); quando lo riceve, il server lo riconosce con un SYN-ACK (che aggiunge semplicemente un 1 alla fine del numero del client). Infine, il SYN-ACK viene confermato dal client con un messaggio ACK. Questo handshake virtuale assicura che sia il mittente che il destinatario siano pronti a comunicare e sappiano che il canale è stabilito. Se la porta ricevente è offline o non disponibile, il messaggio ACK viene sostituito da un pacchetto TCP RST (reset).

Non è solo il processo iniziale a basarsi su un riconoscimento bidirezionale: anche la terminazione bidirezionale conferma quando un client o un server ha terminato l’invio dei dati. In modo simile, dopo che tutti i dati rilevanti sono stati inviati, il client invia un segmento FIN sotto forma di numero di sequenza. Anche in questo caso, il server ne prende atto. Quando tutti i dati sono stati ricevuti dal server, è il turno del server di inviare un pacchetto FIN, che viene confermato e la connessione termina.

L’importanza dell’IP

Un aspetto fondamentale di questo processo è che ogni connessione deve avere una destinazione definita prima di essere inviata. Solo dopo può avvenire l’handshake TCP. È qui che il protocollo Internet (IP) agisce come l’altra faccia della medaglia del TCP/IP.

Ogni dispositivo o dominio connesso a Internet ha un indirizzo IP univoco. Nell’header di ogni pacchetto di dati c’è l’indirizzo IP del destinatario, il che significa che i dati arrivano dove devono arrivare. Una volta identificato l’indirizzo IP, il processo TCP può avviare il trasferimento dei dati. I dati ricevuti devono però arrivare alla porta giusta: ecco perché i pacchetti TCP includono i dati della porta. Considera l’IP come un codice postale e i dati della porta TCP come un numero civico specifico. Infine, i pacchetti TCP includono un numero di sequenza, simile alle pagine numerate di una lettera, che identifica l’ordine di invio dei pacchetti.

Sebbene il protocollo TCP/IP sia diventato lo standard per una trasmissione dei dati sicura e affidabile su Internet, uno dei principali vantaggi dell’approccio IP è la sua flessibilità, e comunque il TCP non è l’unico modo per trasportare i dati da un punto A a un punto B.

Che cos’è l’UDP

Il protocollo UDP (User Datagram Protocol) è un protocollo di trasporto dati leggero che si basa sulle fondamenta dell’IP. Invece del lungo processo di handshake del TCP, tuttavia, l’UDP invia piccoli pacchetti indipendenti, noti come datagrammi, senza fare prima un riferimento incrociato a una connessione. Sebbene ciò possa sembrare rischioso, UDP è costruito con la capacità di abbandonare le informazioni senza subire un’interruzione critica delle comunicazioni.

Ogni datagramma è un’unità autosufficiente e non contiene informazioni sui dati precedenti o successivi. In questo modo, invece di dover elaborare un arretrato di pacchetti in ritardo, un server può gestire le richieste in modo completamente lineare. Questo processo è facilitato dalla dimensione dei pacchetti coinvolti in UDP. Tieni presente che i pacchetti TCP hanno un sistema di controllo degli errori e una numerazione sequenziale incorporati: eliminando tutti questi optional, i datagrammi UDP sono, in termini di dimensione, una frazione degli altri. Questi dati semplificati possono essere elaborati alla velocità della luce.

Di conseguenza, UDP viene utilizzato nei servizi che richiedono un’elaborazione quasi in tempo reale. Pensa allo streaming video e ai giochi per computer: possono richiedere molti datagrammi UDP, ma la loro velocità è necessaria per una buona esperienza utente. E se un pacchetto cade o si perde, le implicazioni nella vita reale sarebbero forse un pixel mancante che dura un fotogramma. Le query DNS (Domain Name Service), che collegano un nome di dominio a un indirizzo web riconoscibile, utilizzano UDP. Queste richieste sono minuscole, costituite da una singola coppia di richiesta e risposta, ma devono avvenire rapidamente, rendendo UDP il loro naturale caso d’uso.

Differenze, funzionalità per funzionalità, tra TCP e UDP

Funzionalità UDP (User Datagram Protocol) TCP (Transmission Control Protocol)
Connessione Senza connessione, non stabilisce una connessione prima di inviare i dati. Orientato alla connessione, stabilisce un handshake a tre vie prima del trasferimento dei dati.
Affidabilità Non garantisce la consegna, l’ordine o il controllo degli errori. L’architettura dei pacchetti garantisce la consegna nell’ordine corretto.
Velocità Veloce. Più lento di UDP grazie ai meccanismi di controllo degli errori.
Controllo del flusso di dati Nessun controllo di flusso; invia i dati alla velocità che il mittente può generare e che la rete può gestire. Il controllo del flusso è gestito attraverso tecniche di windowing per regolare il flusso dei dati.
Utilizzo Utilizzato per applicazioni sensibili al tempo in cui la perdita di alcuni dati è tollerabile (ad esempio, streaming audio/video in diretta). Utilizzato nei casi in cui la trasmissione affidabile dei dati è fondamentale (ad esempio, navigazione web, e-mail).
Dimensione dell’header Dimensione dell’header ridotta (8 byte). Dimensione dell’header maggiore (minimo 20 byte).
Sequenziamento Non mette in sequenza i pacchetti di dati. Sequenzia i pacchetti di dati per garantire una consegna ordinata.

Un ultimo spunto di riflessione sul tema della sicurezza

Quando ti trovi a scegliere tra i protocolli UDP e TCP nei tuoi progetti, tieni presente che, sebbene la velocità dell’UDP lo renda una prospettiva attraente, questo protocollo è intrinsecamente più suscettibile a problemi di sicurezza come spoofing e attacchi Denial of Service. Il meccanismo di handshake del TCP impedirebbe a qualsiasi indirizzo IP contraffatto di causare problemi, ma comunque sappi che neanche il TCP è immune alle minacce. Negli anni più recenti, gli attacchi di amplificazione DDoS hanno attaccato con successo questo meccanismo di scambio bidirezionale per costringere un server ad aspettare il messaggio ACK finale, che non arriva mai.

Passi successivi

La creazione di un team IT efficiente ed efficace richiede una soluzione centralizzata che funga da principale strumento di erogazione dei servizi. NinjaOne consente ai team IT di monitorare, gestire, proteggere e supportare tutti i dispositivi, ovunque essi si trovino, senza la necessità di una complessa infrastruttura locale.

Scopri di più su NinjaOne Endpoint Management, fai un tour dal vivoinizia la tua prova gratuita della piattaforma NinjaOne.

Ti potrebbe interessare anche

Vuoi diventare un Ninja dell’IT?

Scopri come NinjaOne può aiutarti a semplificare le operazioni IT.
Guarda una demo×
×

Guarda NinjaOne in azione!

Inviando questo modulo, accetto La politica sulla privacy di NinjaOne.

Inizia una prova gratuita della piattaforma RMM numero 1 su G2

Non è richiesta alcuna carta di credito e si ha accesso completo a tutte le funzionalità.

Termini e condizioni NinjaOne

Cliccando sul pulsante “Accetto” qui sotto, dichiari di accettare i seguenti termini legali e le nostre condizioni d’uso:

  • Diritti di proprietà: NinjaOne possiede e continuerà a possedere tutti i diritti, i titoli e gli interessi relativi allo script (compreso il copyright). NinjaOne ti concede una licenza limitata per l’utilizzo dello script in conformità con i presenti termini legali.
  • Limitazione d’uso: Puoi utilizzare lo script solo per legittimi scopi personali o aziendali interni e non puoi condividere lo script con altri soggetti.
  • Divieto di ripubblicazione: In nessun caso ti è consentito ripubblicare lo script in una libreria di script appartenente o sotto il controllo di un altro fornitore di software.
  • Esclusione di garanzia: Lo script viene fornito “così com’è” e “come disponibile”, senza garanzie di alcun tipo. NinjaOne non promette né garantisce che lo script sia privo di difetti o che soddisfi le tue esigenze o aspettative specifiche.
  • Assunzione del rischio: L’uso che farai dello script è da intendersi a tuo rischio. Riconosci che l’utilizzo dello script comporta alcuni rischi intrinseci, che comprendi e sei pronto ad assumerti.
  • Rinuncia e liberatoria: Non riterrai NinjaOne responsabile di eventuali conseguenze negative o indesiderate derivanti dall’uso dello script e rinuncerai a qualsiasi diritto legale o di equità e a qualsiasi rivalsa nei confronti di NinjaOne in relazione all’uso dello script.
  • EULA: Se sei un cliente NinjaOne, l’uso dello script è soggetto al Contratto di licenza con l’utente finale (EULA) applicabile.