Cos’è TCP e UDP? Una Spiegazione Semplice
![](https://techrobot.com/wp-content/uploads/2021/07/25-What-Is-TCP-and-UDP-A-Simple-Explanation.jpg)
Internet si basa su due protocolli per lo scambio di informazioni tra computer. Questi protocolli di comunicazione definiscono le regole che determinano come avviene il trasferimento di dati tra due entità coinvolte, sia che si tratti di uno-a-uno sia di uno-a-molti. Il Transmission Control Protocol (TCP) e il User Datagram Protocol (UDP) sono due protocolli che puoi utilizzare per spostare dati attraverso le reti. Entrambi funzionano al livello di trasporto del modello OSI.
Simili ma diversi, questi due protocolli svolgono efficacemente il loro lavoro. Mentre uno è orientato alla connessione e richiede l’instaurazione di una connessione prima che possa iniziare il trasferimento dei dati, l’altro è senza connessione e invia dati senza informare prima il dispositivo di destinazione. C’è di più su ciò che fanno questi protocolli, come scoprirai di seguito. Questo articolo si concentra su TCP e UDP – come funzionano, i loro vantaggi, svantaggi e differenze.
Cos’è TCP?
Transmission Control Protocol è un protocollo di comunicazione che si occupa principalmente del trasferimento di pacchetti di dati su internet. Opera al livello di trasporto (livello 4) del modello di Interconnessione dei Sistemi Aperti (OSI). Questo protocollo aiuta nel trasferimento di pacchetti di dati tra un dispositivo/applicazione client e un server (insieme a UDP).
TCP è orientato alla connessione, il che significa che il client e il server devono stabilire una connessione prima di inviare dati in qualsiasi direzione. Inoltre, è un protocollo affidabile poiché controlla gli errori e garantisce che i pacchetti di dati arrivino a destinazione nell’ordine previsto dal dispositivo o dall’applicazione che li invia.
Come Funziona TCP?
Quando si utilizza TCP, un client e un server stabiliscono una connessione utilizzando quello che è noto come il three-way handshake prima che inizi il trasferimento bidirezionale dei pacchetti di dati. Prima che inizi il three-way handshake, il server deve essere in ascolto su una porta per accettare la connessione. Il handshake inizia con lo scambio di tre messaggi (o flag) noti come SYN, SYN/ACK e ACK tra il client e il server.
Esaminiamo il processo passo dopo passo dello scambio qui sotto.
1. Il cliente invia un pacchetto di dati SYN al server. Il pacchetto SYN contiene un numero di sequenza casuale (X) assegnato dal cliente. Lo scopo di questo pacchetto è verificare se il server è disponibile per una nuova connessione.
2. Il server riceve il pacchetto SYN e lo riconosce inviando un pacchetto SYN/ACK. Il server imposta il numero di riconoscimento ad uno più il numero di sequenza (1+X) che il client ha assegnato al pacchetto SYN iniziale e imposta un altro numero di sequenza casuale (Y). Quindi, il server invia due numeri di sequenza insieme al suo pacchetto SYN/ACK al client.
3. Il cliente riceve il pacchetto SYN/ACK dal server e lo riconosce inviando un pacchetto ACK. Il cliente imposta il numero di riconoscimento ad uno più il numero di sequenza (1+Y) ricevuto dal server.
Una volta completato il processo di three-way handshake, il client e il server possono inviare e ricevere dati l’uno dall’altro.
Vantaggi e Svantaggi di TCP
Come la maggior parte dei protocolli, TCP non è privo di difetti; ha i suoi vantaggi e svantaggi. Vediamo qui sotto i pro e i contro dell’uso di TCP.
Vantaggi
1. Affidabile
TCP è affidabile perché garantisce che i pacchetti di dati arrivino a destinazione nel giusto ordine. Quando TCP trasmette un segmento di dati, avvia un timer e attende un riconoscimento dalla destinazione. Invierà nuovamente il segmento se non riceve alcun riconoscimento. Inoltre, utilizza la sequenziazione per sapere quando i pacchetti di dati arrivano fuori ordine.
2. Rilevamento e Recupero degli Errori
TCP utilizza un checksum end-to-end per controllare eventuali modifiche nei pacchetti al loro arrivo a destinazione. Scarta i pacchetti con errori e attende che il mittente li invii nuovamente. Inoltre, scarta anche i duplicati dei dati.
3. Controllo della Congestione
TCP utilizza buffering e windowing per gestire la congestione. La congestione può verificarsi quando l’estremità ricevente della connessione TCP riceve più pacchetti dati di quanti ne possa gestire in un dato momento. TCP utilizza i buffer per gestire la congestione, ma quando i buffer diventano pieni, utilizza il windowing per ridurre la quantità di dati che il mittente può inviare in una volta.
Svantaggi
1. Velocità Lenta
Rispetto a UDP, TCP è lento. In primo luogo, il necessario handshake a tre vie richiede tempo. Poi, c’è la riduzione della velocità che il controllo del flusso, il controllo della congestione e la verifica degli errori causano durante il trasferimento dei dati. In tali casi, TCP sacrifica la velocità per l’affidabilità.
2. Vulnerabili agli attacchi DoS
Il three-way handshake di TCP lo rende vulnerabile agli attacchi DoS o attacchi DDoS. Un SYN flood è uno di questi attacchi in cui un’entità malevola rende un server non disponibile inondandolo di pacchetti SYN. Questo attacco mira a sovraccaricare il server, impedendogli di rispondere alle richieste genuine.
Cos’è UDP?
Il User Datagram Protocol (UDP) è un protocollo di comunicazione come TCP che opera al livello di trasporto del modello OSI. A differenza di TCP, è un protocollo senza connessione, il che significa che un client non ha bisogno di stabilire una connessione con il server prima di trasmettere pacchetti di dati. Di conseguenza, non c’è nessun handshake a tre vie, controllo del flusso e sequenziamento.
UDP non si preoccupa se i datagrammi inviati arrivano a destinazione o se arrivano nell’ordine in cui il client li ha inviati. Questo lo rende meno affidabile di TCP ma più veloce, poiché non deve attendere conferme o ritrasmettere dati. Tuttavia, UDP si preoccupa dell’integrità dei dati e utilizza un checksum per confermare che una terza parte non abbia manomesso i datagrammi.
Come Funziona UDP?
Con UDP, il movimento dei datagrammi dalla loro origine alla destinazione è un processo semplice. Dopo aver aggiunto il suo header ai pacchetti IP ricevuti dal livello di rete, invia i datagrammi direttamente al server di destinazione senza la necessità di stabilire prima alcuna connessione. È la natura semplice di questo processo che rende UDP un protocollo senza connessione.
Inoltre, UDP è ideale per comunicazioni sensibili al tempo dove la perdita di dati in transito è accettabile. Ad esempio, le comunicazioni vocali e video utilizzano UDP.
Vantaggi e Svantaggi di UDP
La mancanza di controllo del flusso e di ritrasmissione dei dati di UDP è sia un vantaggio che uno svantaggio. Di seguito, esaminiamo i pro e i contro dell’uso di UDP.
Vantaggi
1. Trasmissione Dati Veloce
Poiché UDP non ha bisogno di riconoscere i datagrammi prima che il computer di destinazione possa riceverne altri e non ritrasmette i dati, è più veloce di TCP. Inoltre, l’assenza di un handshake a tre vie comporta meno overhead e trasmissioni dati più rapide.
2. Rilevamento degli Errori
Come TCP, anche UDP utilizza un checksum end-to-end per rilevare se i datagrammi contengono errori. Facendo ciò, mantiene l’integrità dei dati e scarta i datagrammi con errori. Poiché non esiste un meccanismo di ritrasmissione, UDP non recupera o reinvia i datagrammi che scarta.
Svantaggi
1. Inaffidabile
Le caratteristiche che rendono una connessione affidabile sono assenti nelle connessioni UDP. A differenza di TCP, UDP non garantisce che i datagram inviati raggiungeranno la loro destinazione. Di conseguenza, i datagram non hanno un timer o necessitano di essere riconosciuti dal dispositivo ricevente. Inoltre, non c’è garanzia che i datagram arriveranno a destinazione nel giusto ordine.
2. Nessun Controllo della Congestione
UDP non ha alcun meccanismo per controllare la congestione. Poiché non riconosce i datagrammi o utilizza il windowing per controllare la trasmissione dei dati, non c’è modo di prevenire la congestione. Di conseguenza, grandi raffiche di dati possono risultare in congestioni.
Differenze tra TCP e UDP
Di seguito, esamineremo le differenze tra il TCP orientato alla connessione e l’UDP senza connessione.
1. Affidabilità
TCP è un protocollo più affidabile rispetto a UDP. TCP confermerà che un segmento di dati raggiunga la sua destinazione prima di inviarne un altro. Inoltre, assicurerà che i segmenti arrivino nella stessa sequenza in cui sono stati inviati e ritrasmetterà i dati che non arrivano a destinazione. In aggiunta, TCP utilizza il controllo di flusso per assicurare che il client non invii pacchetti più velocemente di quanto il server possa elaborarli. Al contrario, UDP non fa nulla di quanto sopra e si preoccupa più di trasferire dati il più velocemente possibile.
2. Velocità
Le caratteristiche di TCP che lo rendono affidabile lo rendono più lento rispetto a TCP. La stretta di mano a tre vie, il controllo del flusso, il controllo della congestione e il meccanismo di ritrasmissione non fanno parte di UDP. Di conseguenza, con meno overhead, UDP è più veloce di TCP.
3. Uso
Il trasferimento di dati orientato alla connessione di TCP lo rende adatto per applicazioni che richiedono affidabilità e non possono accettare la perdita di dati. Ad esempio, supporta protocolli come HTTP, SSH, FTP, SMTP e IMAP. D’altra parte, la velocità di UDP lo rende adatto per applicazioni o protocolli sensibili al tempo che possono accettare la perdita di dati, come chat video o audio in diretta, Voice over IP, richieste DNS e giochi online.
Conclusione
TCP e UDP sono il fondamento della comunicazione su internet. Senza questi due protocolli, sarebbe difficile per i dispositivi connessi a internet comunicare tra loro. TCP è il protocollo di riferimento se hai bisogno di affidabilità e precisione. D’altra parte, UDP è il protocollo di cui hai bisogno se sei meno preoccupato della perdita di pacchetti di dati e più interessato al loro rapido raggiungimento della destinazione.