Viaggio nel TCP/IP

Scrivi un messaggio e guardalo attraversare la rete. A ogni livello qualcuno gli mette attorno una busta con l'indirizzo che gli serve; dall'altra parte le buste si aprono una alla volta, in ordine inverso, e il messaggio esce identico a com'era partito.

Come funziona

Cos'è

Quando due computer si parlano non c'è un solo programma che fa tutto: il lavoro è diviso in quattro livelli sovrapposti, e ognuno sa fare una cosa sola e la fa bene. Questo schema si chiama TCP/IP, dal nome dei suoi due protocolli più importanti, ed è quello su cui gira tutta Internet.

Il messaggio parte dall'alto e scende: ogni livello gli aggiunge davanti un'intestazione con le informazioni che servono a lui. È come infilare una lettera in una busta, quella busta in un'altra, e così via. All'arrivo si aprono in ordine inverso — questo andare e venire si chiama incapsulamento e decapsulamento.

I quattro livelli

Livello Di cosa si occupa Cosa aggiunge Come si chiama il risultato
Applicazione Il contenuto vero: pagine web, mail, messaggi Niente, è il messaggio Dati
Trasporto A quale programma consegnare, e che niente vada perso Porte e numero di sequenza (TCP) Segmento
Rete Trovare la strada fino all'altro computer, ovunque sia Indirizzi IP e TTL Pacchetto
Collegamento Passare il testimone al prossimo apparato del cavo Indirizzi MAC e codice di controllo Frame

Quando si usa

Le domande che vengono sempre

Ma un cavo cosa ci passa, di preciso? Numeri, e niente altro. Prima di scendere di livello ogni carattere diventa un codice, e ogni codice si scrive con otto bit: la tabella che li lega si chiama ASCII per i primi 128 — lettere inglesi, cifre, punteggiatura — e UTF-8 per tutto il resto del mondo. In UTF-8 una lettera accentata prende due byte: à non è 224, è 195 160. Provalo al passo 2 scrivendo una parola con l'accento: la riga diventa lunga il doppio.

È la ragione per cui conviene contare i byte e non le lettere. Ed è anche il motivo per cui sulla rete può viaggiare qualsiasi cosa — un testo, una foto, una canzone: sotto il livello Applicazione nessuno sa più che erano parole, e a nessuno serve saperlo.

E se il messaggio è lungo? Non ci sta in una busta sola, e TCP lo taglia in segmenti. Ognuno si porta un numero di sequenza, che dice da che punto del flusso comincia: serve perché i segmenti possono prendere strade diverse, sorpassarsi e arrivare in disordine, e all'altro capo TCP li rimette in fila prima di consegnarli al programma.

Al passo 3 lo strumento fa il taglio davvero, ma con un limite finto: 8 byte invece dei circa 1460 veri, altrimenti non si spezzerebbe mai niente e non si vedrebbe. Scrivi Ciao! e resta un segmento solo; scrivi una frase e si spezza, e da lì in poi il viaggio segue il primo — gli altri fanno la stessa strada. Al passo 14 si vedono rimessi in fila.

Una precisazione onesta: TCP taglia un flusso di byte, quindi una lettera accentata può finire mezza in un segmento e mezza nel successivo. Qui il taglio cade sempre fra un carattere e l'altro, perché mezza lettera sullo schermo non si può disegnare.

Perché servono sia l'IP sia il MAC? Fanno due cose diverse. L'IP dice dove sta il destinatario nel mondo, e non cambia per tutto il viaggio. Il MAC dice a quale scheda di rete passare il frame nel prossimo tratto, e cambia a ogni salto. È la differenza fra l'indirizzo scritto sulla lettera e la persona a cui la porgi adesso in mano.

Non serve crederci sulla parola: ai passi 8, 9 e 10 lo strumento mostra i tre salti uno per uno, con la busta Ethernet barrata in rosso e rifatta ogni volta e il pacchetto IP evidenziato in verde sempre uguale. Guarda anche il TTL, l'unica cosa dentro l'IP che i router toccano: 64, poi 63, poi 62.

C'è un dettaglio che quasi tutti sbagliano: già il primo frame, quello che esce dal tuo computer, non è indirizzato al server — è indirizzato al router di casa tua. Il tuo computer non sa come si arriva dall'altra parte del mondo; sa solo a chi passare la busta per il primo tratto.

Perché le porte? Sul tuo computer ci sono decine di programmi che usano la rete insieme. L'IP arriva al computer giusto; la porta dice a quale programma consegnare. La 80 e la 443 sono il web, la 25 la posta in uscita, la 53 il DNS.

Anche questo si guarda: al passo 13 compaiono i cinque programmi in ascolto sul server, tutti sullo stesso indirizzo IP. La porta 80 fa accendere il server web e lascia al buio gli altri quattro, che di quel messaggio non vedono niente.

Come fa a sapere dove mandarlo? È la domanda che arriva subito dopo, e la risposta non è un'intuizione: è un conto. Nessuno «cerca» la strada e nessuno decide di non tornare indietro — si legge una tabella, riga per riga.

Ogni riga della tabella di instradamento ha una rete e una maschera. La maschera dice dove finisce il quartiere e comincia il numero civico: 255 vuol dire «questi otto bit contano», 0 vuol dire «questi non guardarli». Si mette l'indirizzo di destinazione in AND con la maschera — l'AND tiene i bit dove la maschera ha 1 e azzera quelli dove ha 0 — e quello che resta è la rete a cui quell'indirizzo appartiene.

La domanda «è nella mia rete?» diventa così un'uguaglianza fra due numeri, cioè una cosa che una macchina sa decidere:

