Appunti Sistemi e Reti x Maturità

Strato di trasporto: TCP vs UDP, il trucco che ti salva all'orale

Strato di trasporto: TCP vs UDP, il trucco che ti salva all'orale

Guida completa allo strato di trasporto (Livello 4 OSI) per la maturità: differenze tra TCP e UDP, funzionamento delle porte, handshake a tre vie, controllo di flusso e congestione. Con esempi pratici, schemi riassuntivi e collegamenti interdisciplinari per l'orale.

Cos'è lo Strato di Trasporto e perché ti interessa (molto)

Se il Livello 3 (Rete) è il navigatore GPS che decide il percorso migliore per i tuoi pacchetti attraverso internet, lo Strato di Trasporto (o Livello 4 nel modello OSI) è il corriere espresso che si occupa della consegna vera e propria. Non basta che il pacco arrivi alla città giusta (indirizzo IP): deve bussare alla porta esatta della casa giusta (porta logica) e consegnare il contenuto intatto.

Ecco il punto che confonde sempre tutti all'inizio: il livello di rete si occupa della comunicazione host-to-host (da computer a computer), mentre lo strato di trasporto gestisce la comunicazione end-to-end (da processo a processo). Quando apri WhatsApp sul telefono e invii un messaggio, non stai semplicemente comunicando con il server di Meta: stai dialogando con una specifica applicazione in esecuzione su quella macchina remota. Questo è il compito del nostro Livello 4.

Questo strato si occupa di segmentare i dati provenienti dal livello superiore (Applicazione), aggiungere le intestazioni necessarie per il controllo, e passare tutto al livello di rete. Ma la sua vera magia? Gestire la comunicazione logica tra applicazioni, garantendo (se necessario) affidabilità, controllo di flusso e correzione degli errori.

Prima di entrare nel dettaglio, ricorda che puoi testare le tue conoscenze con i Quiz Maturità AI per verificare se hai capito davvero la differenza tra TCP e UDP.

TCP vs UDP: la scelta tra l'affidabilità e la velocità

In questo strato esistono due protocolli fondamentali che devi conoscere come le tue tasche: il TCP (Transmission Control Protocol) e l'UDP (User Datagram Protocol). Sono come due fratelli con caratteri opposti: uno è meticoloso, pignolo e garantisce che tutto arrivi perfetto; l'altro è velocissimo, spregiudicato e non garantisce nulla. Scegliere quale usare è una decisione critica che gli sviluppatori prendono ogni giorno.

TCP: La raccomandata con ricevuta di ritorno

Il TCP è un protocollo connection-oriented (orientato alla connessione). Cosa significa? Prima di spedire un solo byte di dati, client e server devono stabilire una connessione logica attraverso il famoso three-way handshake (stretta di mano a tre vie). È come quando telefoni a un amico: prima squilli, lui risponde, vi salutate, e solo poi inizi a parlare.

Le caratteristiche fondamentali del TCP sono:

  • Affidabilità garantita: utilizza numeri di sequenza per ordinare i pacchetti e acknowledgement (ACK) per confermare la ricezione. Se un pacchetto si perde, viene ritrasmesso automaticamente.
  • Controllo di flusso: grazie alla finestra scorrevole (sliding window), il ricevente comunica al mittente quanti dati è in grado di gestire, evitando il sovraccarico.
  • Controllo di congestione: TCP è "educato". Se nota che la rete è intasata, riduce la velocità di trasmissione (algoritmi di Slow Start e Congestion Avoidance).
  • Consegna ordinata: anche se i pacchetti arrivano sfalsati, TCP li riordina prima di consegnarli all'applicazione.

L'header TCP è piuttosto corposo: minimo 20 byte, massimo 60 byte. Contiene campi essenziali come Porta Sorgente, Porta Destinazione, Numero di Sequenza (32 bit), Numero di Acknowledgement (32 bit), lunghezza header, flags (SYN, ACK, FIN, RST, PSH, URG), dimensione finestra, checksum e puntatore urgente.

UDP: Il volantino lanciato dal balcone

L'UDP è l'esatto opposto: connectionless (senza connessione). Non esiste handshake, non esiste stato della connessione. Prendi i dati, li imbusti, li spedisci. Non sai se arriveranno, non sai in che ordine, ma sei velocissimo.

Caratteristiche dell'UDP:

  • Velocità massima: overhead minimo (header di soli 8 byte: porta sorgente, porta destinazione, lunghezza, checksum).
  • Nessuna garanzia: è un servizio best-effort (fai del tuo meglio). Se il pacchetto si perde, amen.
  • Nessun controllo di congestione: spedisce a raffica, anche se la rete sta andando in crash.
  • Supporta multicast: perfetto per inviare lo stesso dato a molti destinatari simultaneamente.

