Didattica

Didattica di Tutanum

Reti di calcolatori

La rete internet

Nella pagina sul collegamento dati abbiamo imparato a consegnare una busta integra alla macchina accanto, quella che condivide con noi lo stesso cavo oppure la stessa porzione d'aria, e abbiamo visto gli switch imparare da soli dove abitano le stazioni di una rete locale leggendo gli indirizzi fisici incisi nelle schede. Quel servizio, per quanto prezioso, si ferma alla porta di casa, perché un indirizzo fisico è un numero di serie privo di qualunque indicazione geografica, e uno switch che dovesse ricordare la posizione di ogni scheda del pianeta avrebbe bisogno di una tabella grande quanto il mondo, oltre a inondare tutti di trame ogni volta che cerca qualcuno di sconosciuto.

Questa pagina sale al piano successivo, il livello di rete, il cui compito consiste nel portare un pacchetto dalla macchina di partenza a quella di arrivo attraverso tutti i salti che servono, scegliendo a ogni incrocio la direzione giusta. È il primo livello che ragiona da capo a capo anziché da vicino a vicino, ed è anche quello in cui vive il protocollo che dà il nome a Internet, il protocollo IP, attorno al quale tutto il resto si è organizzato come un paese attorno alla sua strada principale.

Seguiamo ancora il libro Reti di calcolatori di Andrew S. Tanenbaum e David Wetherall, che dedica a questo piano il quinto capitolo, e conviene partire dall'immagine con cui il libro apre il discorso. Una grande rete è fatta di calcolatori specializzati chiamati router, collegati fra loro da linee di ogni genere, e ciascun router lavora secondo il principio del deposito e inoltro, cioè riceve un pacchetto per intero, lo tiene in memoria il tempo necessario a controllarlo e a decidere, e poi lo spedisce sulla linea che conduce verso la destinazione, come un ufficio postale di smistamento che riceve i sacchi, legge gli indirizzi e li carica sul furgone giusto.

Chi progetta un livello di rete deve scegliere fra due filosofie, e la scelta ha diviso per anni gli ingegneri dei telefoni da quelli dei calcolatori. Nella prima, detta a circuito virtuale, prima di spedire dati si apre un percorso attraverso i router, ciascuno dei quali annota nella propria memoria da dove arrivano e dove vanno i pacchetti di quella conversazione, e da quel momento tutti i pacchetti seguono la stessa strada portando con sé soltanto una breve etichetta; nella seconda, detta a datagrammi, ogni pacchetto porta scritto per intero l'indirizzo del destinatario e viene instradato per conto proprio, senza alcuna preparazione e senza che i router ricordino nulla, cosicché due pacchetti consecutivi possono prendere strade diverse e arrivare in ordine scambiato.

Internet ha scelto i datagrammi, e la ragione affonda nelle sue origini, quando si voleva una rete capace di continuare a funzionare anche perdendo all'improvviso alcuni dei propri nodi. Una rete in cui i router ricordano le conversazioni perde tutte quelle che passavano per un router guasto, mentre una rete di datagrammi si limita a deviare i pacchetti successivi lungo un'altra strada, e il prezzo di questa robustezza è un servizio che gli autori chiamano del miglior sforzo, in inglese best effort, nel quale la rete fa quanto può e nulla promette, lasciando che siano i calcolatori agli estremi a rimediare alle perdite.

A questo punto occorre distinguere due parole che il linguaggio comune confonde. L'inoltro, in inglese forwarding, è il gesto rapido e ripetitivo con cui un router, ricevuto un pacchetto, consulta una tabella e sceglie la linea di uscita, gesto che si compie milioni di volte al secondo; l'instradamento, in inglese routing, è il lavoro lento e riflessivo con cui quella tabella viene compilata e tenuta aggiornata, attraverso algoritmi che scoprono la forma della rete e calcolano le strade migliori. Il primo somiglia al vigile che all'incrocio indica la direzione, il secondo al geometra che ha disegnato la mappa da cui il vigile ha imparato.