(IP mio AND maschera) = (IP suo AND maschera)

Se è vera, il destinatario è sulla stessa LAN e si consegna diretto. Se è falsa è fuori, e vale la rotta predefinita (0.0.0.0/0): la maschera tutta zeri combacia con qualunque indirizzo, quindi è l'ultima spiaggia — quella che vince solo se non ha vinto nessun'altra. Quando ne combaciano più d'una vince la più precisa, cioè quella con più 1 nella maschera.

Il passo 5 fa vedere questo conto in binario sul tuo computer, con i bit del quartiere in verde e quelli del civico in giallo; ai passi 8 e 9 lo rifanno i due router con la loro tabella, e al 9 si vede il caso in cui due righe combaciano e vince la più stretta.

Ecco anche perché il pacchetto non torna mai indietro al computer di casa: non c'è nessuna riga che lo dica. Non è una possibilità scartata, è una possibilità che non è scritta. E se una tabella sbagliata facesse rimpallare un pacchetto fra due router, a fermarlo ci penserebbe il TTL.

Ma chi riempie la tabella del provider?

Il router di casa ha due righe soltanto — la mia rete, e «tutto il resto al provider». Ma il router del provider deve conoscere la strada verso qualunque rete al mondo: la sua tabella ha quasi un milione di righe. Nessuno le scrive a mano, e nessuno cerca il server ogni volta.

La tabella si riempie da sola perché i router se lo dicono fra loro. Ognuno annuncia ai vicini «io so raggiungere queste reti»; il vicino gira l'annuncio ai suoi vicini, e la voce si propaga di router in router per tutto il pianeta. Chi possiede la rete del server (93.184.216.0/24) annuncia «ce l'ho io», e prima o poi l'annuncio arriva anche al router del tuo provider, che segna in tabella «per quella rete, vai di qua». Il protocollo con cui si scambiano questi annunci si chiama BGP.

Per non annegare, Internet è divisa in grandi blocchi — i Sistemi Autonomi, uno per ogni operatore o grande azienda. I router di dorsale non ragionano sul singolo computer, ma su questi blocchi: «quel pezzo di Internet sta da quella parte». È lo stesso quartiere di prima, ma un piano più su.

La cosa importante è che nessun router conosce la strada intera: ognuno conosce solo il salto dopo, esattamente come il router di casa. È la posta: l'ufficio del tuo paese non sa dov'è la casa del destinatario, sa solo «la posta per quella regione va a quel centro di smistamento». Ogni centro la passa a uno più vicino, finché l'ultimo conosce la via davvero. E quando il pacchetto entra nella rete che possiede l'indirizzo del server, l'ultimo router fa la stessa domanda del tuo router di casa — ARP, «chi di voi ha questo IP?» — trova il MAC del server e glielo consegna in mano.

I casi limite

Le parole

Protocollo
le regole che due macchine si sono messe d'accordo di seguire per capirsi. TCP e IP sono due protocolli.
Intestazione (header)
le informazioni che un livello mette davanti ai dati. Non è il messaggio: è la busta.
Incapsulamento
il mettere buste attorno ai dati scendendo di livello. Il contrario, all'arrivo, è il decapsulamento.
Indirizzo IP
identifica un computer nella rete. Resta lo stesso per tutto il viaggio.
Indirizzo MAC
identifica una scheda di rete. Vale solo per il tratto di cavo che si sta percorrendo e cambia a ogni salto.
Porta
un numero che dice a quale programma, dentro quel computer, va consegnato il messaggio.
ASCII e UTF-8
le tabelle che legano un carattere a un numero. ASCII copre i primi 128 codici con un byte; UTF-8 copre tutto il resto usando più byte per carattere. Per questo lettere e byte non sono la stessa cosa.
Segmento e numero di sequenza
il pezzo in cui TCP taglia un messaggio lungo, e il numero che dice da che punto del flusso comincia. Senza quel numero, dei pezzi arrivati in disordine non si saprebbe cosa fare.
Maschera di rete
dice quanti bit iniziali dell'indirizzo sono «la rete» e quanti restano per la singola macchina. In AND con un indirizzo lascia la rete e azzera il resto. /24 è la forma corta di 255.255.255.0: 24 bit a 1.
Tabella di instradamento
l'elenco di righe «questa rete → passala a questo». È tutto quello che un router sa: nessuno conosce la strada intera, solo il prossimo passo.
Rotta predefinita
la riga 0.0.0.0/0, che combacia con qualunque indirizzo. Vale quando non ha combaciato nient'altro: «non so dov'è, passalo a chi ne sa più di me».
ARP
la domanda che si fa sulla rete locale per passare da un indirizzo IP al MAC di chi ce l'ha: «chi di voi è 192.168.1.1?». Serve subito dopo che la tabella ha detto a quale IP consegnare.
BGP
il modo in cui i router di tutto il mondo si dicono fra loro quali reti sanno raggiungere. È così che la tabella del provider si riempie da sola, senza che nessuno la scriva a mano.
Sistema Autonomo
un grande blocco di Internet — un operatore, una grande azienda — con un suo numero. I router di dorsale ragionano su questi blocchi, non sul singolo computer: è il «quartiere», un piano più su.
Frame, pacchetto, segmento
lo stesso messaggio con un numero diverso di buste attorno. Il nome dice a che livello lo stai guardando.
💎 Tutoring Premium

Le reti si capiscono guardandole funzionare

Quattro livelli imparati a memoria non servono a niente; visti in azione non si dimenticano più. Percorsi personalizzati di Informatica con un docente di ruolo.

Prenota il colloquio gratuito Senza impegno · Posti limitati