1 00:00:02,569 --> 00:00:08,070 INTERNET - PACCHETTI, INSTRADAMENTO & AFFIDABILITÀ 2 00:00:08,320 --> 00:00:09,940 Ciao, mi chiamo Lynn Root, 3 00:00:09,940 --> 00:00:12,300 sono un'ingegnera del software qui in Spotify 4 00:00:12,300 --> 00:00:14,240 e devo ammettere che sono la prima 5 00:00:14,240 --> 00:00:17,245 che spesso dà per scontata l'affidabilità di Internet. 6 00:00:17,440 --> 00:00:18,810 L'enorme quantità di dati 7 00:00:18,810 --> 00:00:20,431 che incessantemente sfreccia su Internet, 8 00:00:20,431 --> 00:00:21,370 è sbalorditiva. 9 00:00:21,370 --> 00:00:23,510 Ma come è possibile che ogni porzione di dati 10 00:00:23,510 --> 00:00:25,470 ti venga sempre consegnata in modo affidabile? 11 00:00:26,140 --> 00:00:28,760 Supponiamo che tu voglia ascoltare una canzone da Spotify. 12 00:00:28,760 --> 00:00:30,420 Potrebbe sembrare che il tuo dispositivo 13 00:00:30,420 --> 00:00:32,280 si connetta direttamente ai server di Spotify 14 00:00:32,280 --> 00:00:34,212 e che essi ti inviino direttamente la canzone 15 00:00:34,212 --> 00:00:35,520 tramite una linea dedicata. 16 00:00:35,520 --> 00:00:38,110 Ma in realtà non è affatto così che funziona Internet! 17 00:00:38,800 --> 00:00:41,760 Se Internet fosse stata basata su linee dirette e dedicate, 18 00:00:41,760 --> 00:00:43,860 sarebbe stato impossibile continuare a farla funzionare 19 00:00:43,860 --> 00:00:45,651 quando gli utenti collegati sono diventati milioni. 20 00:00:45,651 --> 00:00:48,500 Soprattutto perché non ci può essere garanzia che ogni cavo e ogni computer 21 00:00:48,500 --> 00:00:50,140 funzioni perfettamente in ogni momento. 22 00:00:50,140 --> 00:00:52,600 Invece i dati viaggiano su Internet 23 00:00:52,600 --> 00:00:55,060 in una maniera molto meno diretta. 24 00:00:55,060 --> 00:00:58,524 Molti anni fa, nei primi anni '70, 25 00:00:58,524 --> 00:01:00,340 io e il mio collega Bob Kahn 26 00:01:00,340 --> 00:01:02,420 cominciammo a lavorare alla progettazione 27 00:01:02,420 --> 00:01:04,459 di ciò che oggi chiamiamo Internet. 28 00:01:04,459 --> 00:01:06,769 Bob e io ci trovammo ad avere la responsabilità 29 00:01:06,769 --> 00:01:09,284 e l'opportunità di progettare i protocolli 30 00:01:09,284 --> 00:01:12,740 alla base di Internet e la sua architettura 31 00:01:12,740 --> 00:01:16,020 e abbiamo poi continuato a partecipare 32 00:01:16,020 --> 00:01:17,275 alla crescita di Internet 33 00:01:17,275 --> 00:01:20,700 e alla sua evoluzione fino ad oggi. 34 00:01:21,900 --> 00:01:24,360 Il modo in cui i dati vengono trasferiti 35 00:01:24,360 --> 00:01:26,928 da un computer a un altro è piuttosto interessante. 36 00:01:26,928 --> 00:01:29,360 Non devono seguire un percorso prestabilito, 37 00:01:29,360 --> 00:01:30,900 anzi, il percorso può cambiare 38 00:01:30,900 --> 00:01:32,840 anche nel mezzo di una "conversazione" 39 00:01:32,840 --> 00:01:34,224 tra un computer e un altro. 40 00:01:34,224 --> 00:01:36,021 I dati su Internet viaggiano 41 00:01:36,021 --> 00:01:37,439 da un dispositivo a un altro 42 00:01:37,439 --> 00:01:40,300 in quello che chiamiamo un pacchetto di dati 43 00:01:40,300 --> 00:01:43,054 e un pacchetto viaggia da un punto all'altro di Internet 44 00:01:43,054 --> 00:01:45,630 in un modo molto simile a come ci si può spostare 45 00:01:45,630 --> 00:01:47,400 da un posto ad un altro in automobile. 46 00:01:47,400 --> 00:01:49,209 A seconda della situazione del traffico 47 00:01:49,209 --> 00:01:50,625 o delle condizioni della strada, 48 00:01:50,625 --> 00:01:52,325 si può scegliere o essere costretti 49 00:01:52,325 --> 00:01:54,440 a prendere strade differenti ad ogni viaggio 50 00:01:54,440 --> 00:01:56,940 pur dovendo arrivare sempre alla stessa destnazione. 51 00:01:58,250 --> 00:02:00,140 E, proprio come è possibile trasportare 52 00:02:00,140 --> 00:02:02,237 diversi oggetti all'interno di un'automobile, 53 00:02:02,237 --> 00:02:03,814 diverse tipologie di dati digitali 54 00:02:03,814 --> 00:02:05,910 possono essere inviate tramite pacchetti IP, 55 00:02:05,910 --> 00:02:07,590 ma ci sono alcuni limiti: 56 00:02:08,080 --> 00:02:11,090 pensiamo, ad esempio, di dover trasferire uno Space Shuttle 57 00:02:11,090 --> 00:02:12,280 da dove è stato costruito 58 00:02:12,280 --> 00:02:13,790 a dove dovrà decollare. 59 00:02:13,790 --> 00:02:15,690 Lo Shuttle non ci starà su un unico camion, 60 00:02:15,690 --> 00:02:17,500 dovrà quindi essere smontato in pezzi 61 00:02:17,500 --> 00:02:19,520 e trasportato da una intera flotta di camion. 62 00:02:19,520 --> 00:02:21,723 Questi camion potranno prendere strade differenti 63 00:02:21,723 --> 00:02:24,010 e potrebbero arrivare a destinazione a orari diversi, 64 00:02:24,010 --> 00:02:25,900 ma una volta che tutti saranno arrivati, 65 00:02:25,900 --> 00:02:27,870 si potranno ri-assemblati insieme 66 00:02:27,870 --> 00:02:30,560 e l'intero Shuttle sarà pronto per il lancio. 67 00:02:31,360 --> 00:02:34,320 Su Internet le cose funzionano più o meno allo stesso modo: 68 00:02:34,320 --> 00:02:37,270 se vuoi inviare un'immagine molto grande ad un amico 69 00:02:37,270 --> 00:02:39,860 o caricarla su un sito web, 70 00:02:39,860 --> 00:02:43,880 e quell'immagine è fatta di decine di milioni di bit (uni e zeri), 71 00:02:43,880 --> 00:02:46,419 sono troppi per essere spediti in un unico pacchetto. 72 00:02:46,419 --> 00:02:48,425 Visto che questi dati sono in un computer, 73 00:02:48,425 --> 00:02:50,110 questo li può velocemente dividere 74 00:02:50,110 --> 00:02:52,558 in centinaia o anche migliaia di parti più piccole 75 00:02:52,558 --> 00:02:54,060 denominate "pacchetti". 76 00:02:54,780 --> 00:02:56,827 Diversamente dalle automobili e dai camion, 77 00:02:56,827 --> 00:02:58,440 questi pacchetti non hanno un autista 78 00:02:58,440 --> 00:02:59,821 e non scelgono da soli la strada: 79 00:02:59,821 --> 00:03:01,910 ogni pacchetto è contrassegnato dall'indirizzo Internet 80 00:03:01,910 --> 00:03:03,930 di provenienza e da quello di destinazione; 81 00:03:03,930 --> 00:03:06,280 appositi computer in Internet, chiamati Router, 82 00:03:06,280 --> 00:03:09,400 gestiscono il traffico, facendo muovere i pacchetti 83 00:03:09,400 --> 00:03:11,400 nella rete, evitando ingorghi. 84 00:03:11,400 --> 00:03:13,400 Se un percorso diventa congestionato 85 00:03:13,400 --> 00:03:15,629 alcuni singoli pacchetti potranno viaggiare diversamente 86 00:03:15,629 --> 00:03:16,650 attraverso Internet 87 00:03:16,650 --> 00:03:20,316 e arrivare a destinazione in momenti lievemente diversi 88 00:03:20,316 --> 00:03:22,440 e anche in un ordine diverso. 89 00:03:22,820 --> 00:03:24,800 Parliamo dunque di come tutto ciò funziona. 90 00:03:24,800 --> 00:03:26,420 Come previsto dall'Internet Protocol, 91 00:03:26,420 --> 00:03:28,800 ogni router tiene traccia dei molteplici percorsi 92 00:03:28,800 --> 00:03:29,895 per spedire i pacchetti 93 00:03:29,895 --> 00:03:33,298 e sceglie quello più conveniente per ogni porzione di dati 94 00:03:33,298 --> 00:03:36,540 sulla base dell'indirizzo IP di destinazione di quel pacchetto. 95 00:03:36,540 --> 00:03:39,370 "Conveniente", in questo caso, non si riferisce al costo, 96 00:03:39,370 --> 00:03:41,235 ma al tempo e ad altri fattori non tecnici 97 00:03:41,235 --> 00:03:42,357 come questioni politiche 98 00:03:42,357 --> 00:03:44,290 e di relazioni tra aziende. 99 00:03:44,290 --> 00:03:46,690 Spesso il percorso migliore per i dati 100 00:03:46,690 --> 00:03:48,750 non è necessariamente il più diretto. 101 00:03:48,750 --> 00:03:50,640 La disponibilità di più percorsi possibili, 102 00:03:50,640 --> 00:03:52,760 rende la rete più tollerante rispetto ai guasti, 103 00:03:52,760 --> 00:03:55,290 il che significa che si potrà continuare ad inviare pacchetti 104 00:03:55,290 --> 00:03:57,580 anche in caso di guasti molto gravi. 105 00:03:57,580 --> 00:04:00,540 Questa è la base di uno dei principi fondamentali di Internet: 106 00:04:00,540 --> 00:04:01,850 l'affidabilità. 107 00:04:03,640 --> 00:04:06,040 Ora, cosa accadrebbe se tu richiedessi dei dati 108 00:04:06,040 --> 00:04:07,860 ed una parte di essi non ti venisse consegnata? 109 00:04:07,860 --> 00:04:09,730 Supponiamo che tu voglia ascoltare una canzone: 110 00:04:09,730 --> 00:04:11,530 come possiamo essere sicuri al 100% 111 00:04:11,530 --> 00:04:13,135 che tutti i dati ti saranno consegnati, 112 00:04:13,135 --> 00:04:14,972 in modo che la canzone risulti perfetta? 113 00:04:14,972 --> 00:04:17,501 Vi presento il nostro nuovo migliore amico: TCP 114 00:04:17,501 --> 00:04:19,889 Transmission Control Protocol (protocollo di controllo della trasmissione). 115 00:04:19,889 --> 00:04:23,720 Il TCP gestisce l'invio e la ricezione di tutti i tuoi dati organizzati in pacchetti. 116 00:04:23,720 --> 00:04:26,520 Pensa a lui come il servizio di posta raccomandata con ricevuta di ritorno. 117 00:04:26,520 --> 00:04:28,974 Quando richiedi una canzone tramite il tuo dispositivo, 118 00:04:28,974 --> 00:04:31,900 Spotify invia una canzone suddivisa in tanti pacchetti. 119 00:04:32,660 --> 00:04:34,100 Quando i pacchetti arrivano, 120 00:04:34,100 --> 00:04:35,790 il TCP fa un inventario completo 121 00:04:35,790 --> 00:04:38,740 e manda indietro una ricevuta per ogni pacchetto arrivato. 122 00:04:39,560 --> 00:04:41,192 Se tutti i pacchetti sono arrivati, 123 00:04:41,192 --> 00:04:43,640 il TCP firma una ricevuta ed il processo è concluso. 124 00:04:43,640 --> 00:04:48,930 [Musica] 125 00:04:48,930 --> 00:04:50,380 [Musica interrotta bruscamente] 126 00:04:50,380 --> 00:04:53,110 Se invece il TCP si accorge che mancano alcuni pacchetti, 127 00:04:53,110 --> 00:04:54,150 non firmerà, 128 00:04:54,150 --> 00:04:56,520 altrimenti la canzone potrebbe suonare male 129 00:04:56,520 --> 00:04:58,920 o essere incompleta. 130 00:04:58,920 --> 00:05:00,920 Per ogni pacchetto mancante o incompleto 131 00:05:00,920 --> 00:05:02,720 Spotify tenterà un nuovo invio. 132 00:05:02,720 --> 00:05:04,350 Se questa volta il TCP verificherà 133 00:05:04,350 --> 00:05:07,219 la corretta consegna di tutti i pacchetti della canzone, 134 00:05:07,219 --> 00:05:09,420 questa potrà finalmente cominciare a suonare (altrimenti la procedura si ripeterà). 135 00:05:09,420 --> 00:05:11,860 [La musica ricomincia] 136 00:05:11,860 --> 00:05:14,466 Ciò che è grandioso del TCP e del sistema di instradamento (routing) 137 00:05:14,466 --> 00:05:15,794 è che sono scalabili. 138 00:05:15,794 --> 00:05:18,539 Possono funzionare con 8 o con 8 miliardi di dispositivi. 139 00:05:18,539 --> 00:05:21,230 Anzi, proprio per via di questi principi di tolleranza agli errori 140 00:05:21,230 --> 00:05:22,149 e di ridondanza, 141 00:05:22,149 --> 00:05:23,402 più router ci sono, 142 00:05:23,402 --> 00:05:25,600 più affidabile diventa Internet. 143 00:05:25,600 --> 00:05:26,860 Un altro aspetto grandioso 144 00:05:26,860 --> 00:05:28,465 è che possiamo far crescere Internet 145 00:05:28,465 --> 00:05:31,210 senza interrompere il servizio a chiunque lo stia usando. 146 00:05:31,800 --> 00:05:34,672 Internet è fatto di centinaia di migliaia di reti 147 00:05:34,672 --> 00:05:36,220 e di miliardi di computer 148 00:05:36,220 --> 00:05:38,820 e altri dispositivi fisicamente connessi. 149 00:05:38,820 --> 00:05:41,157 Questi differenti sistemi che compongono Internet 150 00:05:41,157 --> 00:05:42,500 sono connessi gli uni agli altri, 151 00:05:42,500 --> 00:05:44,160 comunicano gli uni con gli altri, 152 00:05:44,160 --> 00:05:45,580 e riescono a lavorare insieme 153 00:05:45,580 --> 00:05:47,760 grazie al fatto di condividere alcuni standard 154 00:05:47,760 --> 00:05:51,000 su come i dati devono essere inviati su Internet. 155 00:05:51,000 --> 00:05:52,230 I dispositivi 156 00:05:52,230 --> 00:05:54,108 o i router disposti lungo tutta la rete Internet 157 00:05:54,108 --> 00:05:56,250 permettono a tutti i pacchetti di trovare la loro strada 158 00:05:56,250 --> 00:05:58,570 per la destinazione ove verranno ri-assemblati, 159 00:05:58,570 --> 00:06:01,200 e, se necessario, riordinati. 160 00:06:01,200 --> 00:06:04,100 Tutto ciò avviene miliardi di volte al giorno, 161 00:06:04,100 --> 00:06:07,085 sia che tu o chiunque altro stiate inviando un'email, 162 00:06:07,085 --> 00:06:08,736 visitando una pagina web, 163 00:06:08,736 --> 00:06:10,150 facendo una video-chat, 164 00:06:10,150 --> 00:06:11,480 usando una app per smartphone, 165 00:06:11,480 --> 00:06:13,920 o anche quando sensori o dispositivi connessi a Internet 166 00:06:13,920 --> 00:06:15,450 dialogano gli uni con gli altri.