Dove si usa UDP? Negli streaming video (Netflix, YouTube, Twitch), nelle videochiamate (Zoom, Meet), nei giochi online e nel DNS. Perché? Perché in una videochiamata preferisci perdere qualche frame piuttosto che aspettare che il pacchetto perso venga ritrasmesso (causando lag insopportabile).

Confronto visivo tra protocollo TCP e UDP
Confronto schematico tra TCP (affidabile ma lento) e UDP (veloce ma non affidabile)

Porte e Socket: l'indirizzo preciso della tua applicazione

Ecco un concetto che alla maturità ti chiederanno sicuramente: come fa il computer a sapere se un pacchetto deve andare a Chrome, a Skype o al tuo gioco? Grazie alle porte (ports).

Una porta è un numero di 16 bit (quindi da 0 a 65535) che identifica un processo specifico all'interno di un host. Si dividono in tre categorie:

  • Well-known ports (0-1023): riservati ai servizi standard. HTTP (80), HTTPS (443), FTP (21), SSH (22), SMTP (25), DNS (53). Questi li devi sapere a memoria.
  • Registered ports (1024-49151): assegnati a servizi specifici ma non di sistema, come MySQL (3306) o PostgreSQL (5432).
  • Dynamic/Ephemeral ports (49152-65535): usati temporaneamente dal client quando si connette a un server. Quando apri Chrome per visitare un sito, il tuo PC sceglie una porta casuale in questo range per quella sessione.

Il Socket: l'abbinamento vincente

Se l'indirizzo IP identifica la casa, e la porta identifica la stanza, il socket è l'indirizzo completo: IP:Porta. Un esempio pratico: 192.168.1.5:8080. Una connessione TCP è identificata univocamente da una coppia di socket (mittente e destinatario).

Questo meccanismo permette il multiplexing: sul tuo PC possono girare contemporaneamente decine di applicazioni che usano la rete, ciascuna con la sua porta, senza che i dati si mescolino. Il livello di trasporto legge la porta di destinazione e smista il segmento al processo corretto.

Affidabilità, Flusso e Congestione: i meccanismi nascosti del TCP

Qui sta la parte più tecnica, quella che dimostra se hai capito davvero il TCP. Non basta sapere che "è affidabile": devi sapere come fa ad esserlo.

Il Three-Way Handshake (SYN, SYN-ACK, ACK)

Per aprire una connessione, client e server scambiano tre segmenti:

  1. SYN: Il client invia un segmento con il flag SYN attivo e un numero di sequenza iniziale (ISN) casuale (es. SEQ=x).
  2. SYN-ACK: Il server risponde con SYN attivo, il suo numero di sequenza (ISN=y), e ACK=x+1 (conferma di aver ricevuto x).
  3. ACK: Il client invia ACK=y+1, confermando la ricezione. La connessione è stabilita (ESTABLISHED).

Per chiudere la connessione si usa il Four-Way Handshake (FIN, ACK, FIN, ACK), perché ogni direzione della comunicazione deve essere chiusa separatamente. Il client può aver finito di spedire, ma il server potrebbe ancora avere dati da inviare.

Controllo di Flusso vs Controllo di Congestione

Attenzione: sono due cose diverse e il prof ti punta sempre qui!

Il controllo di flusso (Flow Control) gestisce la velocità tra mittente e ricevente. Usa il campo Window Size nell'header TCP: il ricevente dice "puoi mandarmi al massimo X byte prima di aspettare un mio ACK". Se il ricevente è lento (es. un vecchio PC), il mittente rallenta per non sovraccaricarlo.

Il controllo di congestione (Congestion Control) gestisce la velocità rispetto alla rete. TCP monitora la rete: se i pacchetti iniziano a perdersi (segnale di congestione), riduce drasticamente la velocità (Slow Start), poi la aumenta gradualmente fino a trovare il limite massimo sostenibile (Congestion Avoidance).

Questo è fondamentale per l'equità di Internet: se tutti usassero UDP senza freni, la rete collasserebbe.

Schema del three-way handshake TCP
Diagramma temporale del three-way handshake: gli stati della connessione e i flag TCP scambiati

Gli Algoritmi di Congestione

Negli anni sono nati diversi algoritmi per gestire la congestione:

  • Tahoe: al rilevamento di perdite (timeout), riparte da Slow Start (finestra = 1 MSS).
  • Reno: distingue tra perdita per timeout (grave) e perdita per tre ACK duplicati (meno grave). Nel secondo caso usa Fast Recovery senza ripartire da zero.
  • CUBIC: l'attuale standard in Linux, usa funzioni cubiche per crescita della finestra, ottimale per reti ad alta latenza.