Gli algoritmi di instradamento cercano di solito il cammino più breve, dove la brevità si misura in salti, in ritardo oppure in un costo assegnato dall'amministratore a ogni linea, e il metodo classico per trovarlo porta il nome di Edsger Dijkstra. Lo si può raccontare come una macchia d'olio che si allarga dal punto di partenza, perché a ogni passo si sceglie, fra i nodi già raggiunti e i loro vicini, quello più vicino all'origine, lo si dichiara definitivo e si aggiornano le distanze dei nodi che gli stanno attorno, proseguendo fino a coprire tutta la mappa; l'insieme dei cammini così trovati forma un albero che ha la radice nel punto di partenza e che dice, per ogni destinazione, quale vicino imboccare per primo.

Il primo modo di distribuire questo calcolo fra i router si chiama a vettore di distanza, e funziona come il passaparola in un paese. Ogni router tiene una tabella con la distanza che crede di avere da ciascuna destinazione e la comunica periodicamente ai soli vicini; ricevendo la tabella di un vicino, aggiunge il costo della linea che lo separa da lui e, se il totale risulta migliore di quanto sapeva, adotta quella strada. Il metodo è semplice e ha un difetto celebre, dato che le buone notizie corrono in fretta mentre le cattive viaggiano piano, e quando una destinazione scompare i router continuano per molti giri a rimandarsi l'un l'altro una strada ormai inesistente, alzando ogni volta la distanza di un'unità, fenomeno noto come conteggio all'infinito. Il protocollo storico di questa famiglia si chiama RIP, misura le distanze in salti e considera irraggiungibile tutto ciò che dista più di quindici, limite scelto proprio per troncare il conteggio, e si difende con l'accorgimento di tacere a un vicino le strade che passano attraverso quello stesso vicino; lo si incontra ancora nelle reti piccole, dove la sua semplicità vale più dei suoi difetti.

Il secondo modo, detto a stato dei collegamenti, sostituisce il passaparola con una mappa condivisa. Ogni router scopre i propri vicini, misura il costo delle linee che lo collegano a loro, scrive queste informazioni in un breve messaggio e lo fa arrivare a tutti i router della rete per inondazione, cioè chiedendo a ciascuno di ripeterlo su tutte le altre linee, con un numero progressivo che permette di scartare le copie già viste; quando tutti possiedono i messaggi di tutti, ciascuno ha davanti l'intera mappa e vi applica per conto proprio l'algoritmo di Dijkstra. Il metodo reagisce in fretta ai guasti e richiede più memoria e più calcolo, risorse che i router moderni hanno in abbondanza.

Finora abbiamo pensato a un pacchetto diretto a una sola macchina, e conviene sapere che esistono altre tre forme di consegna. La diffusione a tutti raggiunge ogni macchina di una rete, e resta confinata alla rete locale perché i router si rifiutano di propagarla; la consegna a un gruppo, in inglese multicast, raggiunge soltanto le macchine che si sono iscritte a un certo indirizzo collettivo, ed è il modo in cui si distribuisce una trasmissione televisiva a molti spettatori senza spedirne una copia a ciascuno; la consegna al più vicino, in inglese anycast, assegna lo stesso indirizzo a molte macchine sparse per il mondo e lascia che l'instradamento porti ogni pacchetto a quella più prossima, tecnica su cui si reggono i grandi servizi dei nomi che incontreremo fra due pagine.

Nessuno dei due metodi reggerebbe una rete di miliardi di macchine se ogni router dovesse conoscere ogni destinazione, e la soluzione è la stessa che usiamo per gli indirizzi postali, cioè la gerarchia. Un postino di Milano che riceve una lettera per un piccolo comune siciliano ha bisogno di sapere soltanto che deve mandarla verso la Sicilia, e saranno gli uffici dell'isola a conoscere i dettagli; allo stesso modo i router conoscono in dettaglio la propria regione e riassumono tutto il resto in poche voci, e Internet è divisa in decine di migliaia di regioni amministrative, chiamate sistemi autonomi, ciascuna gestita da un fornitore, da un'università o da una grande azienda.

