1. Introduzione al livello Trasporto: multiplexing e demultiplexing

Benvenuto in questa lezione dedicata al livello Trasporto. Esploreremo i meccanismi fondamentali di multiplexing e demultiplexing, pilastri essenziali per la gestione del traffico di rete.

Analizzeremo come i dati vengono correttamente smistati tra le diverse applicazioni, garantendo una comunicazione efficiente e ordinata nei sistemi informatici moderni.

  • shape
  • shape


Introduzione al livello Trasporto: multiplexing e demultiplexing

Nei moduli precedenti abbiamo sviscerato il Livello 2 (Data Link) con le VLAN e il Livello 3 (Rete) con l'indirizzamento IP. Sappiamo ormai con assoluta certezza che un pacchetto, viaggiando attraverso switch logici e router intercontinentali, riuscirà a trovare la strada dal computer A al computer B. Ma c'è un problema architetturale enorme che l'indirizzo IP, da solo, non può risolvere.

Immaginiamo che il computer B sia un server aziendale. Questo server, nello stesso esatto istante, sta eseguendo un Server Web (Apache), un Server di Posta (Postfix) e un demone SSH per l'amministrazione remota. Quando il router consegna il pacchetto IP alla scheda di rete del server B, il sistema operativo si trova davanti a un bivio: a quale di queste tre applicazioni in esecuzione deve consegnare i dati contenuti nel pacchetto? Il Livello 3 non ne ha la minima idea, perché il suo compito si esaurisce nel raggiungere la macchina fisica.

Per risolvere questo enigma, dobbiamo salire al Livello 4 (Trasporto) della pila OSI. In questa lezione analizzeremo come il livello Trasporto colmi il vuoto tra l'hardware di rete e le applicazioni software, introducendo i concetti fondamentali di Porta, Multiplexing e Demultiplexing.

Il concetto di Porta: l'astrazione verso il software

Per permettere la consegna mirata dei dati ai singoli processi software, il livello Trasporto (tramite protocolli come TCP o UDP) aggiunge un proprio header ai dati. All'interno di questo header, i due campi più importanti sono la Porta Sorgente (Source Port) e la Porta Destinazione (Destination Port).

Una porta non è un cavo fisico o uno slot hardware, ma un numero intero a 16 bit, il che significa che i valori possibili vanno da 0 a 65.535. Il sistema operativo utilizza questo numero come un "interno telefonico". L'indirizzo IP identifica il centralino dell'azienda (la macchina), mentre la porta identifica la scrivania esatta del dipendente (il processo software). [tooltip]Lo IANA (Internet Assigned Numbers Authority) classifica le porte in tre categorie: Well-Known (0-1023) per servizi di sistema, Registered (1024-49151) per software noti, e Ephemeral (49152-65535) usate dai client per le connessioni in uscita.[/tooltip]

Multiplexing: incanalare il caos in un unico tubo

Il Multiplexing (Multiplazione) è l'operazione che avviene sul computer mittente. Pensa al tuo computer in questo momento: hai un browser con cinque schede aperte (che scaricano immagini e script), hai Spotify in riproduzione, un client email in background e forse una chat Discord attiva. Tutte queste applicazioni (processi) stanno generando dati simultaneamente e vogliono inviarli su Internet.

Il livello Trasporto prende i blocchi di dati (payload) da ciascuna di queste applicazioni. A ogni blocco, aggiunge l'header di Trasporto (creando un Segmento TCP o un Datagramma UDP) e vi stampa sopra il numero di Porta Destinazione (es. 443 per il sito HTTPS, 53 per una query DNS) e un numero di Porta Sorgente effimero, generato casualmente dal tuo sistema operativo (es. 50123).

