Applicazioni e web
Nella pagina dedicata al trasporto abbiamo completato il viaggio dei dati da capo a capo, imparando come le porte conducano ogni segmento fino al programma giusto, come TCP costruisca un flusso affidabile sopra una rete che perde e rimescola, e come le prese offrano a chi programma un'interfaccia tanto semplice da somigliare alla lettura e alla scrittura di un file. Tutto ciò che abbiamo costruito finora, dai segnali sul rame alle finestre scorrevoli, è però un'impalcatura, e nessuno ha mai acceso un calcolatore per il piacere di aprire una connessione; le persone vogliono leggere una pagina, spedire una lettera, guardare un filmato, ed è per questi scopi che l'impalcatura esiste.
Questa pagina sale dunque all'ultimo piano della pila, il livello delle applicazioni, dove abitano i protocolli con cui i programmi si parlano per rendere un servizio a chi sta davanti allo schermo. Seguiremo il settimo capitolo del libro Reti di calcolatori di Andrew S. Tanenbaum e David Wetherall, che sceglie di cominciare da un servizio che l'utente non vede quasi mai e da cui dipendono tutti gli altri, cioè la traduzione dei nomi in indirizzi, per passare poi alla posta elettronica, al web, ai flussi di suoni e immagini e infine alle reti in cui i calcolatori degli utenti si servono a vicenda.
I router, come sappiamo, lavorano con indirizzi numerici, mentre le persone ricordano i nomi con molta più facilità dei numeri, e inoltre un servizio può cambiare macchina, e quindi indirizzo, conservando lo stesso nome. Ai tempi di ARPANET la corrispondenza fra nomi e indirizzi stava in un unico archivio di testo, che ogni notte tutte le macchine copiavano da un calcolatore centrale, soluzione che divenne impraticabile appena le macchine passarono da qualche centinaio a molte migliaia; nel 1983 nacque così il sistema dei nomi di dominio, che tutti chiamano DNS, una base di dati distribuita su milioni di macchine e organizzata come un albero.
In cima all'albero sta la radice, che per convenzione non ha nome, e sotto di essa stanno i domini di primo livello, alcuni generici come com, org e net, altri assegnati ai paesi come it per l'Italia e de per la Germania. Sotto ciascuno di essi stanno i domini registrati da aziende, enti e privati, e ogni titolare è libero di creare a sua volta tutti i rami che desidera, cosicché un nome completo si legge da destra verso sinistra come un indirizzo postale scritto dal generale al particolare, con il dominio di primo livello in fondo e la singola macchina all'inizio. L'assegnazione dei nomi nei domini di primo livello è affidata a organizzazioni chiamate registri, coordinate da un ente internazionale, e chi desidera un nome lo prende in affitto, di solito per un anno alla volta, tramite un intermediario.
L'albero è suddiviso in zone, porzioni amministrate ciascuna da un responsabile, e ogni zona è servita da due o più macchine dette servitori dei nomi autorevoli, che ne conservano i dati e rispondono alle domande che la riguardano. Il trucco che rende scalabile l'intero sistema si chiama delega, e consiste nel fatto che il servitore di una zona, anziché conoscere tutto ciò che sta sotto di essa, sa soltanto indicare quali servitori sono responsabili di ciascun ramo; i servitori della radice conoscono quelli di ogni dominio di primo livello, questi conoscono quelli di ogni dominio registrato, e così via, in una catena di rinvii simile a quella degli uffici che ti indirizzano ogni volta allo sportello competente. I servitori della radice portano tredici nomi, dalla lettera a alla lettera m, e dietro ciascun nome stanno in realtà centinaia di macchine sparse per il mondo che condividono lo stesso indirizzo, cosicché ogni domanda raggiunge la copia più vicina e il guasto di una sede passa inosservato.
Ciò che i servitori conservano sono piccole schede chiamate record di risorsa, ciascuna con un nome, un tipo, un valore e un tempo di validità. Il tipo più comune, indicato con la lettera A, associa a un nome un indirizzo IP della quarta versione, e il tipo AAAA fa lo stesso per la sesta; il tipo MX indica quale macchina riceve la posta destinata a un dominio, il tipo NS dichiara quali sono i servitori autorevoli di una zona, il tipo CNAME stabilisce che un nome è soltanto un sinonimo di un altro, il tipo TXT contiene testo libero usato per mille scopi, e il tipo PTR, che vive in un ramo speciale dell'albero, permette il percorso inverso, dall'indirizzo al nome.
Seguiamo ora una domanda dal principio alla fine, osservando che quando scrivi un nome nel browser,
il tuo calcolatore si rivolge a un servitore detto risolutore ricorsivo, il cui indirizzo ha ricevuto
dal router insieme al proprio, e gli chiede l'indirizzo corrispondente; il risolutore, se non conosce
già la risposta, interroga un servitore della radice, che gli indica i servitori del dominio di primo
livello, interroga uno di questi, che gli indica i servitori del dominio registrato, e interroga infine
uno di questi ultimi, che fornisce la risposta definitiva. Il tuo calcolatore ha rivolto una sola
domanda e ha ricevuto una sola risposta, mentre il risolutore ha percorso per lui l'intera catena, e
tutto si svolge di norma in poche decine di millisecondi, su UDP e sulla porta cinquantatré. Prima
ancora di rivolgersi al risolutore, il sistema consulta un piccolo archivio locale,
/etc/hosts, erede diretto di quello di ARPANET, nel quale chiunque amministri la macchina
può scrivere a mano corrispondenze fra nomi e indirizzi che avranno la precedenza su tutto il resto,
mentre l'indirizzo del risolutore da interrogare sta in un secondo archivio,
/etc/resolv.conf, compilato di norma dal servizio DHCP nel momento in cui la macchina
riceve in prestito il proprio indirizzo, la maschera e la passerella.
Se ogni domanda dovesse ripartire dalla radice, il sistema crollerebbe sotto il proprio peso, e a salvarlo provvede la memoria temporanea, in inglese cache. Ogni record porta con sé un tempo di vita, espresso in secondi e deciso dal titolare della zona, durante il quale chiunque lo abbia ricevuto può conservarlo e riutilizzarlo senza chiedere di nuovo; il risolutore ricorda così per ore gli indirizzi dei servitori dei domini più frequentati, e nella pratica la radice viene disturbata di rado. Il rovescio della medaglia si vede quando un servizio cambia indirizzo, perché la novità si propaga soltanto man mano che le vecchie copie scadono, e chi amministra un dominio abbassa il tempo di vita qualche giorno prima di un trasloco proprio per rendere breve questa attesa.
Il DNS è nato in un'epoca di fiducia reciproca, e porta i segni di quell'ingenuità. Le domande e le risposte viaggiano in chiaro, cosicché chiunque stia lungo il percorso, a cominciare dal fornitore di accesso, può leggere quali nomi vengono cercati e ricostruire le abitudini di una casa, e una risposta falsa, fatta arrivare prima di quella vera, può dirottare un utente verso una macchina sbagliata. Ai due problemi rispondono due famiglie di rimedi, la prima delle quali, chiamata DNSSEC, aggiunge ai record una firma digitale che permette di verificarne l'autenticità lungo tutta la catena delle deleghe, mentre la seconda cifra il colloquio fra il calcolatore e il risolutore, incapsulandolo in una connessione protetta, ed è la strada che Tutanum percorre nelle proprie guide con il programma dnscrypt-proxy.
Veniamo alla posta elettronica, che è più antica del web di vent'anni e che conserva nell'architettura la somiglianza con la posta di carta da cui prende il nome. I personaggi sono due, e il primo è il programma con cui l'utente scrive e legge i messaggi, chiamato agente utente, che può essere un'applicazione installata oppure una pagina web; il secondo è il programma che trasporta i messaggi da un servitore all'altro, chiamato agente di trasferimento, che gira senza sosta sui servitori di posta e svolge il mestiere dell'ufficio postale. Fra i due sta la casella, lo spazio sul servitore in cui i messaggi in arrivo attendono che il destinatario venga a prenderli.
Un messaggio è fatto, come una lettera, di una busta, usata dagli agenti di trasferimento per il recapito, e di un contenuto, a sua volta diviso in intestazione e corpo. L'intestazione è una serie di righe che cominciano ciascuna con una parola chiave, e dichiarano il mittente, il destinatario, la data, l'oggetto e un identificatore unico, a cui ogni servitore attraversato aggiunge in cima una riga che registra il passaggio, cosicché leggendo dal basso verso l'alto si ricostruisce l'intero itinerario del messaggio. Il formato originario prevedeva soltanto testo in caratteri inglesi, e per trasportare lettere accentate, immagini e allegati fu aggiunta l'estensione chiamata MIME, che dichiara il tipo di ogni parte del messaggio e codifica i dati binari in sequenze di caratteri innocui, gonfiandoli di un terzo.
Il trasferimento avviene con il protocollo SMTP, un dialogo in testo leggibile, a domanda e risposta, fra il servitore che consegna e quello che riceve. Chi consegna si presenta con il proprio nome, dichiara il mittente della busta, poi il destinatario, e ricevuto l'assenso invia il messaggio concludendolo con una riga che contiene soltanto un punto; chi riceve risponde a ogni passo con un codice numerico di tre cifre seguito da una spiegazione, dove i codici che cominciano con due indicano il successo e quelli che cominciano con cinque un rifiuto definitivo. Per sapere a quale macchina consegnare, il servitore mittente chiede al DNS il record MX del dominio che compare dopo la chiocciola nell'indirizzo del destinatario.
Il protocollo originario non verificava in alcun modo l'identità di chi scriveva, e chiunque poteva dichiararsi chiunque, debolezza da cui è nata la piaga dei messaggi indesiderati e delle truffe. I rimedi sono stati aggiunti a strati, e oggi il programma dell'utente consegna i messaggi al proprio servitore su una porta dedicata, dopo essersi autenticato e dentro una connessione cifrata, mentre i domini pubblicano nel DNS, in record di tipo TXT, l'elenco delle macchine autorizzate a spedire a loro nome e la chiave con cui verificare la firma apposta ai messaggi in partenza, cosicché il servitore ricevente può scartare ciò che arriva da un impostore. Queste difese hanno un effetto collaterale che conviene conoscere prima di cimentarsi, dato che i grandi fornitori accolgono con sospetto la posta proveniente da macchine sconosciute, e chi ospita in casa il proprio servitore deve curare con pazienza i record, la firma e la reputazione del proprio indirizzo perché i messaggi vengano recapitati anziché finire fra gli indesiderati.
L'ultimo tratto, dalla casella all'utente, usa protocolli diversi, dato che il calcolatore dell'utente non è sempre acceso e non può quindi ricevere direttamente. Il più antico, chiamato POP3, scarica i messaggi sul calcolatore e di solito li cancella dal servitore, come chi svuota la cassetta delle lettere; il più moderno, chiamato IMAP, lascia i messaggi sul servitore, organizzati in cartelle, e permette a più apparecchi di consultarli vedendo tutti la stessa situazione, con i messaggi letti, le risposte e le bozze sincronizzati. Molti utenti, infine, leggono la posta attraverso una pagina web, e in quel caso l'agente utente è un programma che gira nel browser e che parla con il servitore usando il protocollo del web.
Il web nacque nel 1989 al CERN di Ginevra, dove il fisico Tim Berners-Lee cercava un modo per permettere a gruppi di ricercatori sparsi per il mondo di condividere documenti collegati fra loro, e si regge su tre invenzioni semplici. La prima è un sistema di indirizzi capace di designare qualunque risorsa della rete, la seconda è un linguaggio per scrivere documenti che contengono collegamenti ad altri documenti, la terza è un protocollo per richiederli; il primo browser grafico di larga diffusione, Mosaic, apparve nel 1993, e in pochi anni il web passò da curiosità accademica a volto stesso di Internet per la maggior parte delle persone.
L'indirizzo di una risorsa, chiamato URL, si compone di tre parti principali. La prima, detta schema, indica il protocollo da usare, e per le pagine vale http oppure https; la seconda è il nome della macchina che ospita la risorsa, eventualmente seguito da un numero di porta quando questa differisce da quella consueta; la terza è il percorso della risorsa su quella macchina, simile al percorso di un file in un albero di cartelle, a cui possono seguire dei parametri introdotti da un punto interrogativo. Il browser, ricevuto un indirizzo, chiede al DNS l'indirizzo IP della macchina, apre verso di essa una connessione sulla porta indicata e invia la richiesta della risorsa.
Le pagine sono scritte in HTML, un linguaggio di marcatura in cui il testo è inframmezzato da etichette racchiuse fra parentesi angolari, che ne dichiarano la struttura, cioè titoli, paragrafi, elenchi, immagini e collegamenti. A questo linguaggio se ne affiancano altri due, il CSS, che descrive l'aspetto, con i colori, i caratteri e la disposizione degli elementi, e JavaScript, un vero linguaggio di programmazione che il browser esegue e che permette alla pagina di reagire ai gesti dell'utente e di chiedere altri dati senza essere ricaricata. Una pagina moderna richiede perciò decine di risorse distinte, e il browser, letto il documento principale, le va a prendere una per una e compone il risultato; le pagine di questo stesso manuale sono fatte così, e il browser ti permette di guardarne il sorgente.
Il protocollo con cui tutto ciò viene richiesto si chiama HTTP, ed è anch'esso, nella sua forma classica, un dialogo in testo leggibile. La richiesta comincia con una riga che contiene un verbo, il percorso della risorsa e la versione del protocollo, prosegue con alcune righe di intestazione, fra cui il nome del sito desiderato, il tipo di browser e le lingue preferite, e termina con una riga vuota; la risposta comincia con una riga che riporta la versione e un codice di stato, prosegue con le proprie intestazioni, che dichiarano fra l'altro il tipo e la lunghezza del contenuto, e dopo una riga vuota porta il contenuto stesso.
I verbi più usati sono due, GET per chiedere una risorsa e POST per inviare dati, come accade quando compili un modulo, a cui si aggiungono HEAD, che chiede le sole intestazioni, e PUT e DELETE, usati dai programmi che dialogano fra loro. I codici di stato sono di tre cifre, e la prima ne rivela la famiglia, dato che quelli che cominciano con due annunciano il successo, quelli con tre rinviano a un altro indirizzo, quelli con quattro segnalano un errore di chi chiede, fra cui il celebre quattrocentoquattro della pagina inesistente, e quelli con cinque un guasto del servitore.
Il protocollo è privo di memoria, nel senso che ogni richiesta viene servita senza alcun ricordo delle precedenti, scelta che lo rende semplice e robusto e che però impedirebbe a un sito di riconoscere un utente fra una pagina e l'altra, per esempio dopo che ha inserito la parola d'ordine. La soluzione è il cookie, letteralmente biscotto, una breve stringa che il servitore affida al browser con un'intestazione della risposta e che il browser restituisce in ogni richiesta successiva allo stesso sito, come il tagliando del guardaroba che permette di ritrovare il proprio cappotto. Lo stesso meccanismo, usato da risorse incorporate in molti siti diversi e appartenenti a una medesima azienda, consente di seguire una persona da un sito all'altro, ed è all'origine di gran parte del tracciamento pubblicitario, ragione per cui i browser offrono oggi strumenti per limitare i biscotti di terze parti.
Per risparmiare tempo e traffico, il browser conserva una copia delle risorse già scaricate, e il protocollo gli offre due modi per sapere se è ancora valida. Il servitore può dichiarare, in un'intestazione, per quanto tempo la risorsa resta fresca, e fino alla scadenza il browser usa la copia senza chiedere nulla; scaduto il termine, il browser invia una richiesta condizionale, che domanda la risorsa soltanto se è cambiata dall'ultima volta, e il servitore, quando nulla è cambiato, risponde con il codice trecentoquattro e nessun contenuto.
Il protocollo ha attraversato più generazioni, ciascuna nata per ridurre l'attesa. La prima versione apriva una connessione per ogni risorsa, pagando ogni volta la stretta di mano; la versione successiva, tuttora diffusissima, mantiene aperta la connessione per più richieste consecutive; la seconda generazione abbandona il testo per un formato binario compatto, comprime le intestazioni e intreccia molte richieste e risposte sulla stessa connessione, in modo che una risorsa lenta non blocchi le altre; la terza generazione compie l'ultimo passo trasferendo il tutto sopra QUIC, che come abbiamo visto elimina anche il blocco provocato da un segmento perduto.
Quando lo schema dell'indirizzo è https, fra il protocollo e il trasporto si inserisce uno strato di cifratura chiamato TLS, che garantisce tre cose, cioè che nessuno lungo il percorso possa leggere il contenuto, che nessuno possa alterarlo e che il sito sia davvero quello che dichiara di essere, quest'ultima garanzia affidata a un documento firmato detto certificato. Il lucchetto accanto all'indirizzo segnala che lo strato è attivo, e sul suo funzionamento torneremo con calma nella pagina successiva, dove la cifratura è l'argomento principale.
Dal lato del servitore, una pagina può essere un semplice file letto dal disco e spedito così com'è, e allora si dice statica, oppure può essere composta al momento da un programma che consulta una base di dati e costruisce una risposta su misura, e allora si dice dinamica. Un sito di notizie o un negozio funzionano nel secondo modo, e dietro il servitore web stanno di solito altri strati, con programmi che contengono la logica del servizio e basi di dati che ne conservano lo stato; un sito statico come quello di Tutanum, privo di tutto questo, offre in cambio una superficie d'attacco minima e può essere ospitato su una macchina modestissima. Lo stesso protocollo serve ormai anche ai programmi che dialogano fra loro senza alcuna pagina di mezzo, i quali si scambiano dati in formati testuali semplici, usando i verbi per leggere, creare, modificare e cancellare risorse designate da indirizzi, ed è così che l'applicazione del meteo sul telefono chiede le previsioni e che un programma scritto da te può interrogare un servizio pubblico. Fra il browser e il servitore possono inoltre sedere degli intermediari, chiamati proxy, che inoltrano le richieste per conto d'altri, a volte per conservare copie condivise, a volte per filtrare, a volte per nascondere a un capo l'identità dell'altro.
I siti molto frequentati non potrebbero servire il mondo intero da una sola stanza, e ricorrono alle reti di distribuzione dei contenuti, che i tecnici chiamano CDN. Si tratta di migliaia di servitori sparsi nei centri dati di ogni continente, ciascuno dei quali conserva copia delle risorse più richieste, e quando un utente chiede una pagina viene indirizzato, tramite una risposta del DNS scelta in base alla sua posizione oppure tramite la consegna al più vicino che abbiamo incontrato parlando di instradamento, verso il servitore più prossimo, cosicché i dati percorrono poche centinaia di chilometri anziché mezzo pianeta.
Una parte enorme del traffico odierno è fatta di suoni e di immagini in movimento, e trasmetterli pone problemi propri. Un suono viene reso digitale misurandone l'ampiezza decine di migliaia di volte al secondo, un filmato è una successione di immagini fisse, e in entrambi i casi la quantità di dati grezzi sarebbe intollerabile, sicché si ricorre alla compressione, che per l'audio scarta le componenti che l'orecchio non percepisce e per il video codifica di ogni immagine soltanto le differenze rispetto alla precedente. Chi riproduce un flusso accumula alcuni secondi di dati in una memoria tampone prima di cominciare, per assorbire le irregolarità della rete, e i servizi moderni dividono il filmato in spezzoni di pochi secondi, ciascuno disponibile a più livelli di qualità, lasciando che il programma di riproduzione scelga di volta in volta il livello adatto alla velocità misurata.
La telefonia e le videochiamate hanno esigenze ancora più strette, dato che un ritardo superiore a un quarto di secondo rende penosa una conversazione, e per questo usano UDP, tamponi brevissimi e codifiche capaci di mascherare la perdita di un frammento ricostruendolo dai vicini. Un protocollo apposito si occupa di cercare l'interlocutore e di far squillare il suo apparecchio, dopodiché la voce viaggia direttamente fra i due estremi, quando la traduzione degli indirizzi lo consente, oppure attraverso un servitore che fa da tramite.
In tutti gli esempi visti finora un cliente chiede e un servitore risponde, e conviene sapere che esiste un'architettura alternativa, detta da pari a pari, in cui ogni partecipante è insieme cliente e servitore. L'esempio più noto è BitTorrent, nel quale un archivio viene diviso in piccoli pezzi e ogni partecipante, mentre scarica i pezzi che gli mancano, offre agli altri quelli che già possiede, con una regola di reciprocità che premia chi dà di più; un breve file descrittivo contiene le impronte dei pezzi, che permettono di verificarne l'integrità, e per trovare gli altri partecipanti senza dipendere da un elenco centrale si usa una tabella distribuita, in cui ogni nodo custodisce una piccola parte dell'indice e sa a chi inoltrare le domande sul resto.
Il senso d'insieme di questo piano si coglie osservando che tutti i suoi protocolli hanno la stessa forma, cioè un dialogo di richieste e risposte fra due programmi, sopra una connessione che i piani inferiori rendono affidabile. Chi ha capito il DNS, la posta e il web possiede lo schema per comprendere qualunque altro servizio, e possiede anche il sapere necessario per offrirne di propri, registrando un nome, pubblicando i record giusti e mettendo in ascolto un demone su una porta, che è poi ciò che le guide di Tutanum insegnano a fare.
Veniamo alla pratica, che in questa pagina dà soddisfazioni immediate. Per il primo esperimento apri
un terminale e scrivi dig seguito dal nome di un sito, osservando la sezione delle
risposte, dove compare il record di tipo A con il suo tempo di vita in secondi; ripeti subito il comando
e noterai che il tempo di vita è diminuito, segno che la risposta proviene dalla memoria del risolutore,
e in fondo all'uscita leggerai quale servitore ha risposto e in quanti millisecondi.
Per il secondo esperimento esplora gli altri tipi di record, aggiungendo al comando la sigla del tipo
dopo il nome. Con MX scoprirai quali macchine ricevono la posta di un dominio e con quale
priorità, con NS quali servitori ne sono autorevoli, con AAAA se il sito è
raggiungibile con la nuova versione del protocollo, con TXT i record di testo, fra cui
quello che elenca le macchine autorizzate a spedire posta; prova infine dig -x seguito da
un indirizzo IP per percorrere la strada inversa.
Per il terzo esperimento ripercorri a mano la catena delle deleghe con dig +trace
seguito da un nome. Il programma parte dai servitori della radice, mostra il rinvio a quelli del dominio
di primo livello, poi a quelli del dominio registrato, e infine la risposta, stampando a ogni passo chi
ha risposto, ed è la dimostrazione più chiara del percorso che un risolutore compie al posto tuo quando
la sua memoria è vuota.
Per il quarto esperimento guarda un dialogo del web con curl -v seguito dal nome di un
sito. Le righe precedute dal segno di maggiore sono la richiesta inviata, con il verbo, il percorso e le
intestazioni, quelle precedute dal segno di minore sono la risposta, con il codice di stato e le
intestazioni del servitore, e fra queste cerca quelle che governano la conservazione nella memoria del
browser e quelle che depositano biscotti; con curl -I ottieni le sole intestazioni, e
provando un indirizzo inesistente vedrai comparire il codice quattrocentoquattro.
Per il quinto esperimento scrivi una richiesta con le tue mani, riprendendo il programma
nc della pagina precedente. Collegati con nc al nome di un sito che risponda
ancora senza cifratura e alla porta ottanta, digita una riga con il verbo GET, una barra come percorso e
la versione del protocollo nella forma indicata dal manuale, poi una riga con la parola Host seguita dal
nome del sito secondo la sintassi delle intestazioni, e infine premi invio due volte; il servitore ti
risponderà con le intestazioni e con il sorgente della pagina, e avrai fatto a mano ciò che il browser
fa migliaia di volte al giorno.
Per il sesto esperimento diventa tu il servitore, cioè entra in una cartella che contenga qualche
file e scrivi python3 -m http.server 8000, poi apri il browser e visita l'indirizzo
127.0.0.1 seguito dalla porta ottomila; vedrai l'elenco dei file, e nel terminale comparirà una riga per
ogni richiesta ricevuta, con il verbo, il percorso e il codice di stato. Da un altro apparecchio della
rete di casa, usando l'indirizzo privato del calcolatore al posto di quello locale, raggiungerai le
stesse pagine, e avrai pubblicato il tuo primo sito. Aggiungi poi nell'archivio /etc/hosts,
con i privilegi di amministratore, una riga che associ all'indirizzo locale un nome di tua invenzione, e
visita quel nome nel browser seguito dalla stessa porta, constatando che il sistema lo risolve senza
interpellare nessun servitore; ricordati di togliere la riga alla fine.
Per il settimo e ultimo esperimento apri nel programma di posta un messaggio ricevuto e cerca la voce che mostra il sorgente oppure le intestazioni complete. Leggi dal basso verso l'alto le righe che registrano i passaggi da un servitore all'altro, annotando nomi e orari, e cerca le righe che riportano l'esito delle verifiche sull'autenticità del mittente; apri poi nel browser gli strumenti per sviluppatori, scegli la scheda della rete, ricarica una pagina qualunque e conta quante richieste sono servite per comporla, osservando per ciascuna il tipo, la dimensione e il tempo impiegato.
Il modulo attinge al libro Reti di calcolatori di Andrew S. Tanenbaum e David Wetherall, e in particolare al capitolo settimo sul livello delle applicazioni, da cui provengono il sistema dei nomi di dominio con lo spazio dei nomi, i record di risorsa e i servitori dei nomi, la posta elettronica con l'architettura, i formati dei messaggi, il trasferimento e la consegna finale, il web con l'architettura, le pagine statiche e dinamiche e il protocollo HTTP, la trasmissione di audio e video in flusso e in tempo reale, e la distribuzione dei contenuti con le reti dedicate e le reti da pari a pari.
Abbiamo ora percorso la pila intera, dal segnale sul filo alla pagina sullo schermo, e a ogni piano abbiamo incontrato lo stesso avvertimento, cioè che la rete è nata fra persone che si fidavano e che i suoi protocolli originari viaggiano in chiaro e credono a chiunque. Resta dunque da affrontare l'argomento che dà senso all'intero progetto Tutanum, cioè come si protegge una conversazione da chi vuole leggerla, alterarla oppure fingersi uno dei due interlocutori, e ti invitiamo a proseguire verso la pagina dedicata alla sicurezza di rete, dove i cifrari, le firme e i certificati chiudono il percorso.