Dentro un sistema autonomo l'instradamento è affare interno, e il protocollo più diffuso si chiama OSPF, appartiene alla famiglia a stato dei collegamenti e permette di suddividere le reti grandi in aree che si riassumono a vicenda. Fra un sistema autonomo e l'altro lavora invece un protocollo diverso, chiamato BGP, nel quale i router di confine si annunciano a vicenda quali blocchi di indirizzi sanno raggiungere e attraverso quale sequenza di sistemi autonomi, e la scelta delle strade obbedisce più agli accordi commerciali che alla distanza, dato che un fornitore preferisce far passare il traffico dove gli costa meno oppure dove viene pagato per trasportarlo. Poiché BGP si fida degli annunci dei vicini, un annuncio sbagliato può deviare per qualche ora il traffico di mezzo mondo verso un vicolo cieco, incidente accaduto più volte e utile a ricordare che la rete si regge su una fiducia reciproca fra operatori.

Accanto al problema di scegliere le strade sta quello di evitare gli ingorghi. Quando in un router arrivano più pacchetti di quanti la linea di uscita riesca a smaltire, essi si accodano in memoria, e se la coda si riempie i nuovi arrivati vengono scartati; la congestione ha la cattiva abitudine di alimentarsi da sola, perché i pacchetti scartati vengono ritrasmessi e aggiungono traffico a quello che già eccedeva. Il rimedio principale, lo vedremo, sta nel livello di trasporto, che rallenta quando si accorge delle perdite, mentre i router contribuiscono scartando qualche pacchetto in anticipo, prima che la coda trabocchi, oppure segnando i pacchetti con un bit che avverte i destinatari dell'ingorgo in arrivo. Per le applicazioni che esigono un ritmo regolare, come la voce e il video, esistono inoltre tecniche che modellano il traffico all'ingresso, e la più nota si descrive con un secchio in cui cadono gettoni a cadenza costante, dato che ogni pacchetto, per partire, deve prelevarne uno, cosicché una raffica improvvisa può consumare i gettoni accumulati e poi deve adeguarsi alla cadenza; i router più raffinati tengono code distinte per i diversi tipi di traffico e le servono a turno secondo pesi stabiliti, in modo che una telefonata proceda fluida anche mentre qualcuno, nella stanza accanto, scarica un archivio enorme.

Veniamo ora al protagonista, il protocollo IP, che nella sua quarta versione, quella che ancora trasporta gran parte del traffico, definisce un pacchetto formato da un'intestazione di almeno venti byte seguita dal carico, e leggere l'intestazione campo per campo equivale a capire come funziona la rete. I primi campi dichiarano la versione del protocollo, la lunghezza dell'intestazione e quella dell'intero pacchetto, che può arrivare a sessantacinquemila byte e più, insieme a un campo che permette di distinguere il traffico urgente da quello ordinario; seguono tre campi dedicati alla frammentazione, di cui parleremo fra poco, e poi un contatore chiamato tempo di vita, noto con la sigla TTL.

Il tempo di vita merita un momento di attenzione, perché è la difesa della rete contro i pacchetti che girano in tondo. Il mittente lo imposta a un valore come sessantaquattro, ogni router che il pacchetto attraversa lo diminuisce di uno, e il router che lo vede arrivare a zero distrugge il pacchetto e avverte il mittente, cosicché un errore nelle tabelle, capace di creare un anello fra tre router, produce soltanto un pacchetto che gira qualche decina di volte e poi scompare. Completano l'intestazione un campo che indica a quale protocollo del piano superiore consegnare il carico, una somma di controllo che protegge la sola intestazione e che ogni router ricalcola dopo aver toccato il tempo di vita, e infine i due indirizzi, quello del mittente e quello del destinatario, ciascuno di trentadue bit.

