INTERNET - PACCHETTI, INSTRADAMENTO & AFFIDABILITÀ
Ciao, mi chiamo Lynn Root,
sono un'ingegnera del software qui in Spotify
e devo ammettere che sono la prima
che spesso dà per scontata l'affidabilità di Internet.
L'enorme quantità di dati
che incessantemente sfreccia su Internet,
è sbalorditiva.
Ma come è possibile che ogni porzione di dati
ti venga sempre consegnata in modo affidabile?
Supponiamo che tu voglia ascoltare una canzone da Spotify.
Potrebbe sembrare che il tuo dispositivo
si connetta direttamente ai server di Spotify
e che essi ti inviino direttamente la canzone
tramite una linea dedicata.
Ma in realtà non è affatto così che funziona Internet!
Se Internet fosse stata basata su linee dirette e dedicate,
sarebbe stato impossibile continuare a farla funzionare
quando gli utenti collegati sono diventati milioni.
Soprattutto perché non ci può essere garanzia che ogni cavo
e ogni computer
funzioni perfettamente in ogni momento.
Invece i dati viaggiano su Internet
in una maniera molto meno diretta.
Molti anni fa, nei primi anni '70,
io e il mio collega Bob Kahn
cominciammo a lavorare alla progettazione
di ciò che oggi chiamiamo Internet.
Bob e io ci trovammo ad avere la responsabilità
e l'opportunità di progettare i protocolli
alla base di Internet e la sua architettura
e abbiamo poi continuato a partecipare
alla crescita di Internet
e alla sua evoluzione fino ad oggi.
Il modo in cui i dati vengono trasferiti
da un computer a un altro è piuttosto interessante.
Non devono seguire un percorso prestabilito,
anzi, il percorso può cambiare
anche nel mezzo di una "conversazione"
tra un computer e un altro.
I dati su Internet viaggiano
da un dispositivo a un altro
in quello che chiamiamo un pacchetto di dati
e un pacchetto viaggia da un punto all'altro di Internet
in un modo molto simile a come ci si può spostare
da un posto ad un altro in automobile.
A seconda della situazione del traffico
o delle condizioni della strada,
si può scegliere o essere costretti
a prendere strade differenti ad ogni viaggio
pur dovendo arrivare sempre alla stessa destnazione.
E, proprio come è possibile trasportare
diversi oggetti all'interno di un'automobile,
diverse tipologie di dati digitali
possono essere inviate tramite pacchetti IP,
ma ci sono alcuni limiti:
pensiamo, ad esempio, di dover trasferire uno Space Shuttle
da dove è stato costruito
a dove dovrà decollare.
Lo Shuttle non ci starà su un unico camion,
dovrà quindi essere smontato in pezzi
e trasportato da una intera flotta di camion.
Questi camion potranno prendere strade differenti
e potrebbero arrivare a destinazione a orari diversi,
ma una volta che tutti saranno arrivati,
si potranno ri-assemblati insieme
e l'intero Shuttle sarà pronto per il lancio.
Su Internet le cose funzionano più o meno allo stesso modo:
se vuoi inviare un'immagine molto grande ad un amico
o caricarla su un sito web,
e quell'immagine è fatta di decine di milioni di bit
(uni e zeri),
sono troppi per essere spediti in un unico pacchetto.
Visto che questi dati sono in un computer,
questo li può velocemente dividere
in centinaia o anche migliaia di parti più piccole
denominate "pacchetti".
Diversamente dalle automobili e dai camion,
questi pacchetti non hanno un autista
e non scelgono da soli la strada:
ogni pacchetto è contrassegnato dall'indirizzo Internet
di provenienza e da quello di destinazione;
appositi computer in Internet, chiamati Router,
gestiscono il traffico, facendo muovere i pacchetti
nella rete, evitando ingorghi.
Se un percorso diventa congestionato
alcuni singoli pacchetti potranno viaggiare diversamente
attraverso Internet
e arrivare a destinazione in momenti lievemente diversi
e anche in un ordine diverso.
Parliamo dunque di come tutto ciò funziona.
Come previsto dall'Internet Protocol,
ogni router tiene traccia dei molteplici percorsi
per spedire i pacchetti
e sceglie quello più conveniente per ogni porzione di dati
sulla base dell'indirizzo IP di destinazione
di quel pacchetto.
"Conveniente", in questo caso, non si riferisce al costo,
ma al tempo e ad altri fattori non tecnici
come questioni politiche
e di relazioni tra aziende.
Spesso il percorso migliore per i dati
non è necessariamente il più diretto.
La disponibilità di più percorsi possibili,
rende la rete più tollerante rispetto ai guasti,
il che significa che si potrà continuare ad inviare pacchetti
anche in caso di guasti molto gravi.
Questa è la base di uno dei principi fondamentali di Internet:
l'affidabilità.
Ora, cosa accadrebbe se tu richiedessi dei dati
ed una parte di essi non ti venisse consegnata?
Supponiamo che tu voglia ascoltare una canzone:
come possiamo essere sicuri al 100%
che tutti i dati ti saranno consegnati,
in modo che la canzone risulti perfetta?
Vi presento il nostro nuovo migliore amico: TCP
Transmission Control Protocol
(protocollo di controllo della trasmissione).
Il TCP gestisce l'invio e la ricezione di tutti i tuoi dati
organizzati in pacchetti.
Pensa a lui come il servizio di posta raccomandata con ricevuta di ritorno.
Quando richiedi una canzone tramite il tuo dispositivo,
Spotify invia una canzone suddivisa in tanti pacchetti.
Quando i pacchetti arrivano,
il TCP fa un inventario completo
e manda indietro una ricevuta per ogni pacchetto arrivato.
Se tutti i pacchetti sono arrivati,
il TCP firma una ricevuta ed il processo è concluso.
[Musica]
[Musica interrotta bruscamente]
Se invece il TCP si accorge che mancano alcuni pacchetti,
non firmerà,
altrimenti la canzone potrebbe suonare male
o essere incompleta.
Per ogni pacchetto mancante o incompleto
Spotify tenterà un nuovo invio.
Se questa volta il TCP verificherà
la corretta consegna di tutti i pacchetti della canzone,
questa potrà finalmente cominciare a suonare
(altrimenti la procedura si ripeterà).
[La musica ricomincia]
Ciò che è grandioso del TCP e del sistema di instradamento
(routing)
è che sono scalabili.
Possono funzionare con 8 o con 8 miliardi di dispositivi.
Anzi, proprio per via di questi principi di tolleranza agli errori
e di ridondanza,
più router ci sono,
più affidabile diventa Internet.
Un altro aspetto grandioso
è che possiamo far crescere Internet
senza interrompere il servizio a chiunque lo stia usando.
Internet è fatto di centinaia di migliaia di reti
e di miliardi di computer
e altri dispositivi fisicamente connessi.
Questi differenti sistemi che compongono Internet
sono connessi gli uni agli altri,
comunicano gli uni con gli altri,
e riescono a lavorare insieme
grazie al fatto di condividere alcuni standard
su come i dati devono essere inviati su Internet.
I dispositivi
o i router disposti lungo tutta la rete Internet
permettono a tutti i pacchetti di trovare la loro strada
per la destinazione ove verranno ri-assemblati,
e, se necessario, riordinati.
Tutto ciò avviene miliardi di volte al giorno,
sia che tu o chiunque altro stiate inviando un'email,
visitando una pagina web,
facendo una video-chat,
usando una app per smartphone,
o anche quando sensori o dispositivi connessi a Internet
dialogano gli uni con gli altri.