Schema Riassuntivo: TCP vs UDP a colpo d'occhio

Prima di passare ai collegamenti interdisciplinari, ecci una tabella che devi imprimerti nella mente. È la prima cosa che ti chiederanno all'orale.

CaratteristicaTCPUDP
Tipo di servizioAffidabile, ordinatoNon affidabile, disordinato
ConnessioneOrientata (handshake)Senza connessione
Header size20-60 byte8 byte
Controllo erroriRitrasmissione ARQSolo checksum (opzionale)
Controllo flussoSì (sliding window)No
Controllo congestioneNo
OrdinamentoNo
VelocitàPiù lentaVeloce
Esempi d'usoHTTP, FTP, SMTP, SSHDNS, VoIP, Streaming, Gaming

Collegamenti Interdisciplinari per l'Orale

Lo strato di trasporto non vive isolato. Ecco come collegarlo ad altre materie per dimostrare una preparazione trasversale:

  • Tecnologie dell'Informazione e Comunicazione (TIC): Programmazione socket in Python o Java. La differenza tra aprire un socket TCP (stream) e UDP (datagram) nel codice. La funzione bind(), listen(), accept() per TCP.
  • Sicurezza Informatica: Attacchi come il SYN Flood (invio massivo di SYN senza completare l'handshake per saturare le risorse del server). I firewall e le ACL (Access Control Lists) che filtrano il traffico basandosi sulle porte.
  • Matematica: Calcolo della checksum (somma in complemento a 1). Analisi delle prestazioni: calcolo del throughput teorico basato sulla finestra di congestione e RTT (Round Trip Time).
  • Fisica: Il rapporto tra velocità di trasmissione, latenza (RTT) e banda. Perché su connessioni satellitari (alta latenza) TCP fatica di più rispetto a UDP.
  • Inglese: Terminologia tecnica essenziale: acknowledgement, handshake, windowing, multiplexing, flow control.
  • Storia e Cittadinanza: L'evoluzione di Internet dagli anni '70 ( quando TCP/IP fu creato da Vinton Cerf e Robert Kahn) all'era dello streaming e gaming online, che ha spinto l'adozione massiva di UDP.

Se vuoi allenarti a discutere questi collegamenti con un esaminatore virtuale, prova la Simulazione Orale AI per metterti alla prova.

FAQ: Domande frequenti all'orale

Qual è la differenza tra indirizzo IP e numero di porta?

L'indirizzo IP (Livello 3) identifica l'host (il dispositivo fisico) nella rete. Il numero di porta (Livello 4) identifica il processo applicativo all'interno di quell'host. Servono entrambi: IP per arrivare al computer, porta per consegnare il dato al programma giusto (es. il browser anziché la mail).

Perché il DNS usa UDP se è un protocollo inaffidabile?

Perché le query DNS sono piccole (entrano in un pacchetto), e la velocità è prioritaria. Se una query DNS si perde, il client semplicemente la ritrasmette dopo un timeout. Inoltre, UDP evita l'overhead del three-way handshake per una richiesta che richiede risposta immediata. Nota: per risposte molto grandi (zone transfer), il DNS usa TCP.

Cosa succede se un pacchetto TCP si perde?

Il ricevente non invierà l'ACK per quel segmento (o invierà ACK duplicati per l'ultimo pacchetto ricevuto correttamente). Il mittente, scaduto un timer (RTO - Retransmission Timeout) o ricevuti tre ACK duplicati, rispedirà il pacchetto perso. TCP garantisce la consegna affidabile a costo della latenza.

TCP è sempre migliore di UDP?

Assolutamente no. Dipende dall'applicazione. Per il trasferimento file (FTP) o le pagine web (HTTP) TCP è essenziale. Per lo streaming video, le chiamate VoIP o i giochi online, UDP è preferibile perché accetta perdite minime per evitare ritardi (lag). Un pacchetto video ritardato è inutile, meglio perderlo e mostrare il frame successivo.

Cosa significa "connection-oriented" in pratica?

Signica che prima dello scambio dati viene stabilito un canale logico dedicato (la connessione), vengono allocate risorse (buffer, variabili di stato), e alla fine il canale viene chiuso formalmente. TCP mantiene lo stato della connessione (LISTEN, SYN_SENT, ESTABLISHED, FIN_WAIT, CLOSE_WAIT, etc.) in una variabile detta TCB (Transmission Control Block).

Maturando Team
Scritto da

Maturando Team

Il team di Maturando ti aiuta a prepararti al meglio per l'esame di Maturità.