Un indirizzo IP di trentadue bit si scrive, per comodità degli occhi, come quattro numeri decimali separati da punti, ciascuno compreso fra zero e duecentocinquantacinque perché rappresenta un byte, e un esempio che hai già incontrato è 192.168.1.34. La proprietà fondamentale, quella che distingue un indirizzo IP da un indirizzo fisico, sta nel fatto che esso è gerarchico, con una prima parte che identifica la rete e una seconda che identifica la macchina dentro quella rete, proprio come un numero di telefono ha un prefisso che indica la città e un seguito che indica l'abbonato; va aggiunto che l'indirizzo appartiene all'interfaccia anziché alla macchina, sicché un router, che ha un piede in più reti, possiede un indirizzo per ogni piede.

Il confine fra la parte di rete e la parte di macchina è indicato dalla lunghezza del prefisso, che si scrive dopo l'indirizzo preceduta da una barra. La scrittura 192.168.1.0/24 dichiara che i primi ventiquattro bit, cioè i primi tre numeri, individuano la rete, e che gli otto bit restanti numerano le macchine; con otto bit si contano duecentocinquantasei valori, dei quali il primo, con tutti i bit a zero, designa la rete stessa, e l'ultimo, con tutti i bit a uno, serve per la diffusione a tutti, cosicché restano duecentocinquantaquattro indirizzi assegnabili. La stessa informazione si esprime anche con la maschera, un numero di trentadue bit che ha gli uno in corrispondenza della parte di rete e che per un prefisso di ventiquattro bit vale 255.255.255.0.

Proviamo insieme un calcolo, perché saper dividere una rete in sottoreti è un'abilità da artigiano che conviene possedere. Supponiamo di avere la rete 192.168.1.0/24 e di volerla dividere in quattro parti uguali, per separare i computer, i telefoni, gli apparecchi domestici e gli ospiti. Per distinguere quattro parti servono due bit, che prendiamo in prestito dalla parte di macchina portando il prefisso a ventisei; restano sei bit, cioè sessantaquattro indirizzi per sottorete, e le quattro sottoreti cominciano rispettivamente a 192.168.1.0, a 192.168.1.64, a 192.168.1.128 e a 192.168.1.192. Nella seconda, per esempio, l'indirizzo 192.168.1.64 designa la sottorete, 192.168.1.127 è riservato alla diffusione, e gli indirizzi dal 65 al 126 sono i sessantadue che puoi assegnare.

Il sistema dei prefissi di lunghezza libera, noto con la sigla CIDR, ha sostituito negli anni novanta una vecchia divisione rigida in tre classi che sprecava indirizzi a piene mani, e porta con sé un secondo vantaggio, quello dell'aggregazione. Un fornitore che possiede molti blocchi contigui può annunciarli al resto del mondo come un unico prefisso più corto, alleggerendo le tabelle di tutti, e quando un router trova nella propria tabella più voci che corrispondono alla stessa destinazione applica la regola del prefisso più lungo, cioè sceglie la voce più specifica, come chi fra le indicazioni per l'Italia, per la Toscana e per Firenze segue quella per Firenze.

Possiamo ora seguire un pacchetto che parte dalla tua scrivania, e scopriamo che quando il tuo calcolatore vuole spedire qualcosa, confronta l'indirizzo di destinazione con il proprio prefisso; se la destinazione appartiene alla stessa rete, la consegna è diretta, altrimenti il pacchetto va affidato al router di casa, indicato nella configurazione come passerella predefinita, in inglese default gateway. In entrambi i casi il pacchetto deve viaggiare dentro una trama, e la trama richiede un indirizzo fisico, che il calcolatore si procura con il protocollo ARP, mandando a tutta la rete locale una domanda che suona come una voce in cortile, chi possiede questo indirizzo IP, alla quale il diretto interessato risponde con il proprio indirizzo fisico, conservato poi per qualche minuto nella tabella dei vicini che hai consultato nella pagina precedente.

Resta da capire come una macchina ottenga il proprio indirizzo, e la risposta è il protocollo DHCP, che abbiamo già visto all'opera nella pagina d'insieme. Un apparecchio appena collegato, privo di qualunque indirizzo, lancia una richiesta a tutta la rete locale, e un servizio, che nelle case abita dentro il router, gli offre in prestito un indirizzo libero insieme alla maschera, all'indirizzo della passerella e a quello dei servizi che traducono i nomi; il prestito ha una durata e va rinnovato, cosicché gli indirizzi degli apparecchi che se ne vanno tornano disponibili per i nuovi arrivati.