Dopo aver etichettato tutti questi frammenti eterogenei, il livello Trasporto li "imbuta" tutti verso il Livello 3 (Rete)  . Il Livello di Rete prenderà questi segmenti, li chiuderà nei pacchetti IP (timbrandoli tutti con lo stesso identico IP Sorgente del tuo PC) e li invierà sull'unico cavo di rete a disposizione. Il livello Trasporto ha appena multiplexato decine di flussi software diversi in un singolo canale fisico hardware.

Demultiplexing: lo smistamento chirurgico in ricezione

Il Demultiplexing è il processo diametralmente opposto e avviene sul computer destinatario. Quando i pacchetti arrivano alla scheda di rete del destinatario, il Livello 3 rimuove l'header IP e passa il Segmento (o Datagramma) nudo al Livello 4. Il livello Trasporto legge l'header, individua la Porta Destinazione e consegna i dati esattamente al processo software in ascolto su quella porta  .

Tuttavia, c'è una profonda e critica differenza tecnologica tra come il protocollo UDP e il protocollo TCP gestiscono il demultiplexing:

Connectionless vs Connection-Oriented Demultiplexing:
- UDP (Connectionless): Il demultiplexing si basa SOLO su due fattori: l'IP di destinazione e la Porta di destinazione. Se due PC diversi mandano dati UDP alla porta 53 di un server, il server scarica tutti i dati in un unico grande calderone (una singola coda di ricezione del socket).
- TCP (Connection-Oriented): Il demultiplexing è spietatamente rigoroso e si basa su una 4-Tupla: (IP Sorgente, Porta Sorgente, IP Destinazione, Porta Destinazione). Se 1000 computer si collegano a un server Web sulla porta 80, il sistema operativo del server genera 1000 socket (thread) separati, usando le porte sorgenti dei client per non mischiare MAI i dati delle varie schede di rete.

Il Socket: l'API del programmatore

Nelle architetture moderne, l'unione indissolubile tra un Indirizzo IP e un Numero di Porta è definita Socket (es. 192.168.1.10:443). Il socket rappresenta il vero punto di contatto (Application Programming Interface, API) tra il mondo del networking e il mondo dello sviluppo software.

La prospettiva dello Sviluppatore: Quando un programmatore scrive in Python o in Java il codice per un nuovo web server, non deve preoccuparsi di come l'hardware calcoli il checksum Ethernet o di come i router smistino l'IP. Il programmatore scrive semplicemente una riga di codice come server.bind(('0.0.0.0', 80)). Con questo comando, l'applicazione prenota la porta 80 e avverte il kernel del sistema operativo: "Fai tu il demultiplexing. Ogni volta che ti arriva un pacchetto valido destinato alla porta 80, non lo scartare, ma inietta il suo payload direttamente in questa mia variabile software".

Sintesi applicativa e autoverifica

Il Livello 4 (Trasporto) agisce da vigile urbano tra il caos del software multitasking e la linearità del cavo di rete fisico. Grazie ai concetti di Multiplexing (in invio) e Demultiplexing (in ricezione), centinaia di applicazioni possono condividere pacificamente la stessa connessione Internet, ciascuna isolata nel proprio "tunnel" logico identificato dalla Porta e dal Socket.

Per testare la tua comprensione delle Porte Effimere e del Demultiplexing TCP (basato sulla 4-tupla), risolvi questo enigma architetturale: apri due schede separate del tuo browser (es. Chrome) e navighi con entrambe su www.google.com. Google risponde a entrambe le schede inviando pacchetti provenienti dal suo IP e dalla sua Porta 443 (Sorgente) e diretti al tuo IP pubblico (Destinazione). Quando i pacchetti di ritorno entrano nel tuo PC, come fa il sistema operativo a sapere quali dati HTML recapitare alla "Scheda 1" e quali alla "Scheda 2", visto che l'IP Sorgente e la Porta Sorgente di Google sono identici per entrambe?

Paragrafi letti

 

    
0%
       Salva

Esercizi su "1. Introduzione al livello Trasporto: multiplexing e demultiplexing"

0%

Statistics