WEBVTT 00:00:02.569 --> 00:00:08.070 INTERNET - PACCHETTI, INSTRADAMENTO & AFFIDABILITÀ 00:00:08.320 --> 00:00:09.940 Ciao, mi chiamo Lynn Root, 00:00:09.940 --> 00:00:12.300 sono un'ingegnera del software qui in Spotify 00:00:12.300 --> 00:00:14.240 e devo ammettere che sono la prima 00:00:14.240 --> 00:00:17.245 che spesso dà per scontata l'affidabilità di Internet. 00:00:17.440 --> 00:00:18.810 L'enorme quantità di dati 00:00:18.810 --> 00:00:20.431 che incessantemente sfreccia su Internet, 00:00:20.431 --> 00:00:21.370 è sbalorditiva. 00:00:21.370 --> 00:00:23.510 Ma come è possibile che ogni porzione di dati 00:00:23.510 --> 00:00:25.470 ti venga sempre consegnata in modo affidabile? 00:00:26.140 --> 00:00:28.760 Supponiamo che tu voglia ascoltare una canzone da Spotify. 00:00:28.760 --> 00:00:30.420 Potrebbe sembrare che il tuo dispositivo 00:00:30.420 --> 00:00:32.280 si connetta direttamente ai server di Spotify 00:00:32.280 --> 00:00:34.212 e che essi ti inviino direttamente la canzone 00:00:34.212 --> 00:00:35.520 tramite una linea dedicata. 00:00:35.520 --> 00:00:38.110 Ma in realtà non è affatto così che funziona Internet! 00:00:38.800 --> 00:00:41.760 Se Internet fosse stata basata su linee dirette e dedicate, 00:00:41.760 --> 00:00:43.860 sarebbe stato impossibile continuare a farla funzionare 00:00:43.860 --> 00:00:45.651 quando gli utenti collegati sono diventati milioni. 00:00:45.651 --> 00:00:48.500 Soprattutto perché non ci può essere garanzia che ogni cavo e ogni computer 00:00:48.500 --> 00:00:50.140 funzioni perfettamente in ogni momento. 00:00:50.140 --> 00:00:52.600 Invece i dati viaggiano su Internet 00:00:52.600 --> 00:00:55.060 in una maniera molto meno diretta. 00:00:55.060 --> 00:00:58.524 Molti anni fa, nei primi anni '70, 00:00:58.524 --> 00:01:00.340 io e il mio collega Bob Kahn 00:01:00.340 --> 00:01:02.420 cominciammo a lavorare alla progettazione 00:01:02.420 --> 00:01:04.459 di ciò che oggi chiamiamo Internet. 00:01:04.459 --> 00:01:06.769 Bob e io ci trovammo ad avere la responsabilità 00:01:06.769 --> 00:01:09.284 e l'opportunità di progettare i protocolli 00:01:09.284 --> 00:01:12.740 alla base di Internet e la sua architettura 00:01:12.740 --> 00:01:16.020 e abbiamo poi continuato a partecipare 00:01:16.020 --> 00:01:17.275 alla crescita di Internet 00:01:17.275 --> 00:01:20.700 e alla sua evoluzione fino ad oggi. 00:01:21.900 --> 00:01:24.360 Il modo in cui i dati vengono trasferiti 00:01:24.360 --> 00:01:26.928 da un computer a un altro è piuttosto interessante. 00:01:26.928 --> 00:01:29.360 Non devono seguire un percorso prestabilito, 00:01:29.360 --> 00:01:30.900 anzi, il percorso può cambiare 00:01:30.900 --> 00:01:32.840 anche nel mezzo di una "conversazione" 00:01:32.840 --> 00:01:34.224 tra un computer e un altro. 00:01:34.224 --> 00:01:36.021 I dati su Internet viaggiano 00:01:36.021 --> 00:01:37.439 da un dispositivo a un altro 00:01:37.439 --> 00:01:40.300 in quello che chiamiamo un pacchetto di dati 00:01:40.300 --> 00:01:43.054 e un pacchetto viaggia da un punto all'altro di Internet 00:01:43.054 --> 00:01:45.630 in un modo molto simile a come ci si può spostare 00:01:45.630 --> 00:01:47.400 da un posto ad un altro in automobile. 00:01:47.400 --> 00:01:49.209 A seconda della situazione del traffico 00:01:49.209 --> 00:01:50.625 o delle condizioni della strada, 00:01:50.625 --> 00:01:52.325 si può scegliere o essere costretti 00:01:52.325 --> 00:01:54.440 a prendere strade differenti ad ogni viaggio 00:01:54.440 --> 00:01:56.940 pur dovendo arrivare sempre alla stessa destnazione. 00:01:58.250 --> 00:02:00.140 E, proprio come è possibile trasportare 00:02:00.140 --> 00:02:02.237 diversi oggetti all'interno di un'automobile, 00:02:02.237 --> 00:02:03.814 diverse tipologie di dati digitali 00:02:03.814 --> 00:02:05.910 possono essere inviate tramite pacchetti IP, 00:02:05.910 --> 00:02:07.590 ma ci sono alcuni limiti: 00:02:08.080 --> 00:02:11.090 pensiamo, ad esempio, di dover trasferire uno Space Shuttle 00:02:11.090 --> 00:02:12.280 da dove è stato costruito 00:02:12.280 --> 00:02:13.790 a dove dovrà decollare. 00:02:13.790 --> 00:02:15.690 Lo Shuttle non ci starà su un unico camion, 00:02:15.690 --> 00:02:17.500 dovrà quindi essere smontato in pezzi 00:02:17.500 --> 00:02:19.520 e trasportato da una intera flotta di camion. 00:02:19.520 --> 00:02:21.723 Questi camion potranno prendere strade differenti 00:02:21.723 --> 00:02:24.010 e potrebbero arrivare a destinazione a orari diversi, 00:02:24.010 --> 00:02:25.900 ma una volta che tutti saranno arrivati, 00:02:25.900 --> 00:02:27.870 si potranno ri-assemblati insieme 00:02:27.870 --> 00:02:30.560 e l'intero Shuttle sarà pronto per il lancio. 00:02:31.360 --> 00:02:34.320 Su Internet le cose funzionano più o meno allo stesso modo: 00:02:34.320 --> 00:02:37.270 se vuoi inviare un'immagine molto grande ad un amico 00:02:37.270 --> 00:02:39.860 o caricarla su un sito web, 00:02:39.860 --> 00:02:43.880 e quell'immagine è fatta di decine di milioni di bit (uni e zeri), 00:02:43.880 --> 00:02:46.419 sono troppi per essere spediti in un unico pacchetto. 00:02:46.419 --> 00:02:48.425 Visto che questi dati sono in un computer, 00:02:48.425 --> 00:02:50.110 questo li può velocemente dividere 00:02:50.110 --> 00:02:52.558 in centinaia o anche migliaia di parti più piccole 00:02:52.558 --> 00:02:54.060 denominate "pacchetti". 00:02:54.780 --> 00:02:56.827 Diversamente dalle automobili e dai camion, 00:02:56.827 --> 00:02:58.440 questi pacchetti non hanno un autista 00:02:58.440 --> 00:02:59.821 e non scelgono da soli la strada: 00:02:59.821 --> 00:03:01.910 ogni pacchetto è contrassegnato dall'indirizzo Internet 00:03:01.910 --> 00:03:03.930 di provenienza e da quello di destinazione; 00:03:03.930 --> 00:03:06.280 appositi computer in Internet, chiamati Router, 00:03:06.280 --> 00:03:09.400 gestiscono il traffico, facendo muovere i pacchetti 00:03:09.400 --> 00:03:11.400 nella rete, evitando ingorghi. 00:03:11.400 --> 00:03:13.400 Se un percorso diventa congestionato 00:03:13.400 --> 00:03:15.629 alcuni singoli pacchetti potranno viaggiare diversamente 00:03:15.629 --> 00:03:16.650 attraverso Internet 00:03:16.650 --> 00:03:20.316 e arrivare a destinazione in momenti lievemente diversi 00:03:20.316 --> 00:03:22.440 e anche in un ordine diverso. 00:03:22.820 --> 00:03:24.800 Parliamo dunque di come tutto ciò funziona. 00:03:24.800 --> 00:03:26.420 Come previsto dall'Internet Protocol, 00:03:26.420 --> 00:03:28.800 ogni router tiene traccia dei molteplici percorsi 00:03:28.800 --> 00:03:29.895 per spedire i pacchetti 00:03:29.895 --> 00:03:33.298 e sceglie quello più conveniente per ogni porzione di dati 00:03:33.298 --> 00:03:36.540 sulla base dell'indirizzo IP di destinazione di quel pacchetto. 00:03:36.540 --> 00:03:39.370 "Conveniente", in questo caso, non si riferisce al costo, 00:03:39.370 --> 00:03:41.235 ma al tempo e ad altri fattori non tecnici 00:03:41.235 --> 00:03:42.357 come questioni politiche 00:03:42.357 --> 00:03:44.290 e di relazioni tra aziende. 00:03:44.290 --> 00:03:46.690 Spesso il percorso migliore per i dati 00:03:46.690 --> 00:03:48.750 non è necessariamente il più diretto. 00:03:48.750 --> 00:03:50.640 La disponibilità di più percorsi possibili, 00:03:50.640 --> 00:03:52.760 rende la rete più tollerante rispetto ai guasti, 00:03:52.760 --> 00:03:55.290 il che significa che si potrà continuare ad inviare pacchetti 00:03:55.290 --> 00:03:57.580 anche in caso di guasti molto gravi. 00:03:57.580 --> 00:04:00.540 Questa è la base di uno dei principi fondamentali di Internet: 00:04:00.540 --> 00:04:01.850 l'affidabilità. 00:04:03.640 --> 00:04:06.040 Ora, cosa accadrebbe se tu richiedessi dei dati 00:04:06.040 --> 00:04:07.860 ed una parte di essi non ti venisse consegnata? 00:04:07.860 --> 00:04:09.730 Supponiamo che tu voglia ascoltare una canzone: 00:04:09.730 --> 00:04:11.530 come possiamo essere sicuri al 100% 00:04:11.530 --> 00:04:13.135 che tutti i dati ti saranno consegnati, 00:04:13.135 --> 00:04:14.972 in modo che la canzone risulti perfetta? 00:04:14.972 --> 00:04:17.501 Vi presento il nostro nuovo migliore amico: TCP 00:04:17.501 --> 00:04:19.889 Transmission Control Protocol (protocollo di controllo della trasmissione). 00:04:19.889 --> 00:04:23.720 Il TCP gestisce l'invio e la ricezione di tutti i tuoi dati organizzati in pacchetti. 00:04:23.720 --> 00:04:26.520 Pensa a lui come il servizio di posta raccomandata con ricevuta di ritorno. 00:04:26.520 --> 00:04:28.974 Quando richiedi una canzone tramite il tuo dispositivo, 00:04:28.974 --> 00:04:31.900 Spotify invia una canzone suddivisa in tanti pacchetti. 00:04:32.660 --> 00:04:34.100 Quando i pacchetti arrivano, 00:04:34.100 --> 00:04:35.790 il TCP fa un inventario completo 00:04:35.790 --> 00:04:38.740 e manda indietro una ricevuta per ogni pacchetto arrivato. 00:04:39.560 --> 00:04:41.192 Se tutti i pacchetti sono arrivati, 00:04:41.192 --> 00:04:43.640 il TCP firma una ricevuta ed il processo è concluso. 00:04:43.640 --> 00:04:48.930 [Musica] 00:04:48.930 --> 00:04:50.380 [Musica interrotta bruscamente] 00:04:50.380 --> 00:04:53.110 Se invece il TCP si accorge che mancano alcuni pacchetti, 00:04:53.110 --> 00:04:54.150 non firmerà, 00:04:54.150 --> 00:04:56.520 altrimenti la canzone potrebbe suonare male 00:04:56.520 --> 00:04:58.920 o essere incompleta. 00:04:58.920 --> 00:05:00.920 Per ogni pacchetto mancante o incompleto 00:05:00.920 --> 00:05:02.720 Spotify tenterà un nuovo invio. 00:05:02.720 --> 00:05:04.350 Se questa volta il TCP verificherà 00:05:04.350 --> 00:05:07.219 la corretta consegna di tutti i pacchetti della canzone, 00:05:07.219 --> 00:05:09.420 questa potrà finalmente cominciare a suonare (altrimenti la procedura si ripeterà). 00:05:09.420 --> 00:05:11.860 [La musica ricomincia] 00:05:11.860 --> 00:05:14.466 Ciò che è grandioso del TCP e del sistema di instradamento (routing) 00:05:14.466 --> 00:05:15.794 è che sono scalabili. 00:05:15.794 --> 00:05:18.539 Possono funzionare con 8 o con 8 miliardi di dispositivi. 00:05:18.539 --> 00:05:21.230 Anzi, proprio per via di questi principi di tolleranza agli errori 00:05:21.230 --> 00:05:22.149 e di ridondanza, 00:05:22.149 --> 00:05:23.402 più router ci sono, 00:05:23.402 --> 00:05:25.600 più affidabile diventa Internet. 00:05:25.600 --> 00:05:26.860 Un altro aspetto grandioso 00:05:26.860 --> 00:05:28.465 è che possiamo far crescere Internet 00:05:28.465 --> 00:05:31.210 senza interrompere il servizio a chiunque lo stia usando. 00:05:31.800 --> 00:05:34.672 Internet è fatto di centinaia di migliaia di reti 00:05:34.672 --> 00:05:36.220 e di miliardi di computer 00:05:36.220 --> 00:05:38.820 e altri dispositivi fisicamente connessi. 00:05:38.820 --> 00:05:41.157 Questi differenti sistemi che compongono Internet 00:05:41.157 --> 00:05:42.500 sono connessi gli uni agli altri, 00:05:42.500 --> 00:05:44.160 comunicano gli uni con gli altri, 00:05:44.160 --> 00:05:45.580 e riescono a lavorare insieme 00:05:45.580 --> 00:05:47.760 grazie al fatto di condividere alcuni standard 00:05:47.760 --> 00:05:51.000 su come i dati devono essere inviati su Internet. 00:05:51.000 --> 00:05:52.230 I dispositivi 00:05:52.230 --> 00:05:54.108 o i router disposti lungo tutta la rete Internet 00:05:54.108 --> 00:05:56.250 permettono a tutti i pacchetti di trovare la loro strada 00:05:56.250 --> 00:05:58.570 per la destinazione ove verranno ri-assemblati, 00:05:58.570 --> 00:06:01.200 e, se necessario, riordinati. 00:06:01.200 --> 00:06:04.100 Tutto ciò avviene miliardi di volte al giorno, 00:06:04.100 --> 00:06:07.085 sia che tu o chiunque altro stiate inviando un'email, 00:06:07.085 --> 00:06:08.736 visitando una pagina web, 00:06:08.736 --> 00:06:10.150 facendo una video-chat, 00:06:10.150 --> 00:06:11.480 usando una app per smartphone, 00:06:11.480 --> 00:06:13.920 o anche quando sensori o dispositivi connessi a Internet 00:06:13.920 --> 00:06:15.450 dialogano gli uni con gli altri.