Torniamo ai campi della frammentazione, la cui ragione sta nel fatto che ogni tecnologia di collegamento impone un limite alla dimensione del carico di una trama, e per Ethernet esso vale millecinquecento byte; quando un pacchetto incontra lungo il cammino una linea con un limite più basso della propria dimensione, il protocollo originario prevedeva che il router lo spezzasse in frammenti, ciascuno con la propria intestazione, un identificatore comune e la posizione del frammento nell'originale, lasciando al destinatario il compito di ricomporli. Poiché questo lavoro rallenta i router e la perdita di un solo frammento rende inutili tutti gli altri, oggi si preferisce che sia il mittente a scoprire in anticipo la dimensione massima ammessa lungo l'intero percorso, spedendo pacchetti con il divieto di frammentare e riducendoli quando un router risponde che sono troppo grandi. Quando poi due reti dello stesso tipo sono separate da una rete diversa, si ricorre alla galleria, in inglese tunnel, che consiste nell'infilare il pacchetto intero, intestazione compresa, dentro il carico di un altro pacchetto indirizzato all'uscita della galleria, dove viene estratto e riprende il viaggio come se nulla fosse accaduto; è un'idea che ritroverai ovunque, nelle reti private virtuali, nella convivenza fra le due versioni del protocollo e negli strati a cipolla con cui Tor avvolge i propri messaggi.

I messaggi con cui i router rispondono appartengono a un protocollo di servizio chiamato ICMP, che viaggia dentro i pacchetti IP e serve alla rete per parlare di se stessa. Vi appartengono l'avviso di destinazione irraggiungibile, l'avviso di tempo di vita esaurito e la coppia formata dalla richiesta e dalla risposta di eco, su cui si basa il comando ping. Il comando traceroute sfrutta con ingegno il tempo di vita, perché spedisce un primo pacchetto con il contatore a uno, che muore al primo router e ne provoca l'avviso, poi uno con il contatore a due, che muore al secondo, e così via, ricavando dagli avvisi l'elenco dei router attraversati.

I trentadue bit degli indirizzi permettono poco più di quattro miliardi di combinazioni, quantità che negli anni settanta pareva sterminata e che la diffusione dei calcolatori personali, e poi dei telefoni, ha esaurito. Il rimedio che ha tenuto in piedi la rete per vent'anni si chiama traduzione degli indirizzi, in sigla NAT, e si basa su tre blocchi di indirizzi dichiarati privati, cioè liberamente utilizzabili dentro qualunque rete domestica o aziendale e vietati sulla rete pubblica, dei quali il più familiare comincia con 192.168 e gli altri due cominciano con 10 e con 172.16.

Il funzionamento del NAT si capisce seguendo un pacchetto che esce di casa. Il tuo calcolatore, che ha un indirizzo privato, spedisce un pacchetto verso un sito, e il router, prima di inoltrarlo, sostituisce l'indirizzo privato del mittente con il proprio unico indirizzo pubblico e cambia anche il numero di porta, un numero del livello di trasporto che identifica la conversazione, annotando la corrispondenza in una tabella; quando arriva la risposta, indirizzata all'indirizzo pubblico e a quella porta, il router consulta la tabella, ripristina l'indirizzo e la porta originali e consegna il pacchetto all'apparecchio giusto. Un'intera casa si presenta così al mondo con un solo indirizzo, come un condominio con un unico numero civico in cui il portiere smista la posta leggendo l'interno.

Questo espediente ha conseguenze che conviene conoscere, soprattutto per chi, come i lettori di Tutanum, desidera ospitare servizi in casa. La tabella del router nasce soltanto dai pacchetti in uscita, e un pacchetto che arriva dall'esterno senza che nessuno dall'interno abbia cominciato la conversazione trova la tabella vuota e viene scartato, cosa che protegge gli apparecchi domestici e allo stesso tempo impedisce di raggiungere un servizio casalingo, a meno di istruire il router con una regola fissa, detta inoltro di porta, che assegna una certa porta pubblica a un certo apparecchio interno. Molti fornitori, a corto di indirizzi, applicano inoltre un secondo strato di traduzione nella propria rete, e chi si trova dietro questo doppio strato perde anche la possibilità dell'inoltro di porta, ragione in più per apprezzare le reti che, come Tor e I2P, permettono di offrire servizi senza possedere un indirizzo pubblico.

La soluzione definitiva alla scarsità è la sesta versione del protocollo, IPv6, che porta gli indirizzi a centoventotto bit, quantità sufficiente ad assegnare un indirizzo a ogni granello di sabbia del pianeta e ad averne ancora in abbondanza. Un indirizzo di questa versione si scrive come otto gruppi di quattro cifre esadecimali separati dal segno dei due punti, con la licenza di omettere gli zeri iniziali e di contrarre una sequenza di gruppi nulli, e di norma la prima metà identifica la rete e la seconda l'interfaccia, cosicché ogni casa riceve dal fornitore un prefisso che contiene più indirizzi dell'intera Internet attuale.

La nuova versione ha colto l'occasione per semplificare, dato che l'intestazione ha lunghezza fissa di quaranta byte e pochi campi, la somma di controllo è scomparsa perché i piani vicini già ne possiedono una, la frammentazione è stata tolta ai router e lasciata al solo mittente, e le funzioni facoltative sono state spostate in intestazioni aggiuntive che i router possono ignorare; un apparecchio è inoltre in grado di comporre da solo il proprio indirizzo, unendo il prefisso annunciato dal router a un identificatore scelto localmente. Poiché le due versioni sono incompatibili, la transizione procede da oltre vent'anni con macchine che parlano entrambe le lingue e con gallerie che trasportano i pacchetti dell'una dentro quelli dell'altra, e nell'attesa il NAT continua a fare il proprio mestiere.

Il senso d'insieme di questo piano si riassume in poche righe. Gli indirizzi gerarchici trasformano la rete in una geografia, i protocolli di instradamento disegnano le mappe, i router applicano a ogni pacchetto la regola del prefisso più lungo, e il tutto offre ai piani superiori un servizio onesto e senza garanzie, nel quale un pacchetto può perdersi, arrivare doppio oppure in ordine scambiato. Chi ha compreso questo meccanismo sa leggere la configurazione di qualunque apparecchio di rete, sa progettare gli indirizzi di una casa o di un laboratorio e capisce perché certi servizi si raggiungono e altri restano irraggiungibili.

Veniamo alla pratica, che in questa pagina è particolarmente ricca. Per il primo esperimento apri un terminale e scrivi ip addr, cerca la riga che comincia con la parola inet sotto l'interfaccia attiva e leggi il tuo indirizzo seguito dalla barra e dalla lunghezza del prefisso; con questi due dati calcola su un foglio l'indirizzo della rete, quello di diffusione e il numero di macchine che la rete può ospitare, poi verifica che l'indirizzo del router, quello che scrivi nel browser per amministrarlo, cada nello stesso intervallo.

Per il secondo esperimento chiedi la tabella di instradamento con ip route. Vedrai poche righe, e fra esse una che comincia con la parola default e indica la passerella a cui affidare tutto ciò che esce dalla rete locale, e un'altra che riporta il prefisso della tua rete e dichiara che quelle destinazioni si raggiungono direttamente; prova poi ip route get 1.1.1.1 e ip route get seguito dall'indirizzo di un apparecchio di casa, e osserva come il sistema scelga nel primo caso la passerella e nel secondo la consegna diretta, applicando sotto i tuoi occhi la regola del prefisso più lungo.

Per il terzo esperimento esercitati con le sottoreti su carta, che è il modo migliore per farle diventare familiari. Prendi la rete 10.0.0.0/24, la stessa che le guide di Tutanum usano per le celle dei servizi, e dividila in otto sottoreti uguali, scrivendo per ciascuna il prefisso, il primo e l'ultimo indirizzo assegnabile e l'indirizzo di diffusione; se il sistema offre il programma ipcalc, usalo soltanto alla fine per controllare i tuoi risultati, e ripeti l'esercizio partendo da un prefisso di ventidue bit, dove il confine cade a metà del terzo numero.

Per il quarto esperimento segui la strada dei tuoi pacchetti con traceroute seguito dal nome di un sito lontano, oppure con tracepath se il primo manca. Ogni riga è un router, il primo è quello di casa, i successivi appartengono al tuo fornitore e poi ad altri operatori, e i tempi indicati accanto crescono a balzi quando il percorso attraversa un oceano; ripeti la prova verso tre destinazioni in continenti diversi e annota dove le strade si separano, perché quel punto è con buona probabilità il confine fra il sistema autonomo del tuo fornitore e il resto del mondo.

Per il quinto esperimento gioca con il tempo di vita. Scrivi ping -c 1 -t 1 seguito da un indirizzo esterno, e al posto della risposta riceverai dal router di casa l'avviso di tempo esaurito; aumenta il valore dopo -t di un'unità alla volta e vedrai rispondere ogni volta il router successivo, ricostruendo a mano ciò che traceroute fa in automatico. Nelle risposte ordinarie di ping osserva inoltre il valore indicato come ttl, che sottratto dal valore di partenza più vicino, di solito sessantaquattro, centoventotto oppure duecentocinquantacinque, ti dice quanti router separano te dalla destinazione.

Per il sesto esperimento confronta l'indirizzo che il tuo calcolatore crede di avere con quello che il mondo vede. Annota l'indirizzo privato mostrato da ip addr, poi visita con il browser uno dei tanti siti che mostrano l'indirizzo da cui arriva la richiesta, e noterai che i due numeri differiscono, prova tangibile del NAT al lavoro; apri quindi la pagina di amministrazione del router e cerca la voce che riporta l'indirizzo assegnato dal fornitore, e se questo comincia con 100.64 oppure differisce a sua volta da quello mostrato dal sito, ti trovi dietro il doppio strato di traduzione di cui abbiamo parlato.

Per il settimo e ultimo esperimento scopri se la tua casa parla già la nuova lingua. Scrivi ip -6 addr e guarda se, oltre all'indirizzo che comincia con fe80 e che vale soltanto sul collegamento locale, ne compare uno che comincia con la cifra due, segno che il fornitore ti ha assegnato un prefisso pubblico; in tal caso prova ping -6 verso un sito noto e confronta i tempi con quelli della vecchia versione, riflettendo sul fatto che con quell'indirizzo il tuo calcolatore è raggiungibile direttamente, senza traduzioni, e che la protezione spetta quindi per intero al firewall. Se invece trovi soltanto l'indirizzo locale, prova comunque ping -6 verso l'indirizzo locale di un altro apparecchio di casa, aggiungendo il nome dell'interfaccia come indicato dal manuale del comando, e scoprirai che la nuova versione funziona già fra le tue mura senza che nessuno l'abbia mai configurata.

Il modulo attinge al libro Reti di calcolatori di Andrew S. Tanenbaum e David Wetherall, e in particolare al capitolo quinto sul livello di rete, da cui provengono il confronto fra circuiti virtuali e datagrammi, gli algoritmi di instradamento a vettore di distanza e a stato dei collegamenti, l'instradamento gerarchico, il controllo della congestione, il protocollo IP nelle versioni quarta e sesta con gli indirizzi, i prefissi e la traduzione degli indirizzi, i protocolli di servizio ICMP, ARP e DHCP e i protocolli OSPF e BGP.

Ora che i pacchetti sanno trovare la strada fino a una macchina qualunque del pianeta, resta un ultimo tratto, breve e decisivo, quello che va dalla macchina al programma giusto fra i tanti che vi girano, insieme al problema di trasformare un servizio che perde, duplica e rimescola in una conversazione ordinata e completa. Di questo si occupa il livello di trasporto, con i suoi due protocolli dal carattere opposto, e ti invitiamo a proseguire verso la pagina dedicata al trasporto, dove le porte, le strette di mano e le finestre scorrevoli completano il viaggio da capo a capo.