1 00:00:00,000 --> 00:00:03,395 >> [MUSIC SPILLE] 2 00:00:03,395 --> 00:00:13,100 3 00:00:13,100 --> 00:00:15,570 >> DAVID J. MALAN: Så jeg bare ønsket å lindre til. 4 00:00:15,570 --> 00:00:18,260 Jeg ville ekko nøyaktig hva Scaz sa om institusjonell hukommelse. 5 00:00:18,260 --> 00:00:20,350 CS50 har eksistert i rundt 20 år på Harvard. 6 00:00:20,350 --> 00:00:22,280 Og realiteten er, fra de eldre på ned, 7 00:00:22,280 --> 00:00:25,045 det er årlig forsikring at freshmen, de sophomores, 8 00:00:25,045 --> 00:00:26,870 og juniorer og også de eldre tar 9 00:00:26,870 --> 00:00:30,360 CS50, at du ender opp med å gjøre fine. 10 00:00:30,360 --> 00:00:32,680 >> Realiteten er, studenter ikke mislykkes CS50. 11 00:00:32,680 --> 00:00:35,740 Faktisk, i sjeldne tilfeller hvor vi har hatt Es eller Fs, 12 00:00:35,740 --> 00:00:37,990 det har virkelig vært på grunn av formildende omstendigheter, 13 00:00:37,990 --> 00:00:39,840 enten det er medisinsk eller personlig. 14 00:00:39,840 --> 00:00:41,830 Ds er utrolig uvanlig i tillegg. 15 00:00:41,830 --> 00:00:45,270 Og jeg kan si komfortabelt, selv om vi vanligvis ikke avsløre statistikk, 16 00:00:45,270 --> 00:00:48,450 men gitt at det ikke er noen institusjonell hukommelse her overhodet, 17 00:00:48,450 --> 00:00:51,810 et flertall av elevene i CS50 ender opp med å få en rekke karakterer. 18 00:00:51,810 --> 00:00:54,720 En betydelig del ender opp havne i B serien også. 19 00:00:54,720 --> 00:00:57,490 >> Så selv om du kanskje være likhetstegn i tankene dine treere 20 00:00:57,490 --> 00:01:00,690 med 60% og dermed Ds, eller Cs, eller lignende, 21 00:01:00,690 --> 00:01:02,530 det virkelig ikke stille opp med virkeligheten. 22 00:01:02,530 --> 00:01:05,238 Faktisk menes hva vi si ved begynnelsen av perioden 23 00:01:05,238 --> 00:01:08,380 at så mange studenter i CS50, både i Cambridge og her i New Haven, 24 00:01:08,380 --> 00:01:10,220 har aldri tatt en CS kurs før. 25 00:01:10,220 --> 00:01:13,090 Og hva faktisk til slutt teller er hvor du ender opp i uke 12 26 00:01:13,090 --> 00:01:15,882 i forhold til deg selv i uke null. 27 00:01:15,882 --> 00:01:17,590 Nå har vi flere sporer i kurset 28 00:01:17,590 --> 00:01:20,548 som du know-- mindre komfortabel, mer komfortabel, et sted i mellom. 29 00:01:20,548 --> 00:01:23,790 Og ja, når du får statistikk på denne ukens quiz, 30 00:01:23,790 --> 00:01:27,460 ikke mist motet om, spesielt hvis du føler at du er rundt gjennomsnittet 31 00:01:27,460 --> 00:01:30,780 eller under den midlere eller median, spesielt siden vi ikke nødvendigvis 32 00:01:30,780 --> 00:01:33,560 ta alle de demografiske hensyn til mid-semester 33 00:01:33,560 --> 00:01:35,000 med gradering statistikk. 34 00:01:35,000 --> 00:01:37,250 >> Med andre ord, vi vet statistisk hvert år 35 00:01:37,250 --> 00:01:39,570 at studenter som er mindre komfortable, gjøre litt verre på quiz. 36 00:01:39,570 --> 00:01:42,050 Og studenter som er mer komfortabel gjøre litt bedre på quiz. 37 00:01:42,050 --> 00:01:45,430 Men per dette løftet i pensum og også i den første uken av forelesninger, 38 00:01:45,430 --> 00:01:46,880 vi tar alt dette i betraktning. 39 00:01:46,880 --> 00:01:48,900 >> Faktisk, på år ende, hva vi ender opp med å gjøre 40 00:01:48,900 --> 00:01:52,154 er å normalisere alle poeng over seksjoner, både i Cambridge 41 00:01:52,154 --> 00:01:54,570 og nå her i New Haven, noe som betyr at det tas hensyn 42 00:01:54,570 --> 00:01:57,310 de ulike stiler, den uensartede hardhet, de forskjellige sorter 43 00:01:57,310 --> 00:02:00,722 personligheter som den enkelte TAs har her og i Cambridge 44 00:02:00,722 --> 00:02:02,930 slik at du ikke sitter ved en ulempe selv om du bare 45 00:02:02,930 --> 00:02:06,120 tilfeldigvis har hatt en TF eller en TA som har vært litt tøffere på deg 46 00:02:06,120 --> 00:02:07,170 i dine tanker. 47 00:02:07,170 --> 00:02:10,139 >> To, tar vi hensyn til komfort nivå og faktiske bakgrunnen, eller mangel 48 00:02:10,139 --> 00:02:13,310 disse, når du tar quiz score i betraktning. 49 00:02:13,310 --> 00:02:14,830 Så de to er tatt i. 50 00:02:14,830 --> 00:02:17,142 Og ved slutten av dagen, fordi det er alltid tilfelle 51 00:02:17,142 --> 00:02:19,100 at en elev endte opp i en mindre behagelig seksjon 52 00:02:19,100 --> 00:02:24,250 når han eller hun egentlig tilhørte i en mellom eller vice versa, 53 00:02:24,250 --> 00:02:26,230 alt er så utrolig individualisert. 54 00:02:26,230 --> 00:02:29,560 Faktisk, vil du få irritert på oss på slutten av perioden når vi er sent 55 00:02:29,560 --> 00:02:32,630 sende inn dine karakterer fordi med Scaz, og Jason, og Andy, og jeg, 56 00:02:32,630 --> 00:02:35,430 og teamet vil ha gjort i Cambridge er bokstavelig talt 57 00:02:35,430 --> 00:02:38,480 har hundrevis av e-poster og frem med all hundre av kursene 58 00:02:38,480 --> 00:02:41,279 TAS, her og i Cambridge, spør dem hva 59 00:02:41,279 --> 00:02:44,070 de tenker på alle sine studenter basert på et utkast av karakterene. 60 00:02:44,070 --> 00:02:46,230 Og alt der etter er utrolig individualisert. 61 00:02:46,230 --> 00:02:49,230 Så i den grad vi blir kjent med deg i kontortiden, seksjoner og mer, 62 00:02:49,230 --> 00:02:51,350 alt av det også er tatt hensyn til. 63 00:02:51,350 --> 00:02:55,210 >> Så selv om vi har en tendens til å bruke denne fem punkts skala, please, løsrive deg 64 00:02:55,210 --> 00:02:57,492 fra antagelsen om at et tre er faktisk en 60%. 65 00:02:57,492 --> 00:02:58,450 Den er ment å være god. 66 00:02:58,450 --> 00:03:01,360 Og undervisningsassistenter belastes ved semesterstart 67 00:03:01,360 --> 00:03:04,050 å prøve å holde score i toere og treere, 68 00:03:04,050 --> 00:03:06,590 og firere varierer slik at vi faktisk har plass til å vokse. 69 00:03:06,590 --> 00:03:08,610 Og vi har faktisk en målestokk som 70 00:03:08,610 --> 00:03:11,086 Vi kan gi deg nyttig tilbakemelding på hvordan du gjør 71 00:03:11,086 --> 00:03:12,210 og hvordan du utvikler. 72 00:03:12,210 --> 00:03:15,130 Så vennligst ta det til hjertet. 73 00:03:15,130 --> 00:03:20,565 >> Er det noen spørsmål jeg kan hjelpe adresse eller bekymringer jeg kan hjelpe lindre? 74 00:03:20,565 --> 00:03:23,800 Eller løfter jeg kan prøve å holde? 75 00:03:23,800 --> 00:03:24,690 Nei? 76 00:03:24,690 --> 00:03:25,330 OK. 77 00:03:25,330 --> 00:03:26,010 >> Greit. 78 00:03:26,010 --> 00:03:28,970 Så med det sagt, dette er CS50. 79 00:03:28,970 --> 00:03:31,670 Dette er starten på uken seks her i New Haven. 80 00:03:31,670 --> 00:03:33,820 La oss begynne med en kort dimming av lysene 81 00:03:33,820 --> 00:03:37,439 å sette scenen for dagens innhold. 82 00:03:37,439 --> 00:03:38,105 [VIDEO PLAYBACK] 83 00:03:38,105 --> 00:03:44,045 [MUSIC SPILLE] 84 00:03:44,045 --> 00:03:46,600 -Han Kom med et budskap. 85 00:03:46,600 --> 00:03:50,300 86 00:03:50,300 --> 00:03:52,900 Med en protokoll all sin egen. 87 00:03:52,900 --> 00:04:06,417 88 00:04:06,417 --> 00:04:13,090 Han kom til en verden av kule brannmurer, uncaring rutere, og farer langt verre 89 00:04:13,090 --> 00:04:16,079 at døden. 90 00:04:16,079 --> 00:04:21,079 Han er rask, han er sterk, han er TCP / IP. 91 00:04:21,079 --> 00:04:23,120 Og han har adressen din. 92 00:04:23,120 --> 00:04:25,820 93 00:04:25,820 --> 00:04:29,268 Warriors av nettet. 94 00:04:29,268 --> 00:04:29,917 >> [END PLAYBACK] 95 00:04:29,917 --> 00:04:31,000 DAVID J. MALAN: All right. 96 00:04:31,000 --> 00:04:32,030 Dette er CS50. 97 00:04:32,030 --> 00:04:33,820 Dette er starten på uken seks. 98 00:04:33,820 --> 00:04:37,270 Og dette er starten på vår utseende på internett og web-programmering. 99 00:04:37,270 --> 00:04:41,220 Og, kanskje mest spennende, i dag markerer overgangen for oss 100 00:04:41,220 --> 00:04:43,780 fra vår kommandolinje verden av C til nettet 101 00:04:43,780 --> 00:04:47,020 basert verden av PHP og HTML, og CSS, og SQL, og Javascript, 102 00:04:47,020 --> 00:04:49,800 og så mye mer som er på horisonten. 103 00:04:49,800 --> 00:04:53,390 >> Men først, har det kommet til vår oppmerksomhet i å vandre over campus at det 104 00:04:53,390 --> 00:04:57,914 er en viss bad her i New Haven kalt Harvard rom, som 105 00:04:57,914 --> 00:04:59,080 er litt grått her. 106 00:04:59,080 --> 00:05:03,830 Men ja, noen gikk til den tiden og bekostning av etsing i Harvard rom 107 00:05:03,830 --> 00:05:05,700 på dette her rommet. 108 00:05:05,700 --> 00:05:07,790 Takk for det. 109 00:05:07,790 --> 00:05:11,020 Jeg kan ikke si at vi har en analog i Cambridge ennå, 110 00:05:11,020 --> 00:05:14,060 men jeg tror vi har et lite prosjekt for oss nå når vi går tilbake. 111 00:05:14,060 --> 00:05:15,890 Så takk for det. 112 00:05:15,890 --> 00:05:18,340 >> Så en rask se tilbake på der vi slapp forrige uke 113 00:05:18,340 --> 00:05:21,010 og hvor du skal dette komme uke med problemer satt fem. 114 00:05:21,010 --> 00:05:24,350 Så i oppgavesettet fem, vil du være utfordret til å gjennomføre en stavekontroll. 115 00:05:24,350 --> 00:05:26,630 Og for å gjøre det, vil du være levert en ganske stor tekst 116 00:05:26,630 --> 00:05:29,160 fil med som 140.000 engelske ord. 117 00:05:29,160 --> 00:05:32,610 Og du vil bli utfordret til å bestemme på en datastruktur som du 118 00:05:32,610 --> 00:05:35,340 ønsker å laste ned alle disse ordene i minnet, og inn i RAM, 119 00:05:35,340 --> 00:05:38,470 og deretter implementere noen funksjoner, hvorav den ene kommer til å være kontrollere. 120 00:05:38,470 --> 00:05:41,555 Der når passerte et argument, et ord, funksjon sjekken 121 00:05:41,555 --> 00:05:43,430 rett og slett er nødt til å si sant eller usant, 122 00:05:43,430 --> 00:05:44,990 dette er et ord i ordlisten. 123 00:05:44,990 --> 00:05:47,110 >> Men du kommer til å ha noen utforming skjønn og utfordringer 124 00:05:47,110 --> 00:05:48,568 når det gjelder å iverksette dette. 125 00:05:48,568 --> 00:05:51,250 I det enkleste implementering du kunne sikkert 126 00:05:51,250 --> 00:05:53,960 implementere en stavekontroll i den underliggende ordboken 127 00:05:53,960 --> 00:05:55,380 med hva slags datastruktur? 128 00:05:55,380 --> 00:05:57,796 Du trenger bare å lagre en hel haug med strenger i minnet? 129 00:05:57,796 --> 00:06:00,074 Hva er farten for å svare fra uke to kanskje? 130 00:06:00,074 --> 00:06:00,740 PUBLIKUM: Array. 131 00:06:00,740 --> 00:06:01,500 DAVID J. MALAN: Du kan bruke en matrise. 132 00:06:01,500 --> 00:06:02,750 Og det er ikke så ille. 133 00:06:02,750 --> 00:06:05,631 Men du trenger ikke nødvendigvis vite på forhånd hvor stor av en matrise 134 00:06:05,631 --> 00:06:08,630 du kommer til å trenge, hvis du ikke gjør det vet filen nødvendigvis på forhånd. 135 00:06:08,630 --> 00:06:10,110 Så du er nødt til å bruke litt lureri 136 00:06:10,110 --> 00:06:11,970 som malloc, som vi begynte å bruke. 137 00:06:11,970 --> 00:06:13,977 Eller vi kan ta opp som gjelder ved bruk av 138 00:06:13,977 --> 00:06:16,810 hva andre datastruktur som er vært liksom en marginal forbedring 139 00:06:16,810 --> 00:06:17,894 på en matrise? 140 00:06:17,894 --> 00:06:18,810 PUBLIKUM: Lenket liste. 141 00:06:18,810 --> 00:06:21,270 DAVID J. MALAN: Som en koblet liste, hvor vi får noen dynamikk. 142 00:06:21,270 --> 00:06:22,686 Men det er litt mer regning. 143 00:06:22,686 --> 00:06:24,150 Vi har pekere til å opprettholde. 144 00:06:24,150 --> 00:06:25,890 Og du ennå ikke har kodet dette opp, men det er definitivt 145 00:06:25,890 --> 00:06:28,473 å være litt mer kompleksitet enn bare å bruke hakeparenteser 146 00:06:28,473 --> 00:06:30,080 og hoppe rundt en matrise. 147 00:06:30,080 --> 00:06:33,340 >> Men en rekke løper tid, Hvis du søker etter et ord, 148 00:06:33,340 --> 00:06:34,179 kanskje logge av n. 149 00:06:34,179 --> 00:06:35,970 Men igjen, kan det være en liten ikke-triviell 150 00:06:35,970 --> 00:06:38,734 til å bygge opp den oppstillingen ikke å vite størrelsen på forhånd. 151 00:06:38,734 --> 00:06:41,150 En lenket liste skjønt, hvis du bare lagre en haug med strenger 152 00:06:41,150 --> 00:06:43,300 i en lenket liste, hva er din øvre grense 153 00:06:43,300 --> 00:06:46,920 på kjøretiden kommer til å være å søke for eller sjekke et ord på den listen? 154 00:06:46,920 --> 00:06:47,700 >> PUBLIKUM: n. 155 00:06:47,700 --> 00:06:50,575 >> DAVID J. MALAN: Yeah, big O av n eller lineær fordi i verste fall 156 00:06:50,575 --> 00:06:52,640 ordet er som en Z ord helt på slutten. 157 00:06:52,640 --> 00:06:55,350 Og på grunn av en lenket liste, fordi disse pilene som standard, 158 00:06:55,350 --> 00:06:58,280 i en enkeltvis lenket liste, bare gå fra en retning til den andre, 159 00:06:58,280 --> 00:06:59,590 du kan ikke hoppe rundt. 160 00:06:59,590 --> 00:07:01,160 Du må følge dem alle. 161 00:07:01,160 --> 00:07:05,505 >> Så vi foreslo i slutten av forrige uke, uke fem, at det finnes bedre måter. 162 00:07:05,505 --> 00:07:08,727 Og faktisk, den hellige gral ville virkelig være konstant tid 163 00:07:08,727 --> 00:07:10,560 der når du vil å slå opp et ord, du 164 00:07:10,560 --> 00:07:13,370 få en umiddelbar svar uansett hvor mange ord er allerede 165 00:07:13,370 --> 00:07:14,350 i ordlisten. 166 00:07:14,350 --> 00:07:17,680 >> Dette er en kunstners gjengivelse av hva du kan kalle en hash table. 167 00:07:17,680 --> 00:07:21,900 Og en hash table er slags en fin amalgam av en array-- trukket vertikalt 168 00:07:21,900 --> 00:07:26,416 her, bare because-- og deretter en knyttet list-- trekke horisontalt her. 169 00:07:26,416 --> 00:07:28,790 Og hash tabell kan være implementert i bunter av måter. 170 00:07:28,790 --> 00:07:34,110 Dette utdraget fra en lærebok skjer å bruke disse folks fødselsdatoer 171 00:07:34,110 --> 00:07:38,940 som de midler som det er å avgjøre hvor du skal sette noens navn. 172 00:07:38,940 --> 00:07:41,230 Så dette er en ordbok hvis du vil av navnene. 173 00:07:41,230 --> 00:07:45,240 Og for å påskynde sette Navnene i denne datastrukturen, 174 00:07:45,240 --> 00:07:49,280 de ser på, tilsynelatende, disse folks fødsel datoer med hensyn til en måned. 175 00:07:49,280 --> 00:07:50,570 >> Så det er 1 til 31. 176 00:07:50,570 --> 00:07:52,910 Og glemme februar og hjørne tilfeller sånn. 177 00:07:52,910 --> 00:07:57,050 Og hvis bursdagen din er januar 1, eller 1. februar eller 1. desember 178 00:07:57,050 --> 00:07:59,890 du kommer til å ende opp på den aller første kjeden opp toppen. 179 00:07:59,890 --> 00:08:02,150 Hvis din fødselsdato er som den 25. i en måned, 180 00:08:02,150 --> 00:08:04,567 du kommer til å ende opp på bøtte nummer 25. 181 00:08:04,567 --> 00:08:07,400 Og hvis det er allerede noen der i noen av disse steder, hvilken 182 00:08:07,400 --> 00:08:10,470 du begynner å gjøre med disse knyttes listene sy dem sammen 183 00:08:10,470 --> 00:08:14,320 slik at du kan ha en vilkårlig antall personer, eller noe, 184 00:08:14,320 --> 00:08:15,580 på det stedet. 185 00:08:15,580 --> 00:08:18,400 >> Så har du en slags blanding av konstant tid for hashing. 186 00:08:18,400 --> 00:08:21,160 Og til hasj noe betyr å tar som input som en person, 187 00:08:21,160 --> 00:08:25,360 eller hans eller hennes navn, eller hans eller hennes fødsel dato, og deretter bestemme om noen utgang 188 00:08:25,360 --> 00:08:29,780 basert på det, som å se på deres bursdag og sender ut en gjennom 31. 189 00:08:29,780 --> 00:08:31,900 >> Så kan dere ha litt av lineær tid, 190 00:08:31,900 --> 00:08:34,429 men i virkeligheten, og som i Når det gjelder problemet satt fem, 191 00:08:34,429 --> 00:08:36,220 Vi kommer ikke til å være arbeider i P satt five 192 00:08:36,220 --> 00:08:40,059 så mye om asymptotic løping tid, som den teoretiske treghet 193 00:08:40,059 --> 00:08:41,809 med en algoritme som kan kjøre. 194 00:08:41,809 --> 00:08:44,330 Vi kommer til å bry seg om det faktiske antall sekunder 195 00:08:44,330 --> 00:08:47,350 og den faktiske mengden minne, det faktiske antall byte minne 196 00:08:47,350 --> 00:08:48,140 du bruker. 197 00:08:48,140 --> 00:08:52,710 Så ærlig, å ha en stor kjede av som en million mennesker 198 00:08:52,710 --> 00:08:56,710 er ganske jævla treg hvis du søker etter et navn i en liste over størrelse millioner. 199 00:08:56,710 --> 00:08:59,830 >> Men hva hvis du deler den listen opp i 31 deler? 200 00:08:59,830 --> 00:09:04,400 Søke 1/31 av det super lang liste, i virkeligheten, 201 00:09:04,400 --> 00:09:05,741 er sikkert kommer til å være raskere. 202 00:09:05,741 --> 00:09:07,240 Asymptotisk, er det det samme. 203 00:09:07,240 --> 00:09:08,860 Du bare dele med en konstant faktor. 204 00:09:08,860 --> 00:09:10,651 Og minner om at vi kaste disse tingene unna. 205 00:09:10,651 --> 00:09:13,486 Men i virkeligheten, det kommer å være 31 ganger raskere. 206 00:09:13,486 --> 00:09:16,110 Og det er det vi kommer til å begynner å utnytte i P satt fem. 207 00:09:16,110 --> 00:09:18,750 >> Så P satt five altfor også foreslår at du vurderer 208 00:09:18,750 --> 00:09:21,810 litt mer sofistikert datastruktur kalt en trie. 209 00:09:21,810 --> 00:09:24,420 Og en trie er bare en tre som datastruktur. 210 00:09:24,420 --> 00:09:26,672 Men i stedet for å ha små sirkler eller rektangler 211 00:09:26,672 --> 00:09:28,380 når vi holder tegning for noder, er det faktisk 212 00:09:28,380 --> 00:09:30,840 har hele arrays for sine noder. 213 00:09:30,840 --> 00:09:33,430 Og selv om dette er en litt abstrakt her for å se på, 214 00:09:33,430 --> 00:09:35,450 Zamyla i P sett walk gjennom vil lede deg 215 00:09:35,450 --> 00:09:37,580 gjennom nærmere på dette. 216 00:09:37,580 --> 00:09:39,980 Dette er en datastruktur at heller smart 217 00:09:39,980 --> 00:09:44,130 kan ha hver node være en matrise av størrelse 26, A til og med Z eller null 218 00:09:44,130 --> 00:09:45,320 gjennom 25. 219 00:09:45,320 --> 00:09:49,260 Og når du ønsker å sette inn en persons nevne i denne datastruktur eller finne 220 00:09:49,260 --> 00:09:53,990 ham eller henne, hva du gjør, hvis navn er som Maxwell, M-A-X-W-E-L-L, 221 00:09:53,990 --> 00:09:57,900 du først se på M. Og så hoppe til den tilsvarende M plassering 222 00:09:57,900 --> 00:09:59,100 i den første rekken. 223 00:09:59,100 --> 00:10:02,400 Du kan deretter hoppe til A, den første sted i den neste rekke, 224 00:10:02,400 --> 00:10:03,610 følge pilene. 225 00:10:03,610 --> 00:10:08,300 Så X, deretter W, deretter E, deretter L, deretter L, og så kanskje noen spesiell slutten 226 00:10:08,300 --> 00:10:11,850 karakter, noen sentinel som sier et ord stopper her. 227 00:10:11,850 --> 00:10:14,780 >> Og hva er fint om dette-- og husk at bildet her, 228 00:10:14,780 --> 00:10:16,797 Legg merke til hvordan kantene hver gruppe er avskåret. 229 00:10:16,797 --> 00:10:19,630 Det er bare fordi denne tingen ville være massiv og forferdelige å se 230 00:10:19,630 --> 00:10:20,338 på på skjermen. 231 00:10:20,338 --> 00:10:21,820 Så det er hentet. 232 00:10:21,820 --> 00:10:25,920 Hva er fint om denne tilnærmingen er at hvis det er en million navn allerede 233 00:10:25,920 --> 00:10:30,890 i dette datastruktur, hvor mange skritt tar det meg å sette Maxwell? 234 00:10:30,890 --> 00:10:36,450 M-A-X-W-E-L-L-- som syv-ish fremgangsmåten for å sette inn eller lete etter Maxwell. 235 00:10:36,450 --> 00:10:39,320 >> Anta at det finnes en trillion navnene i denne datastruktur. 236 00:10:39,320 --> 00:10:41,900 Hvor mange skritt tar det meg å se etter Maxwell? 237 00:10:41,900 --> 00:10:43,450 M-A-X- fortsatt syv. 238 00:10:43,450 --> 00:10:45,770 >> Og der ligger såkalt konstant tid. 239 00:10:45,770 --> 00:10:47,960 Hvis vi antar at ord er sikkert avgrenset 240 00:10:47,960 --> 00:10:52,150 av 20 tegn, eller 46 tegn, eller noen rimelig liten heltall, 241 00:10:52,150 --> 00:10:53,790 da er det effektivt en konstant. 242 00:10:53,790 --> 00:10:57,790 Og så innsetting og søking en trie er super rask. 243 00:10:57,790 --> 00:10:59,540 Selvfølgelig, vi aldri få noe gratis. 244 00:10:59,540 --> 00:11:02,740 Og selv om du sannsynligvis har ikke prøvd seg på P satt five ennå, 245 00:11:02,740 --> 00:11:06,596 hvilken pris er vi sannsynligvis betaler for å få det større effektivitet gang lurt? 246 00:11:06,596 --> 00:11:07,470 >> PUBLIKUM: Minne. 247 00:11:07,470 --> 00:11:08,390 >> DAVID J. MALAN: Memory, ikke sant? 248 00:11:08,390 --> 00:11:10,240 Jeg mener, vi har ikke trukket hele bildet her. 249 00:11:10,240 --> 00:11:12,823 Dette utdraget fra læreboka har ikke tegnet alle matriser. 250 00:11:12,823 --> 00:11:16,687 Det er en enorm mengde minne og bare null pekere som ikke blir brukt. 251 00:11:16,687 --> 00:11:17,520 Så det er en trade off. 252 00:11:17,520 --> 00:11:21,050 Og det vil bli overlatt til deg i P satt five å bestemme seg for hvilken vei du vil gå. 253 00:11:21,050 --> 00:11:24,460 >> Nå er denne ideen om hashing, som en til side, er faktisk super utbredt. 254 00:11:24,460 --> 00:11:27,980 Så til hasj en verdi midler, ganske Enkelt å ta noe som input 255 00:11:27,980 --> 00:11:29,220 og produsere en utgang. 256 00:11:29,220 --> 00:11:31,270 Så en hash funksjon er bare en algoritme. 257 00:11:31,270 --> 00:11:34,990 >> Og generelt, en hash funksjoner formål i livet er å ta noe som input 258 00:11:34,990 --> 00:11:39,655 og produsere et tall som utgang, som nummer én gjennom 31 eller A til Z, 259 00:11:39,655 --> 00:11:40,960 null gjennom 25. 260 00:11:40,960 --> 00:11:44,250 Så det tar en kompleks utgang og krymper det ned til noe 261 00:11:44,250 --> 00:11:46,310 som er litt mer nyttig og håndterbar. 262 00:11:46,310 --> 00:11:49,250 >> Og så viser det seg i en svært populær funksjon 263 00:11:49,250 --> 00:11:51,160 at sikkerheten verden og den menneskelige verdens 264 00:11:51,160 --> 00:11:53,060 blitt brukt i årevis kalles SHA1. 265 00:11:53,060 --> 00:11:56,260 Dette er en ganske fancy matematisk formel som gjør egentlig det. 266 00:11:56,260 --> 00:11:58,870 >> Du tar en virkelig stor del av nuller og ones-- 267 00:11:58,870 --> 00:12:01,530 som kan være en megabyte lang, en gigabyte long-- 268 00:12:01,530 --> 00:12:05,930 og det krymper det ned til bare noen få biter, et par biter, 269 00:12:05,930 --> 00:12:09,082 slik at du har en rekke lignende en gjennom 31, eller A til Z. 270 00:12:09,082 --> 00:12:11,540 Men i virkeligheten er det en liten større enn bare A til Z. 271 00:12:11,540 --> 00:12:16,640 >> Dessverre, vi er på cusp av hva noen lekent kalt SHAppening 272 00:12:16,640 --> 00:12:19,840 hvorved verden er i ferd med å ende i trolig noen måneder 273 00:12:19,840 --> 00:12:22,617 tid fordi forskere, bare denne siste uken, 274 00:12:22,617 --> 00:12:25,700 publisert en rapport som i strid med hva sikkerhetsforskere har trodd 275 00:12:25,700 --> 00:12:29,810 i noen tid, ved bare tilbringer om, hva var det, 276 00:12:29,810 --> 00:12:33,420 Jeg tror det var $ 175,000-- mye penger, 277 00:12:33,420 --> 00:12:36,540 men ikke utenfor rekkevidde spesielt slemme skurker, 278 00:12:36,540 --> 00:12:41,560 eller spesielt dårlig countries-- $ 175,000 kunne kjøpe deg en masse leid server 279 00:12:41,560 --> 00:12:42,690 plass i skyen. 280 00:12:42,690 --> 00:12:44,619 Og vi vil komme tilbake til skyen før lenge. 281 00:12:44,619 --> 00:12:47,410 Men det betyr bare leie server plass på som Microsofts servere, 282 00:12:47,410 --> 00:12:50,285 eller Googles eller Amazon, eller som hvor du kan betale ved minutt 283 00:12:50,285 --> 00:12:51,670 å bruke andres datamaskiner. 284 00:12:51,670 --> 00:12:54,250 >> Og det viser seg hvis du kan betale noen andre til å låne sine datamaskiner 285 00:12:54,250 --> 00:12:56,730 og kjøre kode som du har skrevet på det og bruke ganske fancy 286 00:12:56,730 --> 00:13:01,580 matematikk, kan du i hovedsak tall ut hvordan noens hash funksjonen er 287 00:13:01,580 --> 00:13:05,320 arbeider, og gitt sin utgang dekonstruere hva dens inngang er. 288 00:13:05,320 --> 00:13:08,590 Og for dagens formål, nok det å si, dette er dårlig. 289 00:13:08,590 --> 00:13:12,540 Fordi SHA1 og hash funksjoner som det er super vanligvis 290 00:13:12,540 --> 00:13:17,050 brukes i sikkerhetsprogrammer, krypterte tilkoblinger på nettet, 291 00:13:17,050 --> 00:13:21,890 banktransaksjoner, cellular kryptering for mobiltelefoner og lignende. 292 00:13:21,890 --> 00:13:24,880 Og så hver gang noen finner en måte å reversere 293 00:13:24,880 --> 00:13:28,510 ingeniør en av disse teknologiene eller bryte den, kan dårlige ting skje. 294 00:13:28,510 --> 00:13:30,300 >> Nå er verden allerede visste dette. 295 00:13:30,300 --> 00:13:31,310 Dette var påregnelig. 296 00:13:31,310 --> 00:13:34,670 Og verden har siden flyttet fra SHA1 til SHA256, 297 00:13:34,670 --> 00:13:37,320 som er bare en fancy måte sier de bruker større biter. 298 00:13:37,320 --> 00:13:40,570 Og faktisk, selv CS50 egen nettsiden oppgradert i fjor to-- 299 00:13:40,570 --> 00:13:43,290 ikke at vi står overfor alt dette mange trusler prøver å få på PDF-filer 300 00:13:43,290 --> 00:13:46,520 og whatnot-- men CS50 hjemmeside bruker større hash-funksjon, 301 00:13:46,520 --> 00:13:47,980 noe som betyr at vi vil være trygge. 302 00:13:47,980 --> 00:13:50,020 Så alle dine PDF-filer vil være trygg, men ikke 303 00:13:50,020 --> 00:13:52,880 nødvendigvis penger eller noe særlig privat eller personlig 304 00:13:52,880 --> 00:13:53,380 å bruke. 305 00:13:53,380 --> 00:13:56,550 Sp sjekke ut denne nettadressen hvis du hadde som noen ytterligere detaljer. 306 00:13:56,550 --> 00:13:59,840 >> Så problemet satt fem er faktisk i horisonten. 307 00:13:59,840 --> 00:14:01,560 Quiz man er førstkommende onsdag. 308 00:14:01,560 --> 00:14:04,479 Men dra nytte av kontoret timer, både i kveld og i morgen. 309 00:14:04,479 --> 00:14:07,770 Og også dra nytte av kontortiden, hvis du er tilgjengelig, rett etter dette. 310 00:14:07,770 --> 00:14:11,550 De ansatte og jeg vil holde rundt og gjøre mer uformell Q & A i tillegg til i kveld. 311 00:14:11,550 --> 00:14:16,610 Og la meg sterkt merke seg her, for de av oss her i New Haven-- 312 00:14:16,610 --> 00:14:19,360 så det er absolutt per Scaz s bemerkninger følte, jeg er sikker på, 313 00:14:19,360 --> 00:14:21,140 som en bit av en oppoverbakke kamp. 314 00:14:21,140 --> 00:14:24,627 Og ved omdømme, hvis du ikke allerede har lært eller hørt 315 00:14:24,627 --> 00:14:27,710 fra noen venner på Harvard, vet her er noen ny institusjonell hukommelse. 316 00:14:27,710 --> 00:14:30,790 P satt five slags type tendens til å være det vanskeligste i CS50, 317 00:14:30,790 --> 00:14:32,590 eller de mest utfordrende for de fleste studenter. 318 00:14:32,590 --> 00:14:37,180 >> Men hva det betyr er at vi er nesten på toppen av åsen. 319 00:14:37,180 --> 00:14:38,270 Og jeg virkelig mener dette. 320 00:14:38,270 --> 00:14:40,728 Det er den mest utfordrende, men det er også den mest givende 321 00:14:40,728 --> 00:14:43,560 i at i motsetning til de fleste alle andre innledende informatikk 322 00:14:43,560 --> 00:14:47,980 kurs i USA som vi vet om, de fleste studenter ikke fullfører en intro 323 00:14:47,980 --> 00:14:51,400 Kurset har allerede implementert ting som trær, og prøver, 324 00:14:51,400 --> 00:14:52,880 og hash tabeller og lignende. 325 00:14:52,880 --> 00:14:54,770 >> Og så jeg håper, og Vi håper at du er 326 00:14:54,770 --> 00:14:57,280 har en enorm følelse av tilfredshet selv 327 00:14:57,280 --> 00:15:00,760 hvis uke eller to via hvilke du kommer til at tilfredshet 328 00:15:00,760 --> 00:15:02,490 føles litt som dette. 329 00:15:02,490 --> 00:15:05,250 Men la meg forsikre, vi bare har fire P sett igjen. 330 00:15:05,250 --> 00:15:07,380 Så liksom at toppen er i sikte. 331 00:15:07,380 --> 00:15:12,370 >> På den andre siden av det, stole på oss, det er bare bølgende åser og skyer. 332 00:15:12,370 --> 00:15:16,000 Og skal vi si, valper er på den andre siden. 333 00:15:16,000 --> 00:15:18,340 Så er det bare å henge der litt lenger. 334 00:15:18,340 --> 00:15:22,050 Jeg mener, ja vi begynner å overgang inn i verden av web-programmering, 335 00:15:22,050 --> 00:15:26,060 du vil finne at ting become-- Dette er søt faktisk. 336 00:15:26,060 --> 00:15:29,680 337 00:15:29,680 --> 00:15:33,490 OK, vi skal legge denne nettadressen senere. 338 00:15:33,490 --> 00:15:36,140 Du finner også at vi er nå liksom et platå 339 00:15:36,140 --> 00:15:38,150 hvor alt er faktisk fortsatt sofistikert 340 00:15:38,150 --> 00:15:40,170 og utfordrende ved design, men du er ikke 341 00:15:40,170 --> 00:15:42,590 kommer til å føle at vi er stadig går opp denne bakken. 342 00:15:42,590 --> 00:15:44,390 Så ta litt trøst i det. 343 00:15:44,390 --> 00:15:47,409 >> Så uten videre, la oss starte for å gjøre dette markedet overgangen 344 00:15:47,409 --> 00:15:49,950 i semesteret til en verden av nettet, og virkelig verden 345 00:15:49,950 --> 00:15:51,420 som alle av oss er mer kjent. 346 00:15:51,420 --> 00:15:53,753 Vi har fått Internett-enheter i våre lommer, på pultene våre, 347 00:15:53,753 --> 00:15:55,127 i våre ryggsekker og lignende. 348 00:15:55,127 --> 00:15:56,210 Hvordan gjør alt dette arbeidet? 349 00:15:56,210 --> 00:15:59,077 Og hvordan kan vi begynne å skrive kode som ikke er super uforståelige 350 00:15:59,077 --> 00:16:01,910 og i noen blinkende tekst teksten at ingen av dine venner eller familie 351 00:16:01,910 --> 00:16:04,659 noen gang kommer til å ønske å samhandle med, men noe kan du sette 352 00:16:04,659 --> 00:16:06,660 på sine telefoner, eller på sine nettlesere, 353 00:16:06,660 --> 00:16:09,010 eller på noen enheter med som de samhandler. 354 00:16:09,010 --> 00:16:10,430 >> Så her er noens hjem. 355 00:16:10,430 --> 00:16:14,040 Og inne i dette huset er et par bærbare datamaskiner, et par gamle skolen desktop 356 00:16:14,040 --> 00:16:17,470 datamaskiner, noe som kalles en ruter eller hub i midten, 357 00:16:17,470 --> 00:16:20,310 og deretter en slags kabelmodem eller DSL-modem. 358 00:16:20,310 --> 00:16:24,560 Og så er det internett, generelt tegnes som en sky der oppe i himmelen. 359 00:16:24,560 --> 00:16:29,230 >> Så dette bildet, selv om litt slags datert, 360 00:16:29,230 --> 00:16:32,604 fanger absolutt hva de fleste av har du sannsynligvis i deres hjem, 361 00:16:32,604 --> 00:16:35,520 eller effektivt hva dere alle har i dorm rom eller leiligheter, 362 00:16:35,520 --> 00:16:36,480 eller lignende. 363 00:16:36,480 --> 00:16:40,010 >> Så hva som faktisk skjer når du prøver å bruke internett i dag? 364 00:16:40,010 --> 00:16:42,010 Så hver datamaskin på internett, viser det seg, 365 00:16:42,010 --> 00:16:46,860 må ha en unik adresse, mye som vi i den virkelige verden behovet 366 00:16:46,860 --> 00:16:52,050 en postadresse, som 51 Prospect Street, New Haven, Connecticut, eller 33 367 00:16:52,050 --> 00:16:54,170 Oxford Street, Cambridge, Massachusetts. 368 00:16:54,170 --> 00:16:58,520 Så gjør datamaskiner på Internett trenger en måte entydig adressering seg selv. 369 00:16:58,520 --> 00:17:01,180 >> Det er slik at når en datamaskin ønsker å snakke med en annen, 370 00:17:01,180 --> 00:17:04,525 det kan sende en melding og informere mottakeren til hvem 371 00:17:04,525 --> 00:17:05,900 det bør sende svaret tilbake. 372 00:17:05,900 --> 00:17:07,900 Så det gjør bare slags intuitiv følelse kanskje 373 00:17:07,900 --> 00:17:09,980 at alt har en Adressen noe slag. 374 00:17:09,980 --> 00:17:11,240 >> Men hvordan får du en adresse? 375 00:17:11,240 --> 00:17:13,589 Vel, hvis du får her på campus, eller du går hjem 376 00:17:13,589 --> 00:17:15,760 og du slår på bærbar eller stasjonær datamaskin, 377 00:17:15,760 --> 00:17:17,770 og enten koble den til eller koble til Wi-Fi, 378 00:17:17,770 --> 00:17:19,569 det viser seg at det er en spesiell server 379 00:17:19,569 --> 00:17:22,089 på de fleste nettverk kalt en DHCP-server. 380 00:17:22,089 --> 00:17:23,880 Ikke virkelig betyr noe hva dette står for, 381 00:17:23,880 --> 00:17:26,660 men det er Dynamic Host Configuration protokollen, som er like 382 00:17:26,660 --> 00:17:29,760 en fancy måte å si, dette er en datamaskin som enten Yale har, 383 00:17:29,760 --> 00:17:32,600 eller Harvard har, eller Comcast har, eller Verizon har, 384 00:17:32,600 --> 00:17:35,100 eller din bedrift har, hvis formål i livet, 385 00:17:35,100 --> 00:17:38,810 når den hører noen nylig lagt til nettverket, er å si her, 386 00:17:38,810 --> 00:17:40,010 bruke denne adressen. 387 00:17:40,010 --> 00:17:42,790 >> Så vi mennesker ikke trenger å vanskelig kode i våre datamaskiner 388 00:17:42,790 --> 00:17:44,040 hva vår unike adressen er. 389 00:17:44,040 --> 00:17:47,070 Vi slår bare det på, åpner lokk, og en eller annen måte denne serveren 390 00:17:47,070 --> 00:17:52,210 på det lokale nettverket forteller bare meg som adressen min er 51 Prospect Street, eller 33 391 00:17:52,210 --> 00:17:53,940 Oxford Street, eller lignende. 392 00:17:53,940 --> 00:17:56,000 >> Nå er det ikke kommer til å være så detaljert som det. 393 00:17:56,000 --> 00:18:00,210 Heller hva jeg kommer til å få en numerisk adresse som kalles en IP-adresse. 394 00:18:00,210 --> 00:18:01,960 IP betyr internettprotokoll. 395 00:18:01,960 --> 00:18:06,025 Og oddsen er på denne tiden i livet ditt, har du sannsynligvis hørt eller sett ordet IP, 396 00:18:06,025 --> 00:18:08,140 eller generelt kastet den rundt kanskje. 397 00:18:08,140 --> 00:18:10,720 Men faktisk er det ganske rett frem en ting. 398 00:18:10,720 --> 00:18:13,610 >> En IP-adresse er bare en punktumdesimaltallet, 399 00:18:13,610 --> 00:18:17,150 som betyr at det er noe dot noe dot noe dot noe. 400 00:18:17,150 --> 00:18:21,980 Og hver av disse somethings skjer å være et tall mellom 0 og 255. 401 00:18:21,980 --> 00:18:26,710 >> Så basert på fem pluss uker CS50, hvis disse tallene hver rekkevidde fra 0 til 255, 402 00:18:26,710 --> 00:18:28,713 hvor mange biter er hvert av disse talltegn? 403 00:18:28,713 --> 00:18:29,420 >> PUBLIKUM: Eight. 404 00:18:29,420 --> 00:18:30,100 >> DAVID J. MALAN: Det må være åtte. 405 00:18:30,100 --> 00:18:31,933 Så totalt, hvor mange bits er en IP-adresse? 406 00:18:31,933 --> 00:18:32,710 PUBLIKUM: 32. 407 00:18:32,710 --> 00:18:33,820 >> DAVID J. MALAN: So 32. 408 00:18:33,820 --> 00:18:35,830 8 pluss 8 pluss 8 pluss 8 er 32. 409 00:18:35,830 --> 00:18:38,767 Hvor mange totale IP-adresser kan det være i verden? 410 00:18:38,767 --> 00:18:39,600 PUBLIKUM: 4 milliarder. 411 00:18:39,600 --> 00:18:42,410 DAVID J. MALAN: Så omtrent fire milliarder fordi det er to 32 makt. 412 00:18:42,410 --> 00:18:44,410 Og hvis du ikke kan liksom Grok som i tankene dine, 413 00:18:44,410 --> 00:18:47,470 bare vet at 32-biters verdier kan være så stor som 4 milliarder 414 00:18:47,470 --> 00:18:49,140 hvis det er alle positive verdier. 415 00:18:49,140 --> 00:18:52,500 Så det betyr at det er 4 milliarder mulige IP-adresser i verden. 416 00:18:52,500 --> 00:18:55,090 >> Og morsom historie, er typen vi for å kjøre ut av dem. 417 00:18:55,090 --> 00:18:59,720 Og faktisk er det et stort problem i at verden også så dette problemet kommer, 418 00:18:59,720 --> 00:19:03,639 men har ikke nødvendigvis svart på det på den mest rask måte. 419 00:19:03,639 --> 00:19:05,680 Og ja, når du har ferdig CS50 og startet 420 00:19:05,680 --> 00:19:06,950 betalende oppmerksomhet i tech verden, vil du 421 00:19:06,950 --> 00:19:08,520 se dette er svært vanlig tematisk. 422 00:19:08,520 --> 00:19:12,260 >> For eksempel, hvis vi går virkelig gamle skolen i dag, Y2K. 423 00:19:12,260 --> 00:19:13,570 Det var egentlig ikke en overraskelse. 424 00:19:13,570 --> 00:19:15,700 Som alle visste for 1000 år at det 425 00:19:15,700 --> 00:19:20,250 var-- mer enn tusen years-- som som ble til slutt kommer til å skje. 426 00:19:20,250 --> 00:19:23,295 Og ennå, vi gir svar på det veldig mye i siste øyeblikk. 427 00:19:23,295 --> 00:19:24,420 Og det skjer igjen. 428 00:19:24,420 --> 00:19:26,740 Så i dag skal vi snakke om IP versjon 4. 429 00:19:26,740 --> 00:19:29,250 Men vet at verden er endelig å få 430 00:19:29,250 --> 00:19:31,590 rundt for å oppgradere til noe som heter IPv6, 431 00:19:31,590 --> 00:19:34,540 som i stedet for 32-bit adresser, uses-- alle 432 00:19:34,540 --> 00:19:36,443 ønsker å ta en gjetning, hvor mange biter? 433 00:19:36,443 --> 00:19:37,310 >> PUBLIKUM: 64? 434 00:19:37,310 --> 00:19:38,380 >> DAVID J. MALAN: God gjetning, men nei. 435 00:19:38,380 --> 00:19:39,975 Vi endelig prøver å komme i forkant av kurven. 436 00:19:39,975 --> 00:19:40,558 >> PUBLIKUM: 128. 437 00:19:40,558 --> 00:19:43,490 DAVID J. MALAN: 128, som er et jævlig stort antall 438 00:19:43,490 --> 00:19:46,250 IP-adresser, fordi det er som ganger 2, ganger 2, 439 00:19:46,250 --> 00:19:49,620 ganger to, en rekke ganger toere opp fra 4 milliarder. 440 00:19:49,620 --> 00:19:50,530 >> Så hvis nysgjerrig. 441 00:19:50,530 --> 00:19:54,110 Det viser out-- og jeg bare googlet dette å finne denne out-- Yale datamaskiner, 442 00:19:54,110 --> 00:19:58,910 her på Yale, har en tendens til å begynne med disse numbers-- 130,132 dot noe, 443 00:19:58,910 --> 00:20:00,669 og 128,36 dot noe. 444 00:20:00,669 --> 00:20:02,710 Men det er sikkert Unntakene over hele linja 445 00:20:02,710 --> 00:20:05,334 avhengig av hvilken avdeling og bygningen og campus du er på. 446 00:20:05,334 --> 00:20:09,310 Harvard tendens til å ha 140,247, eller 128,103. 447 00:20:09,310 --> 00:20:11,530 Og generelt dette er unyttig informasjon, 448 00:20:11,530 --> 00:20:13,260 men det er noe du kanskje merke til nå. 449 00:20:13,260 --> 00:20:15,593 Når du starter poking rundt innstillingene på datamaskinene, 450 00:20:15,593 --> 00:20:18,540 du kan begynne å legge merke til disse typer mønstre før lenge. 451 00:20:18,540 --> 00:20:23,470 >> Men når du er hjemme og har en Apple AirPort, eller en Linksys-enhet, 452 00:20:23,470 --> 00:20:26,560 eller en D-Link, eller hva det er dine foreldre eller søsken installert 453 00:20:26,560 --> 00:20:28,890 i huset, godt hva har du sannsynligvis 454 00:20:28,890 --> 00:20:30,800 er det som kalles en privat IP-adresse. 455 00:20:30,800 --> 00:20:34,850 Og disse var faktisk en nice, midlertidig løsning 456 00:20:34,850 --> 00:20:38,050 på problemet med løpe kort på IP-adresser. 457 00:20:38,050 --> 00:20:40,382 >> Og hva du kan gjøre med hjemmenettverk, typically-- 458 00:20:40,382 --> 00:20:42,340 og ærlig, selv Yale og Harvard er begynt 459 00:20:42,340 --> 00:20:46,840 å gjøre dette i forskjellige areas-- er du kan gi en hel haug med datamaskiner 460 00:20:46,840 --> 00:20:50,360 én IP-adresse så lenge du setter en spesiell enhet foran dem, 461 00:20:50,360 --> 00:20:52,410 noe som kalles en ruter, eller det kan kalles 462 00:20:52,410 --> 00:20:54,060 en proxy eller en rekke andre ting. 463 00:20:54,060 --> 00:20:56,710 Men en enhet som som har en IP-adresse. 464 00:20:56,710 --> 00:20:59,450 Og deretter bak enhet, i en bygning, 465 00:20:59,450 --> 00:21:03,030 i et hus eller en leilighet, kan være hvilket som helst antall datamaskiner, som alle 466 00:21:03,030 --> 00:21:06,460 ha en IP-adresse som starter med en av disse tallene her. 467 00:21:06,460 --> 00:21:08,590 Og så lenge at datamaskinen vet hvordan å konvertere 468 00:21:08,590 --> 00:21:10,900 offentlige adresse til den private adresse, 469 00:21:10,900 --> 00:21:13,340 alt kan sortere på arbeidet som forventet. 470 00:21:13,340 --> 00:21:17,290 >> Men det motsatte av dette er at hvis du er hjemme, og du har et søsken, 471 00:21:17,290 --> 00:21:19,650 og dere begge er besøke noen nettside, 472 00:21:19,650 --> 00:21:23,520 at nettstedet ikke vet om det er deg eller søsken besøke nettsiden, 473 00:21:23,520 --> 00:21:26,780 fordi man ser ut til å være den samme person fordi alle dine data 474 00:21:26,780 --> 00:21:30,050 går gjennom denne ruteren eller det sentrale punkt. 475 00:21:30,050 --> 00:21:32,220 >> Men nok om disse lavere nivå detaljer. 476 00:21:32,220 --> 00:21:37,770 La oss ta en titt på hvordan IP-adresser noen ganger kommer opp kanskje i media 477 00:21:37,770 --> 00:21:41,370 og hvordan vi kan nå begynne å ødelegge, Oppriktig, enda flere programmer for deg. 478 00:21:41,370 --> 00:21:45,010 Hvis vi kunne dimme lys for noen få sekunder. 479 00:21:45,010 --> 00:21:46,550 >> [VIDEO PLAYBACK] 480 00:21:46,550 --> 00:21:49,310 >> -Det Er en 32-bit på IPP fire adresse. 481 00:21:49,310 --> 00:21:50,650 >> -IP ES internet-- 482 00:21:50,650 --> 00:21:52,800 >> -Private Nettverk, Tamia private nettverk. 483 00:21:52,800 --> 00:22:05,670 484 00:22:05,670 --> 00:22:08,145 Hun er så utrolig. 485 00:22:08,145 --> 00:22:09,630 -Kom På Charlie. 486 00:22:09,630 --> 00:22:11,750 DAVID J. MALAN: Det er et speil IP-adresse. 487 00:22:11,750 --> 00:22:15,093 Hun la oss se hvilke hun gjør i sanntid. 488 00:22:15,093 --> 00:22:16,285 >> [END PLAYBACK] 489 00:22:16,285 --> 00:22:17,130 >> DAVID J. MALAN: OK. 490 00:22:17,130 --> 00:22:18,480 Så noen problemer med dette. 491 00:22:18,480 --> 00:22:22,740 Så en, hva vi ser på her på skjermen 492 00:22:22,740 --> 00:22:25,290 er en kode skrevet på en språk kalt Objective-C, 493 00:22:25,290 --> 00:22:28,020 som er en slags etterfølger til C-språk som vi gjør. 494 00:22:28,020 --> 00:22:30,150 Dette har absolutt ingenting å gjøre med programmering. 495 00:22:30,150 --> 00:22:32,399 Faktisk så godt jeg kan fortelle, dette er et tegneprogram 496 00:22:32,399 --> 00:22:38,360 at noen lastet ned fra internett eller annen måte involverer fargestifter. 497 00:22:38,360 --> 00:22:43,660 >> Kanskje mindre skjerpende er at denne IP-adressen, gyldig eller ugyldig? 498 00:22:43,660 --> 00:22:44,520 >> PUBLIKUM: Ugyldig. 499 00:22:44,520 --> 00:22:48,479 >> DAVID J. MALAN: ugyldige, fordi 275 er selvfølgelig ikke mellom 0 og 255. 500 00:22:48,479 --> 00:22:51,770 Som også er trolig OK skjønt, fordi du ikke ønsker å haug med gale mennesker 501 00:22:51,770 --> 00:22:54,790 som er som å pause TV på deres TiVos og deretter gå inn IP for å se 502 00:22:54,790 --> 00:22:56,290 hvis det er faktisk noe der. 503 00:22:56,290 --> 00:22:58,200 Slik at man er litt mindre skjerpende. 504 00:22:58,200 --> 00:23:00,990 Men innser at også er liksom alle rundt oss. 505 00:23:00,990 --> 00:23:04,980 >> Så selvfølgelig, ingen av oss noen gang egentlig skriver numeriske adresser 506 00:23:04,980 --> 00:23:06,410 inn i våre nettlesere. 507 00:23:06,410 --> 00:23:09,580 Det ville være en slags dårlig ting hvis Google, for å besøke Google, 508 00:23:09,580 --> 00:23:15,060 du måtte gå til 123.46.57.89. 509 00:23:15,060 --> 00:23:17,007 Og hele verden hadde å bare huske det. 510 00:23:17,007 --> 00:23:19,090 Og ærlig talt, har typen vi av sett dette problemet før. 511 00:23:19,090 --> 00:23:24,130 Tilbake i dag når folk ikke har mobiltelefoner og kontaktlister, 512 00:23:24,130 --> 00:23:27,640 og selskapene faktisk still-- faktisk, Jeg antar selskapene fortsatt har 800 513 00:23:27,640 --> 00:23:30,600 tall og like-- men du generelt se tall annonseres 514 00:23:30,600 --> 00:23:36,480 som 1-800-SAMLE, C-O-L-L-E-C-T. Fordi ingen kan virkelig huske, 515 00:23:36,480 --> 00:23:39,754 når du ser en annonse på en buss eller billboard, hva noen nummer er, 516 00:23:39,754 --> 00:23:42,420 men de kan trolig, med høyere sannsynlighet, husker et ord. 517 00:23:42,420 --> 00:23:44,530 >> Så vi vedtatt det samme slags system i verden 518 00:23:44,530 --> 00:23:48,290 av internett, hvorved det er en domenenavnsystemet slik at vi mennesker kan 519 00:23:48,290 --> 00:23:52,340 skriver google.com, facebook.com, yale.edu, harvard.edu, 520 00:23:52,340 --> 00:23:56,140 og la datamaskiner figuren ut hva den tilsvarende IP 521 00:23:56,140 --> 00:23:58,480 Adressen er for et gitt navn. 522 00:23:58,480 --> 00:24:01,620 >> Og måten du gjør dette i virkelige verden er det for $ 10 i året, 523 00:24:01,620 --> 00:24:05,900 kanskje $ 50 i året, kan du kjøpe et domene navn, eller egentlig leie et domenenavn. 524 00:24:05,900 --> 00:24:09,860 Og så den som du betaler å leie dette domenenavnet, 525 00:24:09,860 --> 00:24:14,069 du forteller dem som i verden vet hva din IP-adresse er. 526 00:24:14,069 --> 00:24:16,360 Og vi vil ikke gå inn i disse opplysninger, men mange av dere 527 00:24:16,360 --> 00:24:18,750 måtte ønske, for endelig prosjekter, å faktisk melde seg 528 00:24:18,750 --> 00:24:22,120 for din egen web hosting selskap, enten gratis 529 00:24:22,120 --> 00:24:23,500 eller for et par dollar per måned. 530 00:24:23,500 --> 00:24:26,100 Noen av dere kanskje ønsker å kjøpe, for et par dollar, ditt eget domenenavn, 531 00:24:26,100 --> 00:24:28,900 bare for moro skyld, eller for å starte en bedrift eller et personlig område eller lignende. 532 00:24:28,900 --> 00:24:30,880 >> Og innse at alle av det til slutt vil 533 00:24:30,880 --> 00:24:35,260 koke ned til deg å fortelle verden hva serverens IP-adresse er. 534 00:24:35,260 --> 00:24:37,740 Og så disse DNS servere faktisk ta vare 535 00:24:37,740 --> 00:24:39,910 for å informere resten av verden. 536 00:24:39,910 --> 00:24:41,830 Så alt en DNS-server har, kort sagt, inne 537 00:24:41,830 --> 00:24:44,780 av minnet er som tilsvarer et Google-regneark 538 00:24:44,780 --> 00:24:49,420 eller et Excel-regneark med minst to kolonner, hvorav den ene har navn, 539 00:24:49,420 --> 00:24:52,100 som harvard.edu, og yale.edu, og google.com. 540 00:24:52,100 --> 00:24:55,870 Og den andre kolonnen har den tilsvarende IP-adresse eller IP 541 00:24:55,870 --> 00:24:56,382 adresser. 542 00:24:56,382 --> 00:24:57,590 Og vi kan faktisk se dette. 543 00:24:57,590 --> 00:24:59,881 Så på min Mac-- og du kan gjøre dette på Windows-maskiner 544 00:24:59,881 --> 00:25:04,330 samt-- hvis jeg åpner opp et terminalvindu her, ganske lik den i CD50 IDE, 545 00:25:04,330 --> 00:25:08,190 de fleste datamaskiner har en kommando som heter nslookup, navnetjener se opp. 546 00:25:08,190 --> 00:25:12,380 Og hvis jeg skriver noe i lignende yale.edu og trykk Enter, hva 547 00:25:12,380 --> 00:25:19,250 Jeg skal se om mitt nettverk samarbeider som det gjorde for flere tester før klassen 548 00:25:19,250 --> 00:25:24,584 began-- la oss prøve google.com. 549 00:25:24,584 --> 00:25:26,390 Selvfølgelig nå ingenting fungerer. 550 00:25:26,390 --> 00:25:27,190 Det er flott. 551 00:25:27,190 --> 00:25:30,660 All right, stå ved et øyeblikk. 552 00:25:30,660 --> 00:25:32,100 nslookup google.com. 553 00:25:32,100 --> 00:25:35,570 554 00:25:35,570 --> 00:25:38,660 >> Vel, la oss se om Selve internet-- no. 555 00:25:38,660 --> 00:25:39,700 Det er hva som skjedde. 556 00:25:39,700 --> 00:25:43,090 Oh my god, all right. 557 00:25:43,090 --> 00:25:45,490 Wi-Fi blakk. 558 00:25:45,490 --> 00:25:47,410 >> Hei, ønsker å vite hva min IP-adresse er? 559 00:25:47,410 --> 00:25:49,722 Greit. 560 00:25:49,722 --> 00:25:50,820 YaleSecure. 561 00:25:50,820 --> 00:25:53,330 Dette er hvordan du feilsøker ting som en datamaskin vitenskapsmann. 562 00:25:53,330 --> 00:25:54,617 Vi slår på Wi-Fi off. 563 00:25:54,617 --> 00:25:57,480 564 00:25:57,480 --> 00:25:59,450 OK. 565 00:25:59,450 --> 00:26:02,610 >> Og faktisk, Scaz, gjør du tankene logge oss sikre en? 566 00:26:02,610 --> 00:26:06,246 Ellers flere tester are-- OK, takk du Yale-- eller er i ferd med å bryte. 567 00:26:06,246 --> 00:26:07,370 Jeg ønsker å gå på YaleSecure. 568 00:26:07,370 --> 00:26:09,880 569 00:26:09,880 --> 00:26:11,870 Oh, og kanskje vi skal være OK. 570 00:26:11,870 --> 00:26:12,686 Kanskje vi er tilbake. 571 00:26:12,686 --> 00:26:16,810 572 00:26:16,810 --> 00:26:19,733 Og det er slik, som en datamaskin vitenskapsmann fikse en datamaskin. 573 00:26:19,733 --> 00:26:22,000 [APPLAUSE] 574 00:26:22,000 --> 00:26:23,220 Greit. 575 00:26:23,220 --> 00:26:27,160 Så hvor jeg var innenfor dette såkalt terminal vinduet 576 00:26:27,160 --> 00:26:32,270 og hvis jeg nslookup yale.edu, der vi går. 577 00:26:32,270 --> 00:26:38,350 Så jeg kommer tilbake først IP-adressen DNS-serveren som min laptop bruker. 578 00:26:38,350 --> 00:26:41,610 Så i tillegg til en DHCP-server som vi snakket om et øyeblikk siden forteller 579 00:26:41,610 --> 00:26:44,720 min laptop hva min IP Adressen er, som DHCP-server 580 00:26:44,720 --> 00:26:46,860 forteller meg også hva DNS server som skal brukes. 581 00:26:46,860 --> 00:26:48,860 Ellers ville jeg ha å manuelt skrive dette i. 582 00:26:48,860 --> 00:26:50,359 >> Men det er ikke alt det interessante. 583 00:26:50,359 --> 00:26:54,310 Det jeg bryr meg om er at dette er den IP-adressen til Yale hjemmeside tilsynelatende. 584 00:26:54,310 --> 00:26:55,470 Så faktisk, la oss prøve dette. 585 00:26:55,470 --> 00:27:02,710 La meg gå opp i en nettleser og gå til http: //, og deretter som IP-adresse, 586 00:27:02,710 --> 00:27:04,220 og trykk Enter. 587 00:27:04,220 --> 00:27:06,700 Og la oss se. 588 00:27:06,700 --> 00:27:09,587 Det er hvordan annet du kan besøke Yale nettsider. 589 00:27:09,587 --> 00:27:10,920 Nå er det ikke alle som minneverdig. 590 00:27:10,920 --> 00:27:12,220 Liker, pre-frosh sannsynligvis ikke kommer 591 00:27:12,220 --> 00:27:15,310 å huske denne adressen hvis beskjed om å gå dit etter å ha besøkt. 592 00:27:15,310 --> 00:27:16,580 Men det ser ut til å fungere. 593 00:27:16,580 --> 00:27:21,179 Og så DNS ​​egentlig bare tillater oss å har mye mer menneskevennlige adresser. 594 00:27:21,179 --> 00:27:23,220 Men de gjør ikke nødvendigvis bare gi ett svar. 595 00:27:23,220 --> 00:27:25,640 >> Faktisk, når du er en virkelig store tech selskap, 596 00:27:25,640 --> 00:27:27,620 du sannsynligvis vil har mange servere. 597 00:27:27,620 --> 00:27:29,027 Og selv dette er misvisende. 598 00:27:29,027 --> 00:27:31,110 Så Yale gjør sannsynligvis ikke har bare ett web server. 599 00:27:31,110 --> 00:27:34,150 Google sannsynligvis ikke har bare 10 eller så webservere. 600 00:27:34,150 --> 00:27:36,960 Google spesielt sannsynligvis har tusenvis av webservere 601 00:27:36,960 --> 00:27:40,030 rundt om i verden som kan svare på forespørsler fra folk som oss. 602 00:27:40,030 --> 00:27:43,870 >> Men de bruker også en teknologi som kalles lastbalansering, som lang historie kort, 603 00:27:43,870 --> 00:27:48,810 har bare noen få enheter i verden spre lasten over flere servere. 604 00:27:48,810 --> 00:27:52,320 Så det er litt som et edderkoppnett hvis du vil utsendelse av forespørsler. 605 00:27:52,320 --> 00:27:54,380 Men for nå, er alt som interessant for i dag 606 00:27:54,380 --> 00:27:56,870 er at et domenenavn som google.com selv kan 607 00:27:56,870 --> 00:28:00,100 har flere IP-adresser sånn. 608 00:28:00,100 --> 00:28:04,610 >> Men hvordan gjør alle våre data faktisk få frem og tilbake deretter til slutt? 609 00:28:04,610 --> 00:28:08,320 Vel, det viser seg at det er disse ting kalt rutere på internett. 610 00:28:08,320 --> 00:28:10,980 Og hva er en ruter til grad at du allerede vet? 611 00:28:10,980 --> 00:28:13,730 Og jeg har brukt ordet et par ganger i sammenheng med et hjem, 612 00:28:13,730 --> 00:28:17,155 men på en enkel måte, hva gjør en trådløs ruter? 613 00:28:17,155 --> 00:28:18,780 Gi meg bare en gjetning basert på navnet sitt? 614 00:28:18,780 --> 00:28:20,082 >> PUBLIKUM: Så en vei eller en sti? 615 00:28:20,082 --> 00:28:21,790 DAVID J. MALAN: So det er en vei eller en sti. 616 00:28:21,790 --> 00:28:23,980 Så en rute er en vei eller bane, absolutt. 617 00:28:23,980 --> 00:28:27,000 Og en ruter, slik at en enhet som faktisk ruter informasjon, 618 00:28:27,000 --> 00:28:29,690 ville flytte data mellom punktene A og B. 619 00:28:29,690 --> 00:28:31,920 >> Og så i fact-- og Dette er kanskje når 620 00:28:31,920 --> 00:28:34,510 du google skildringer av rutere på verden, får alt du 621 00:28:34,510 --> 00:28:35,900 er cheesy markedsføring diagrammer. 622 00:28:35,900 --> 00:28:38,550 Og så dette er liksom den mest representative jeg kunne finne 623 00:28:38,550 --> 00:28:39,841 som så mildt interessant. 624 00:28:39,841 --> 00:28:44,170 Hver av disse prikkene eller glimter av håp rundt om i verden representerer en ruter. 625 00:28:44,170 --> 00:28:47,210 Og hver av dem har en linje mellom noen andre ruter. 626 00:28:47,210 --> 00:28:49,090 >> Fordi ja, det er tusenvis, sannsynligvis 627 00:28:49,090 --> 00:28:52,560 millioner av rutere rundt verden, hvorav noen er i våre hjem 628 00:28:52,560 --> 00:28:56,070 og på våre studiesteder, men mye av som er eid av store selskaper 629 00:28:56,070 --> 00:29:00,250 og er innbyrdes forbundet slik at hvis jeg ønsker å sende noen data fra her på Yale 630 00:29:00,250 --> 00:29:04,430 hjem til Cambridge, Yale sannsynligvis har ikke en eneste kabel, absolutt, 631 00:29:04,430 --> 00:29:05,650 gå direkte til Harvard. 632 00:29:05,650 --> 00:29:07,399 Og Yale har ikke en enkelt kabel går 633 00:29:07,399 --> 00:29:10,010 til MIT, eller til Stanford, eller til Berkeley, eller til Google, 634 00:29:10,010 --> 00:29:11,820 eller en rekke destinasjoner. 635 00:29:11,820 --> 00:29:14,760 >> Snarere, Yale og Harvard, og alle andre på internett 636 00:29:14,760 --> 00:29:17,610 har en eller flere rutere koblet til det, kanskje 637 00:29:17,610 --> 00:29:18,810 på periferien av campus. 638 00:29:18,810 --> 00:29:21,690 Slik at når min data vil å forlate Yale campus, 639 00:29:21,690 --> 00:29:24,770 det går til det nærmeste router, som vist ved en av disse punkter. 640 00:29:24,770 --> 00:29:27,940 Og da at ruteren tall ut om å sende det på denne måten, eller på denne måten, 641 00:29:27,940 --> 00:29:33,440 eller denne måten, eller på denne måten basert på en annen tabell i minnet, 642 00:29:33,440 --> 00:29:36,870 en annen Excel-fil eller Google regneark som i en kolonne 643 00:29:36,870 --> 00:29:41,315 sier, hvis din IP-adresse starter med nummer én, gå på denne måten. 644 00:29:41,315 --> 00:29:43,690 Hvis IP-adressen starter med en nummer to, gå den veien. 645 00:29:43,690 --> 00:29:47,040 Og så kan du bryte det ned numerisk å ha ruteren sende 646 00:29:47,040 --> 00:29:49,040 data hver hvilken vei. 647 00:29:49,040 --> 00:29:51,419 >> Og vi kan slags se denne også. 648 00:29:51,419 --> 00:29:54,210 La oss gå videre inn i denne terminalen vinduet igjen, og la meg gå videre 649 00:29:54,210 --> 00:30:00,700 og spore ruten til, la oss si, www.mit.edu, 650 00:30:00,700 --> 00:30:02,970 som er et par hundre miles unna. 651 00:30:02,970 --> 00:30:04,500 Det var egentlig jævla fort. 652 00:30:04,500 --> 00:30:06,290 >> Så hva skjedde? 653 00:30:06,290 --> 00:30:10,360 Så i løpet av bare sju trinn, og på bare fire millisekunder, 654 00:30:10,360 --> 00:30:14,660 Jeg sendte data over Internett herfra ved Yale til MIT. 655 00:30:14,660 --> 00:30:18,240 Hver av disse radene, kan du kanskje gjette representerer hva nå? 656 00:30:18,240 --> 00:30:19,060 >> PUBLIKUM: En ruter. 657 00:30:19,060 --> 00:30:20,101 >> DAVID J. MALAN: En ruter. 658 00:30:20,101 --> 00:30:24,090 Så ja, det ser ut som om det er om sju eller så rutere, 659 00:30:24,090 --> 00:30:29,350 eller seks rutere i mellom meg fysisk i Yale lov skole her 660 00:30:29,350 --> 00:30:31,612 og MIT hjemmeside der borte. 661 00:30:31,612 --> 00:30:34,570 Og hva vi kan fange opp fra dette er som follows-- og la meg rydde opp. 662 00:30:34,570 --> 00:30:38,180 Jeg kommer til å kjøre den med en kommando linje argument av -q en å bare si, 663 00:30:38,180 --> 00:30:39,300 bare gi meg ett søk. 664 00:30:39,300 --> 00:30:40,800 Som standard, gjør spor rute tre. 665 00:30:40,800 --> 00:30:42,350 Og det er derfor vi så bunter av tall. 666 00:30:42,350 --> 00:30:44,850 Jeg vil se færre tall bare for å holde utgangs renere. 667 00:30:44,850 --> 00:30:46,280 Og la oss se hva som skjer. 668 00:30:46,280 --> 00:30:49,220 >> Så uansett grunn, noen på Yale tanken 669 00:30:49,220 --> 00:30:54,130 det ville være morsomt å kalle det din Standard router arubacentral, som 670 00:30:54,130 --> 00:30:57,920 er på vlan eller virtuelle LAN, virtuelle lokal 671 00:30:57,920 --> 00:30:59,810 nettverk 30-- så du sannsynligvis ha minst 672 00:30:59,810 --> 00:31:03,050 29 others-- router.net.yale.internal. 673 00:31:03,050 --> 00:31:06,660 Og .internal her er en slags falsk toppdomene ment å brukes bare 674 00:31:06,660 --> 00:31:07,210 på campus. 675 00:31:07,210 --> 00:31:10,335 Og legg merke til den tilsvarende IP-adressen av at router, uansett hvor den er her 676 00:31:10,335 --> 00:31:13,920 på campus, er 172.28.204.129. 677 00:31:13,920 --> 00:31:17,470 Og det tok 36 millisekunder å gå fra her til der. 678 00:31:17,470 --> 00:31:18,050 >> Morsom historie. 679 00:31:18,050 --> 00:31:19,716 Vi vil komme tilbake til det i et øyeblikk. 680 00:31:19,716 --> 00:31:22,920 Men nå den nest router-- til som arubacentral tilsynelatende 681 00:31:22,920 --> 00:31:25,790 har noen form for fysisk tilkobling mest likely-- 682 00:31:25,790 --> 00:31:27,249 menneskene ikke bry navngi den. 683 00:31:27,249 --> 00:31:30,373 Yale mennesker ikke bry navngi det fordi det er innsiden av nettverket 684 00:31:30,373 --> 00:31:30,940 det virker. 685 00:31:30,940 --> 00:31:32,520 Og slik er det bare har en IP-adresse. 686 00:31:32,520 --> 00:31:34,660 >> Men så en tredje ruter her på Yale nettverk 687 00:31:34,660 --> 00:31:36,700 det er nok litt lenger unna fortsatt 688 00:31:36,700 --> 00:31:41,330 kalles cen10g uansett som er asr.net.yale.internal. 689 00:31:41,330 --> 00:31:43,040 Og det også har en IP-adresse. 690 00:31:43,040 --> 00:31:44,990 >> Nå hvorfor er disse tallene slags varierende? 691 00:31:44,990 --> 00:31:47,890 2,9, 1,4, 36? 692 00:31:47,890 --> 00:31:48,840 Rutere bli opptatt. 693 00:31:48,840 --> 00:31:50,420 Og de får overbelastet og støttet opp. 694 00:31:50,420 --> 00:31:53,200 Det finnes tusenvis av mennesker på denne campus bruke internett akkurat nå. 695 00:31:53,200 --> 00:31:56,050 Det finnes hundre mennesker i denne rom ved hjelp av internett akkurat nå. 696 00:31:56,050 --> 00:31:59,030 >> Og så det som skjer er at rutere kan bli overbelastet. 697 00:31:59,030 --> 00:32:01,350 Og så de gangene kanskje svinge litt. 698 00:32:01,350 --> 00:32:04,620 Så det er derfor de ikke nødvendigvis øke oversiktlig. 699 00:32:04,620 --> 00:32:07,510 >> Men ting blir slags interessant i trinn fire. 700 00:32:07,510 --> 00:32:13,040 Tilsynelatende mellom Yale og trinn fire er en annen hop. 701 00:32:13,040 --> 00:32:16,480 Og hvor er ruteren i trinn fire sannsynligvis? 702 00:32:16,480 --> 00:32:17,410 >> PUBLIKUM: [uhørbart] 703 00:32:17,410 --> 00:32:19,410 >> DAVID J. MALAN: JFK kanskje, kanskje på flyplassen. 704 00:32:19,410 --> 00:32:21,950 Men uansett grunn, systemadministratorer, så 705 00:32:21,950 --> 00:32:24,140 geeks som kjører servere for år har kalt rutere 706 00:32:24,140 --> 00:32:25,600 etter nærmeste flyplass kode. 707 00:32:25,600 --> 00:32:27,420 Så JFK betyr trolig det er bare et sted 708 00:32:27,420 --> 00:32:29,970 i New York, kanskje i Manhattan eller en av de bydelene. 709 00:32:29,970 --> 00:32:34,460 nyc2 betegner, formodentlig, en annen ruter som er et sted i New York. 710 00:32:34,460 --> 00:32:37,140 >> Jeg vet ikke helt hvor rad seks er her, router nummer seks. 711 00:32:37,140 --> 00:32:40,110 quest.net en stor ISP, Internett-leverandøren, 712 00:32:40,110 --> 00:32:43,240 som gir internett-tilkobling til store steder som Yale og andre. 713 00:32:43,240 --> 00:32:47,110 Og så er dette siste, det ser ut som at MIT ikke engang 714 00:32:47,110 --> 00:32:50,180 har sin egen nettside i Cambridge nødvendigvis, 715 00:32:50,180 --> 00:32:52,090 men heller de har outsourcet sin hjemmeside, 716 00:32:52,090 --> 00:32:55,150 eller i det minste de fysiske servere, til et selskap kalt Akamai. 717 00:32:55,150 --> 00:32:57,940 Og Akamai faktisk er rett ned veien fra MIT i Cambridge 718 00:32:57,940 --> 00:32:58,790 det viser seg. 719 00:32:58,790 --> 00:33:02,360 >> Men innser også at selv om du kommer til å www.mit.edu, 720 00:33:02,360 --> 00:33:05,200 vi kunne virkelig bli sendt hvor som helst i verden. 721 00:33:05,200 --> 00:33:06,960 >> Og la oss se et sted annet sted i verden. 722 00:33:06,960 --> 00:33:09,240 La meg gå videre og fjerne denne skjermen og i stedet 723 00:33:09,240 --> 00:33:15,240 spore rute, bare en gang, så spørre en, for å www.cnn.co.jp, 724 00:33:15,240 --> 00:33:18,390 den japanske hjemmesiden for CNN, nyhetssiden. 725 00:33:18,390 --> 00:33:20,660 Og hvis jeg trykker Enter nå, La oss se hva som skjer. 726 00:33:20,660 --> 00:33:23,610 Vi er igjen starter på arubacentral. 727 00:33:23,610 --> 00:33:26,510 Vi deretter gå til navnløs router, noen flere. 728 00:33:26,510 --> 00:33:29,527 Så det tok 12 hopp til komme til Japan denne gangen. 729 00:33:29,527 --> 00:33:30,860 Og la oss se hva vi kan fange opp. 730 00:33:30,860 --> 00:33:32,450 >> Så samme hop, samme hop. 731 00:33:32,450 --> 00:33:35,170 Litt annerledes nå. 732 00:33:35,170 --> 00:33:36,380 Denne er interessant. 733 00:33:36,380 --> 00:33:40,870 Så jeg gjetter her, er stamford1 en få byer unna i Connecticut også. 734 00:33:40,870 --> 00:33:43,810 Disse ruterne i rad seks og syv ikke har navn. 735 00:33:43,810 --> 00:33:46,370 Men dette er slags fantastisk. 736 00:33:46,370 --> 00:33:53,310 >> Så hva synes å være mellom rutere i trinn sju og åtte? 737 00:33:53,310 --> 00:33:54,760 Og hvorfor sier du så mye? 738 00:33:54,760 --> 00:33:55,260 Yeah? 739 00:33:55,260 --> 00:33:56,060 >> PUBLIKUM: Ocean. 740 00:33:56,060 --> 00:33:57,640 >> DAVID J. MALAN: Sannsynligvis et hav. 741 00:33:57,640 --> 00:34:01,366 Vi vet det er sant lignende, intuitivt, ikke sant? 742 00:34:01,366 --> 00:34:04,790 Men vi kan bekrefte så mye slag av typen empirisk hvorfor? 743 00:34:04,790 --> 00:34:06,860 Hva har endret seg mellom rader sju og åtte? 744 00:34:06,860 --> 00:34:09,429 745 00:34:09,429 --> 00:34:14,739 >> Det tok mye mer tid til å gå til hva denne navnløse router syv er, 746 00:34:14,739 --> 00:34:18,670 sannsynligvis et sted i kontinentale USA, til trinn åtte, 747 00:34:18,670 --> 00:34:22,639 som sannsynligvis er et sted i Japan basert på domenenavnet for .jp der. 748 00:34:22,639 --> 00:34:25,719 Og så de ekstra hundre noe millisekunder 749 00:34:25,719 --> 00:34:28,960 eller 90 eller så millisekunder er resultatet av våre data kommer 750 00:34:28,960 --> 00:34:31,100 over et ganske stort havområde. 751 00:34:31,100 --> 00:34:34,570 >> Nå merkelig, virker det som kanskje at kabelen går over hele USA. 752 00:34:34,570 --> 00:34:37,070 Hvis vi faktisk gå over vestkysten for å komme til Japan, 753 00:34:37,070 --> 00:34:39,111 det er litt lang vei hvis vi går den andre veien. 754 00:34:39,111 --> 00:34:41,400 Så det er ikke helt klart hva som skjer fysisk. 755 00:34:41,400 --> 00:34:43,830 Men det faktum at hvert ekstra hop faktisk 756 00:34:43,830 --> 00:34:46,020 tok markert lenger enn alle andre, er det 757 00:34:46,020 --> 00:34:50,440 ganske god bekreftelse på at CNNs Japansk web server er sannsynligvis ja 758 00:34:50,440 --> 00:34:51,310 i Japan. 759 00:34:51,310 --> 00:34:54,089 Og det er sikkert lenger unna enn MIT har vært. 760 00:34:54,089 --> 00:34:56,380 Og det er verdt å merke seg også, dataene er ikke nødvendigvis 761 00:34:56,380 --> 00:34:58,794 kommer til å reise kortest mulig avstand. 762 00:34:58,794 --> 00:35:00,960 Faktisk, hvis du spiller rundt med spor rute hjemme 763 00:35:00,960 --> 00:35:04,170 bare å plukke tilfeldige nettsider, du kanskje finner ut at bare å sende en e-post 764 00:35:04,170 --> 00:35:06,490 eller for å besøke en nettside det er her i New Haven, 765 00:35:06,490 --> 00:35:09,200 noen ganger dataene kanskje først ta en omvei, gå ned til DC, 766 00:35:09,200 --> 00:35:10,450 og deretter komme opp igjen. 767 00:35:10,450 --> 00:35:12,860 Og det er nettopp på grunn av de dynamiske ruting beslutninger 768 00:35:12,860 --> 00:35:14,650 at disse datamaskinene gjør. 769 00:35:14,650 --> 00:35:18,930 >> Nå bare for moro, produksjonsteamet trimmet en av disse videoene for oss 770 00:35:18,930 --> 00:35:20,807 å bare være litt mer konsis. 771 00:35:20,807 --> 00:35:23,640 Men for å gi oss en rask følelse her-- og vi kan la lysene on-- 772 00:35:23,640 --> 00:35:32,363 som til hvor mye kabling er faktisk utfører alle våre data. 773 00:35:32,363 --> 00:35:33,029 [VIDEO PLAYBACK] 774 00:35:33,029 --> 00:35:36,023 [MUSIC SPILLE] 775 00:35:36,023 --> 00:36:31,911 776 00:36:31,911 --> 00:36:32,777 [END PLAYBACK] 777 00:36:32,777 --> 00:36:35,860 DAVID J. MALAN: Alle nettverks videoer har kule klingende musikk tilsynelatende. 778 00:36:35,860 --> 00:36:38,084 Så det er å få bare en følelse av hvor mye har 779 00:36:38,084 --> 00:36:39,500 pågått under panseret. 780 00:36:39,500 --> 00:36:41,355 >> Men la oss se på et litt lavere nivå nå 781 00:36:41,355 --> 00:36:44,150 på hvilke data er faktisk traversering disse linjene, 782 00:36:44,150 --> 00:36:46,720 og selv gå trådløst i et rom som dette. 783 00:36:46,720 --> 00:36:49,580 >> Så det viser seg når du ber om en nettside, eller send en e-post, 784 00:36:49,580 --> 00:36:53,670 eller motta en nettside eller en e-post, eller en Gchat melding eller en Facebook-melding, 785 00:36:53,670 --> 00:36:57,800 eller lignende, er det ikke bare en stor del av biter strømmer trådløst 786 00:36:57,800 --> 00:37:00,600 gjennom luften eller elektronisk på en wire. 787 00:37:00,600 --> 00:37:03,680 Snarere at forespørselen eller respons er generelt 788 00:37:03,680 --> 00:37:05,810 du delvis opp i separate deler. 789 00:37:05,810 --> 00:37:08,880 >> Så med andre ord, når du har en be om å få til en annen maskin, 790 00:37:08,880 --> 00:37:10,980 eller du får tilbake et svar fra en annen computer-- 791 00:37:10,980 --> 00:37:15,800 som antar, for eksempel hvis unfamiliar-- som for mange mennesker 792 00:37:15,800 --> 00:37:18,400 synes å være disse days-- hvis ukjent med dette-- 793 00:37:18,400 --> 00:37:20,200 ikke denne fellow-- denne karen. 794 00:37:20,200 --> 00:37:23,950 Så antar at dette er en melding som Jeg ønsker å sende til noen i ryggen. 795 00:37:23,950 --> 00:37:28,930 Hvem i helt tilbake vil gjerne får et bilde av Rick Astley dag? 796 00:37:28,930 --> 00:37:29,805 OK, hva heter du? 797 00:37:29,805 --> 00:37:30,590 >> PUBLIKUM: Cole. 798 00:37:30,590 --> 00:37:31,306 >> DAVID J. MALAN: Hva er det? 799 00:37:31,306 --> 00:37:31,672 >> PUBLIKUM: Cole. 800 00:37:31,672 --> 00:37:32,040 >> DAVID J. MALAN: Holt? 801 00:37:32,040 --> 00:37:32,540 H-O? 802 00:37:32,540 --> 00:37:33,711 PUBLIKUM: C-O-L-E. 803 00:37:33,711 --> 00:37:34,960 DAVID J. MALAN: C-O-L-E, Cole. 804 00:37:34,960 --> 00:37:35,520 Unnskyld. 805 00:37:35,520 --> 00:37:36,430 C-O-L-E. 806 00:37:36,430 --> 00:37:36,930 Greit. 807 00:37:36,930 --> 00:37:40,990 Så hvis jeg vil sende Cole dette bilde her, vet du dette 808 00:37:40,990 --> 00:37:42,410 er slags et stort bilde, ikke sant? 809 00:37:42,410 --> 00:37:44,472 Det kan være noen kilobyte, noen få megabyte, 810 00:37:44,472 --> 00:37:45,930 spesielt hvis det er høy oppløsning. 811 00:37:45,930 --> 00:37:48,660 Og jeg har egentlig ikke lyst til å slutte alle andre fra å bruke internett 812 00:37:48,660 --> 00:37:50,680 bare mens jeg sender dette virkelig stor, høy bildekvalitet 813 00:37:50,680 --> 00:37:52,138 av Rick Astley i hele rommet. 814 00:37:52,138 --> 00:37:55,310 Jeg vil gjerne dine data til å fortsette å traversere nettverk og Wi-Fi 815 00:37:55,310 --> 00:37:56,100 også. 816 00:37:56,100 --> 00:38:00,100 >> Og så det gjør sense-- og dette er gjenvinnbart elektronisk, 817 00:38:00,100 --> 00:38:01,780 ikke så mye i den virkelige verden. 818 00:38:01,780 --> 00:38:04,904 Egentlig er dette kommer til å ha flere betydninger hvis du tar mitt lyd ut. 819 00:38:04,904 --> 00:38:08,360 Så hvis jeg rive dette i halv som dette her, 820 00:38:08,360 --> 00:38:11,912 dette nå kan reise internett mer effektivt, 821 00:38:11,912 --> 00:38:13,120 fordi det er en mindre brikke. 822 00:38:13,120 --> 00:38:16,780 Så med lavere sannsynlighet går det kolliderer med andres trafikk 823 00:38:16,780 --> 00:38:17,650 på internett. 824 00:38:17,650 --> 00:38:21,240 >> Og så hva maskinen faktisk gjør når du ønsker å sende en melding til Cole 825 00:38:21,240 --> 00:38:24,917 er det biter opp en melding som dette inn mindre biter, fragmenter så å si. 826 00:38:24,917 --> 00:38:28,000 Og så setter dem innsiden av hva vi kaller slags virtuelle konvolutter. 827 00:38:28,000 --> 00:38:29,620 >> Så jeg har fire papirkonvolutter her. 828 00:38:29,620 --> 00:38:32,690 Og jeg har pre-mønstret dem, en, to, tre, og fire. 829 00:38:32,690 --> 00:38:35,800 Og hva jeg skal gjøre på den fronten av dette, akkurat som en normal mailing, 830 00:38:35,800 --> 00:38:38,000 er jeg kommer til å sette Cole navn der. 831 00:38:38,000 --> 00:38:41,270 Og så på toppen, jeg er kommer til å sette navnet mitt der, 832 00:38:41,270 --> 00:38:44,995 David, slik at den første slike pakke Jeg sender der ute på internett 833 00:38:44,995 --> 00:38:47,620 ser litt noe sånt dette, de viktigste egenskapene 834 00:38:47,620 --> 00:38:50,830 av disse er at den har en å ta opp, en fra adresse, 835 00:38:50,830 --> 00:38:52,670 og også et antall, så det som forhåpentligvis 836 00:38:52,670 --> 00:38:55,680 er tilstrekkelig informasjon for Cole å rekonstruere denne meldingen. 837 00:38:55,680 --> 00:38:58,820 >> Så la meg gjøre det samme her, samme her, og det samme her, 838 00:38:58,820 --> 00:39:01,310 skrive navnet sitt i Til-feltet på dem alle. 839 00:39:01,310 --> 00:39:04,240 Og så la oss gå videre og sette disse bildene inne. 840 00:39:04,240 --> 00:39:06,540 >> Så her er en pakke som er klar til å gå. 841 00:39:06,540 --> 00:39:09,780 Her er en annen pakke som er klar til å gå. 842 00:39:09,780 --> 00:39:14,100 Her er en tredje pakke som er klar til å gå. 843 00:39:14,100 --> 00:39:16,870 Og her er en fjerde pakke som er klar til å gå. 844 00:39:16,870 --> 00:39:19,849 >> Og nå hva som er interessant om hvordan internett i realiteten fungerer 845 00:39:19,849 --> 00:39:22,140 er at selv om jeg har fått fire pakker, som alle 846 00:39:22,140 --> 00:39:24,730 er forutbestemt for det samme beliggenhet, er de ikke nødvendigvis 847 00:39:24,730 --> 00:39:26,870 kommer til å krysse den samme ruten. 848 00:39:26,870 --> 00:39:32,070 Og så selv om jeg kanskje dele disse poser til nærmeste router 849 00:39:32,070 --> 00:39:36,660 la oss si, hvis du ønsker å sende dem hver hvilken vei, la oss se 850 00:39:36,660 --> 00:39:40,706 hva som faktisk skjer, målet for som er å få dem til slutt til Cole. 851 00:39:40,706 --> 00:39:44,850 852 00:39:44,850 --> 00:39:48,770 Og ja, de er allerede ikke nødvendigvis ta samme retning. 853 00:39:48,770 --> 00:39:50,510 Og det er greit. 854 00:39:50,510 --> 00:39:52,480 Dette er en litt vanskelig og Oprah stil i dag. 855 00:39:52,480 --> 00:39:56,540 >> Og nå la meg bevisst ta det en tilbake. 856 00:39:56,540 --> 00:40:00,196 Og nå Cole, hvis du ønsker å montere det som best du kan. 857 00:40:00,196 --> 00:40:06,610 858 00:40:06,610 --> 00:40:10,180 Selvfølgelig kan vi alle gjette hva konklusjonen her kommer til å bli. 859 00:40:10,180 --> 00:40:12,600 Du kommer til å ha 3/4 av Rick Astley på bare et øyeblikk. 860 00:40:12,600 --> 00:40:15,920 861 00:40:15,920 --> 00:40:19,291 Og hva er skjønt implikasjon av det? 862 00:40:19,291 --> 00:40:20,540 Du ønsker å prøve å holde den opp? 863 00:40:20,540 --> 00:40:23,540 Vi har ett kamera pekte på deg hvis du ønsker 864 00:40:23,540 --> 00:40:26,226 å posere med Rick Astley over her. 865 00:40:26,226 --> 00:40:28,610 866 00:40:28,610 --> 00:40:29,510 Det vi går. 867 00:40:29,510 --> 00:40:30,410 Lovely. 868 00:40:30,410 --> 00:40:33,230 >> Men du synes å være fraværende et fragment av Rick Astley. 869 00:40:33,230 --> 00:40:37,015 Så det viser seg at internett blir vanligvis drevet av ikke bare IP, 870 00:40:37,015 --> 00:40:39,890 men faktum er at vi har hørt på veldig begynnelsen av forelesningen i at video-- 871 00:40:39,890 --> 00:40:42,473 og du har sikkert sett dette akronym mer often-- hva som virkelig 872 00:40:42,473 --> 00:40:44,360 er protokollen du pleier å høre om? 873 00:40:44,360 --> 00:40:45,120 >> PUBLIKUM: TCP / IP. 874 00:40:45,120 --> 00:40:48,090 >> DAVID J. MALAN: TCP / IP, som er bare en kombinasjon 875 00:40:48,090 --> 00:40:49,940 av to protokoller, kalt en IP. 876 00:40:49,940 --> 00:40:52,640 Som igjen er bare den innstilte konvensjoner via som vi 877 00:40:52,640 --> 00:40:54,740 adressere hver datamaskin på internett. 878 00:40:54,740 --> 00:40:56,930 Og så TCP, som tjener et annet formål. 879 00:40:56,930 --> 00:41:00,110 >> TCP er en protokoll som du vanligvis bruker i forbindelse 880 00:41:00,110 --> 00:41:04,410 med IP, som blant annet ting, garanterer levering. 881 00:41:04,410 --> 00:41:08,860 Faktisk er TCP protokollen som vil legge merke til at en av pakkene 882 00:41:08,860 --> 00:41:10,930 tydeligvis ikke får til Cole, fordi han synes 883 00:41:10,930 --> 00:41:12,830 være manglende nummer fire av fire. 884 00:41:12,830 --> 00:41:16,530 Og så hva TCP, en protokoll gjør det, er det forteller Cole, 885 00:41:16,530 --> 00:41:19,850 hei Cole, hvis du mottar bare tre av fire pakker, 886 00:41:19,850 --> 00:41:22,600 Fortell meg hvilken du mangler, i hovedsak, 887 00:41:22,600 --> 00:41:25,570 og deretter min hensikt i livet bør være å gjenutsende det. 888 00:41:25,570 --> 00:41:28,580 >> Og så hvis jeg også, avsender, bruker TCP, 889 00:41:28,580 --> 00:41:31,810 Jeg skal da lage en ny packet-- ikke denne rynkete én her-- 890 00:41:31,810 --> 00:41:35,980 videresende nettopp dette stykke det, slik at til slutt Cole har 891 00:41:35,980 --> 00:41:38,280 en komplett souvenir, om ikke annet. 892 00:41:38,280 --> 00:41:43,000 Men slik som til slutt dataene faktisk får til riktig destinasjon. 893 00:41:43,000 --> 00:41:48,020 >> Men dessverre, skriver Cole navn på forsiden er ikke tilstrekkelig, per se. 894 00:41:48,020 --> 00:41:50,270 Og egentlig, jeg ville ikke skrive Cole navn, men sannsynligvis 895 00:41:50,270 --> 00:41:51,655 hans IP-adresse på konvolutten. 896 00:41:51,655 --> 00:41:52,780 Og jeg ville ikke skrive David. 897 00:41:52,780 --> 00:41:56,550 Jeg vil skrive min IP-adresse på konvolutten slik at datamaskinene kan faktisk 898 00:41:56,550 --> 00:41:57,999 kommunisere frem og tilbake. 899 00:41:57,999 --> 00:42:00,540 Men det viser seg at datamaskiner kan gjøre mye mer enn å tjene opp 900 00:42:00,540 --> 00:42:01,900 bilder av Rick Astley. 901 00:42:01,900 --> 00:42:05,340 De kan også sende og motta e-post, chat-meldinger. 902 00:42:05,340 --> 00:42:09,780 De kan gjøre ting som filoverføringer, og en rekke andre verktøy 903 00:42:09,780 --> 00:42:12,330 du bruker på internett, servere kan gjøre i disse dager. 904 00:42:12,330 --> 00:42:15,300 >> Og bare fordi et selskap, eller en skole, eller en person 905 00:42:15,300 --> 00:42:19,420 ønsker å ha en web server, og en e-postserver, og en prat server, 906 00:42:19,420 --> 00:42:21,420 betyr ikke at du trenger tre datamaskiner. 907 00:42:21,420 --> 00:42:26,200 Du kan ha bare én datamaskin som kjører flere tjenester, så å si. 908 00:42:26,200 --> 00:42:29,190 >> Og så når Cole mottar en melding sånn, hvordan 909 00:42:29,190 --> 00:42:32,940 ikke sin datamaskin vet om det skal viser at bildet i sin nettleser, 910 00:42:32,940 --> 00:42:37,730 eller i Gchat, eller i Facebook Messenger, eller i hvilket som helst antall av andre verktøy? 911 00:42:37,730 --> 00:42:40,430 >> Så det viser seg også på at som konvolutten er ekstra brikke 912 00:42:40,430 --> 00:42:43,070 av informasjonen som er kjent som et portnummer. 913 00:42:43,070 --> 00:42:45,240 Og et portnummer er bare et tall faktisk 914 00:42:45,240 --> 00:42:48,342 men det entydig identifiserer ikke datamaskinen, men tjenesten. 915 00:42:48,342 --> 00:42:49,550 Og det er bunter av disse. 916 00:42:49,550 --> 00:42:51,258 Så det viser seg at i verden, mennesker 917 00:42:51,258 --> 00:42:57,095 har bestemt på et par slike konvensjoner, hvorav noen er disse. 918 00:42:57,095 --> 00:42:59,220 Så det er noe som heter File Transfer Protocol. 919 00:42:59,220 --> 00:42:59,870 Det er ganske utdatert. 920 00:42:59,870 --> 00:43:00,970 Det er helt usikkert. 921 00:43:00,970 --> 00:43:02,320 En rekke mennesker fortsatt bruke den. 922 00:43:02,320 --> 00:43:04,240 Og den bruker port nummer 21. 923 00:43:04,240 --> 00:43:07,250 Med andre ord, hvis sende en fil via FTP, 924 00:43:07,250 --> 00:43:10,570 konvolutten ville ha ikke bare avsender og mottakers IP-adresse, 925 00:43:10,570 --> 00:43:14,020 Det ville også ha nummeret 21, slik at mottakerdatamaskinen vet oh, dette 926 00:43:14,020 --> 00:43:17,280 er en fil, ikke en e-post eller en chat-melding. 927 00:43:17,280 --> 00:43:19,016 >> 25 er SMTP. 928 00:43:19,016 --> 00:43:20,516 Hvor mange av dere har noen gang brukt SMTP? 929 00:43:20,516 --> 00:43:22,850 930 00:43:22,850 --> 00:43:23,380 Feil. 931 00:43:23,380 --> 00:43:24,490 Nesten alle av dere har. 932 00:43:24,490 --> 00:43:28,730 Hvis du noen gang har brukt e-post, har du brukt SMTP, Simple Mail Transfer Protocol, 933 00:43:28,730 --> 00:43:32,300 som er bare en fancy måte å si: Dette er den type datamaskin eller tjeneste 934 00:43:32,300 --> 00:43:34,600 som sender e-posten din utgående. 935 00:43:34,600 --> 00:43:38,780 >> Og hvis du noensinne har sett akronymer som POP eller IMAP og det er et par andre, 936 00:43:38,780 --> 00:43:40,670 de er for mottak e-post, vanligvis. 937 00:43:40,670 --> 00:43:42,650 Som bare betyr at det er en annen tjeneste. 938 00:43:42,650 --> 00:43:45,850 Det er programvare som noen skrev som sender til eller lytter 939 00:43:45,850 --> 00:43:48,880 på en bestemt port nummer slik at det ikke forvirre e-post 940 00:43:48,880 --> 00:43:50,360 med en annen type av data. 941 00:43:50,360 --> 00:43:55,500 >> Nå nettet er HTTP, som er nummer 80, og også port 443. 942 00:43:55,500 --> 00:43:57,590 Og i virkeligheten, selv om Vi mennesker heldigvis 943 00:43:57,590 --> 00:43:59,610 trenger ikke å gjøre dette, noen gang du besøker 944 00:43:59,610 --> 00:44:05,810 et nettsted som http://www.yale.edu, nettleseren 945 00:44:05,810 --> 00:44:07,790 er bare å være snill av nyttig ved at det er 946 00:44:07,790 --> 00:44:10,970 forutsatt at du ønsker numerisk port 80. 947 00:44:10,970 --> 00:44:15,710 Vi vet allerede at DNS kan finne ut hva IP-adressen er av www.yale.edu. 948 00:44:15,710 --> 00:44:17,970 Men maskinen er bare kommer til å antyde at du 949 00:44:17,970 --> 00:44:21,560 Vil port 80 fordi du bruker Chrome eller IE, eller en annen nettleser. 950 00:44:21,560 --> 00:44:24,930 Men jeg kan teknisk gjøre kolon 80. 951 00:44:24,930 --> 00:44:28,520 Og så kan jeg eksplisitt fortelle nettleseren min, sende en pakke eller mer 952 00:44:28,520 --> 00:44:32,080 av informasjon til www.yale.edu ber dagens hjemmeside. 953 00:44:32,080 --> 00:44:36,070 Men spesielt, adresse det til Yale IP på port 80 954 00:44:36,070 --> 00:44:39,190 slik at jeg faktisk får sikkerhets Yale webserver. 955 00:44:39,190 --> 00:44:42,229 >> Nå forsvinner umiddelbart fordi nettlesere bare 956 00:44:42,229 --> 00:44:44,020 bestemme at vi ikke trenger å forvirre mennesker 957 00:44:44,020 --> 00:44:46,810 ved å ha enda mer uforståelige informasjon som kolon 80. 958 00:44:46,810 --> 00:44:50,640 Og ærlig talt, nettlesere som Chrome ikke engang 959 00:44:50,640 --> 00:44:55,464 vise deg HTTP lenger, eller tykktarmen, eller skråstreken skråstrek, eller skråstrek, 960 00:44:55,464 --> 00:44:58,380 i en viss forstand, fordi de prøver å gjøre ting enklere for brukerne. 961 00:44:58,380 --> 00:45:01,080 I en annen forstand, det er bare snill av en brukeropplevelse thing-- 962 00:45:01,080 --> 00:45:02,720 la oss bli kvitt noen av rotet. 963 00:45:02,720 --> 00:45:05,405 Men det skjuler noen av disse underliggende detaljer. 964 00:45:05,405 --> 00:45:09,360 >> Og faktisk, ingen av oss sannsynligvis noensinne skriver http lenger. 965 00:45:09,360 --> 00:45:12,060 Du bare skriver inn noe som www.harvard.edu. 966 00:45:12,060 --> 00:45:15,310 Og igjen, Chrome utleder at du vil HTTP. 967 00:45:15,310 --> 00:45:18,970 Men det finnes andre protokoller at vi sikkert kunne bruke. 968 00:45:18,970 --> 00:45:24,480 >> Så gitt alt dette, hvis du nå sortere av satt på den såkalte ingeniør hat, 969 00:45:24,480 --> 00:45:27,417 hvordan tingene heter brannmurer fungerer? 970 00:45:27,417 --> 00:45:29,750 Så du er nok generelt kjent med brannmur, 971 00:45:29,750 --> 00:45:30,990 ikke så mye i den fysiske forstand. 972 00:45:30,990 --> 00:45:32,470 Så tilbake i dag, og fortsatt den dag i dag, 973 00:45:32,470 --> 00:45:35,430 hvis du har fått som strip malls for forekomst som har en rekke butikker, 974 00:45:35,430 --> 00:45:38,500 generelt veggene i mellom enkelte butikker eller butikker 975 00:45:38,500 --> 00:45:43,180 er brannmurer i den forstand at de har spesiell isolasjon 976 00:45:43,180 --> 00:45:45,310 slik at hvis en brann bryter ut i en butikk, 977 00:45:45,310 --> 00:45:48,210 det gjør ikke nødvendigvis spre seg til butikken naboen. 978 00:45:48,210 --> 00:45:51,710 >> Dataverdenen har også brannmurer som ikke gjør noe annet. 979 00:45:51,710 --> 00:45:52,798 Hva gjør en ildkule gjøre? 980 00:45:52,798 --> 00:45:53,298 Yeah? 981 00:45:53,298 --> 00:45:55,290 >> PUBLIKUM: I utgangspunktet de kuttet forbindelsen 982 00:45:55,290 --> 00:45:59,493 hvis de støter på noe som, for eksempel, 983 00:45:59,493 --> 00:46:01,361 de har antall id uttalelser. 984 00:46:01,361 --> 00:46:04,340 Og hvis noe skjer, de kuttet forbindelsen. 985 00:46:04,340 --> 00:46:07,570 Som hvis dette ondsinnet angrep [Uhørbart] datamaskinen, or-- 986 00:46:07,570 --> 00:46:08,630 >> DAVID J. MALAN: OK bra. 987 00:46:08,630 --> 00:46:11,220 Ja, og faktisk du er selv går litt lenger 988 00:46:11,220 --> 00:46:14,590 i å beskrive noe som kan være kalles en intrusion detection system, 989 00:46:14,590 --> 00:46:18,305 eller IDS for kort, der du faktisk har regler definert. 990 00:46:18,305 --> 00:46:22,140 Og hvis du begynner å se mistenkelig oppførsel, du prøver å sette en stopper for det. 991 00:46:22,140 --> 00:46:24,250 >> Og en brannmur, ærlig, på et nettverk nivå, 992 00:46:24,250 --> 00:46:26,821 er enda dummere og enklere enn det generelt. 993 00:46:26,821 --> 00:46:29,070 Og det er forskjellige typer av brannmurer i verden. 994 00:46:29,070 --> 00:46:31,569 Men de som opererer på nivået vi snakker today-- 995 00:46:31,569 --> 00:46:35,330 IP og TCP-- jobbe enda mer oversiktlig. 996 00:46:35,330 --> 00:46:39,180 >> For eksempel, hvis du var Yale system administratorer, eller Harvard-systemet 997 00:46:39,180 --> 00:46:42,020 administratorer, eller noen Big Brother på noen selskap, 998 00:46:42,020 --> 00:46:45,040 og du ønsket å hindre all din studenter eller alle dine ansatte 999 00:46:45,040 --> 00:46:47,619 fra å gå til facebook.com, Alt du trenger å gjøre 1000 00:46:47,619 --> 00:46:50,160 er å sørge for at alle deres nettverkstrafikk, først av alt, 1001 00:46:50,160 --> 00:46:51,850 går gjennom en spesiell enhet. 1002 00:46:51,850 --> 00:46:53,030 La oss kalle det en brannmur. 1003 00:46:53,030 --> 00:46:54,910 >> Og det er greit, fordi du kan lage din router 1004 00:46:54,910 --> 00:46:57,618 det samme som en brannmur hvis du sette samme type programvare 1005 00:46:57,618 --> 00:46:58,940 på samme maskin. 1006 00:46:58,940 --> 00:47:01,780 Så hvis alle elevene eller ansatte trafikk 1007 00:47:01,780 --> 00:47:04,450 går gjennom denne sentral brannmur, hvordan 1008 00:47:04,450 --> 00:47:08,540 vil vi blokkere folk fra å gå til facebook.com, for eksempel? 1009 00:47:08,540 --> 00:47:10,780 Hva ville systemet administrator har å gjøre? 1010 00:47:10,780 --> 00:47:11,370 Noen andre? 1011 00:47:11,370 --> 00:47:12,911 La oss prøve å gå rundt. 1012 00:47:12,911 --> 00:47:15,074 >> PUBLIKUM: [uhørbart] 1013 00:47:15,074 --> 00:47:16,365 DAVID J. MALAN: Si det igjen? 1014 00:47:16,365 --> 00:47:19,215 PUBLIKUM: Det bør bare få fanget opp inne i systemet. 1015 00:47:19,215 --> 00:47:22,487 Så bare sette Facebook i 127.0.0-- 1016 00:47:22,487 --> 00:47:23,820 DAVID J. MALAN: Oh, interessant. 1017 00:47:23,820 --> 00:47:27,290 Så du kan faktisk da hacke din DNS-systemet. 1018 00:47:27,290 --> 00:47:31,180 Dette er faktisk en måte du kan gjøre dette hvorved enhver tid en Yale student trekker 1019 00:47:31,180 --> 00:47:34,670 opp www.facebook.com, alle av oss her i dag på campus 1020 00:47:34,670 --> 00:47:38,590 bruker Yale DNS-server, fordi Yale rens DHCP server ga oss 1021 00:47:38,590 --> 00:47:39,580 denne adressen. 1022 00:47:39,580 --> 00:47:42,490 Så ja, kunne du slags bryte ting eller break-konvensjonen 1023 00:47:42,490 --> 00:47:49,190 ved å bare si, ja, facebook.com adresse er fake, 1024 00:47:49,190 --> 00:47:52,530 er 1.2.3.4, som er faktisk ikke lovlig. 1025 00:47:52,530 --> 00:47:53,930 Eller kanskje det er 278. 1026 00:47:53,930 --> 00:47:57,460 hva som var i TV-showet en øyeblikk siden slik at ingen av oss 1027 00:47:57,460 --> 00:47:59,176 faktisk kan besøke facebook.com. 1028 00:47:59,176 --> 00:48:00,590 >> Så antar Yale gjorde det. 1029 00:48:00,590 --> 00:48:03,336 Anta Yale ønsket å holde deg ut av facebook.com. 1030 00:48:03,336 --> 00:48:05,700 Og derfor har de endret DNS-innstillingene 1031 00:48:05,700 --> 00:48:08,812 for å gi deg en falsk IP adresse for facebook.com. 1032 00:48:08,812 --> 00:48:10,616 Hvordan reagerer du? 1033 00:48:10,616 --> 00:48:12,990 Teknisk sett not-- oh, nå alle ønsker å delta. 1034 00:48:12,990 --> 00:48:13,490 OK, ja. 1035 00:48:13,490 --> 00:48:16,190 PUBLIKUM: Du bare skriver i faktiske IP-adressen til Facebook. 1036 00:48:16,190 --> 00:48:16,710 >> DAVID J. MALAN: OK, bra. 1037 00:48:16,710 --> 00:48:19,350 Så vi kan bare skrive i faktiske IP-adressen til Facebook, 1038 00:48:19,350 --> 00:48:21,090 mye som jeg gjorde med Yale hjemmeside. 1039 00:48:21,090 --> 00:48:24,636 Og hvis Facebook-serveren er konfigurert å støtte det, bør det faktisk fungerer. 1040 00:48:24,636 --> 00:48:26,510 Det er en mindre smerte i nakken, fordi nå er vi 1041 00:48:26,510 --> 00:48:30,220 må huske noen tilfeldige 32-biters verdi, men som kan fungere. 1042 00:48:30,220 --> 00:48:31,622 Hva annet kan du gjøre? 1043 00:48:31,622 --> 00:48:32,121 Yeah. 1044 00:48:32,121 --> 00:48:35,117 >> PUBLIKUM: Du kan endre disse innstillingene [uhørbart]. 1045 00:48:35,117 --> 00:48:37,700 DAVID J. MALAN: Ja, kunne du selv endre DNS-innstillingene. 1046 00:48:37,700 --> 00:48:40,480 Så faktisk dette er faktisk ganske nyttig, ærlig, 1047 00:48:40,480 --> 00:48:45,590 hvis du er på en flyplass, eller hvis du er i en kafé, eller noe som 1048 00:48:45,590 --> 00:48:48,834 har flass internett der noen ganger DNS-serveren bare slutter å virke. 1049 00:48:48,834 --> 00:48:51,000 Så selv jeg noen ganger gjøre dette, ikke for ondsinnet, jeg 1050 00:48:51,000 --> 00:48:52,750 ønsker å bruke Facebook formål, men egentlig 1051 00:48:52,750 --> 00:48:56,344 fordi jeg synes å ha et nettverk tilkobling, men ingenting fungerer. 1052 00:48:56,344 --> 00:48:58,260 Og slik at en av den første ting jeg try-- og du 1053 00:48:58,260 --> 00:49:01,710 kan gjøre dette på Windows også-- men på min Mac, hvis jeg går til Network. 1054 00:49:01,710 --> 00:49:03,330 Og jeg velger min Wi-Fi-tilkobling. 1055 00:49:03,330 --> 00:49:04,750 Og jeg går til Advanced. 1056 00:49:04,750 --> 00:49:06,080 Og jeg går til DNS. 1057 00:49:06,080 --> 00:49:08,260 Dette er de tre IP-adresser som Yale 1058 00:49:08,260 --> 00:49:10,290 er å gi meg i tre DNS-servere. 1059 00:49:10,290 --> 00:49:14,110 Hensikten er da for meg å prøve noe en av disse for å løse adresser. 1060 00:49:14,110 --> 00:49:15,946 >> Men jeg kan overstyre disse ved å gjøre et pluss. 1061 00:49:15,946 --> 00:49:18,333 Og noen ønsker å foreslå en DNS-server? 1062 00:49:18,333 --> 00:49:19,120 >> PUBLIKUM: 8.8.8.8? 1063 00:49:19,120 --> 00:49:20,578 >> DAVID J. MALAN: Å, du er fantastisk. 1064 00:49:20,578 --> 00:49:21,650 Ja, 8.8.8.8. 1065 00:49:21,650 --> 00:49:26,170 Så Google, velsigne deres hjerter, kjøpte IP-adressen 8.8.8.8, 1066 00:49:26,170 --> 00:49:29,560 fordi den slags ser ut som Gs sannsynligvis, og det er lett å huske. 1067 00:49:29,560 --> 00:49:34,820 Men ja, nå har jeg satt min datamaskin for å bruke Googles DNS server. 1068 00:49:34,820 --> 00:49:38,050 >> Så nå hvis jeg går til yale.edu, det er fortsatt kommer til å fungere. 1069 00:49:38,050 --> 00:49:40,100 Men jeg bruker ikke Yale DNS-servere lenger. 1070 00:49:40,100 --> 00:49:44,430 Og hvis jeg går til facebook.com, alle de ser ups 1071 00:49:44,430 --> 00:49:45,960 kommer til å gå gjennom Google. 1072 00:49:45,960 --> 00:49:49,120 >> Så på den ene siden, har jeg smart omgått det lokale systemet 1073 00:49:49,120 --> 00:49:51,810 administratorer bare ved forstå hvordan nettverk fungerer. 1074 00:49:51,810 --> 00:49:53,360 Men jeg betaler en pris. 1075 00:49:53,360 --> 00:49:54,740 Ingenting er gratis. 1076 00:49:54,740 --> 00:49:56,096 Hva har jeg bare gitt opp? 1077 00:49:56,096 --> 00:50:00,180 1078 00:50:00,180 --> 00:50:02,250 Hva har jeg bare gitt opp? 1079 00:50:02,250 --> 00:50:06,090 Alle dere flinke folk som har brukt 8.8.8.8, fordi det er kult 1080 00:50:06,090 --> 00:50:10,440 eller løser problemer, hva har du gjort hele denne tiden? 1081 00:50:10,440 --> 00:50:11,910 >> PUBLIKUM: Reiser lenger? 1082 00:50:11,910 --> 00:50:15,201 >> DAVID J. MALAN: Kanskje reiser lenger, fordi Googles trolig ikke fullt så 1083 00:50:15,201 --> 00:50:16,770 nært som serveren nedover gaten. 1084 00:50:16,770 --> 00:50:18,420 Men mer worrisomely. 1085 00:50:18,420 --> 00:50:18,920 Yeah? 1086 00:50:18,920 --> 00:50:20,940 >> PUBLIKUM: Så nå Google vet hvor du skal. 1087 00:50:20,940 --> 00:50:23,856 >> DAVID J. MALAN: Google vet bokstavelig talt hvert nettsted du besøker, 1088 00:50:23,856 --> 00:50:26,080 fordi du er bokstavelig talt spør dem, hei Google, 1089 00:50:26,080 --> 00:50:28,360 kan du oversette yale.edu for meg? 1090 00:50:28,360 --> 00:50:32,430 Eller hei Google, kan du oversette denne annen nettadresse for meg 1091 00:50:32,430 --> 00:50:33,334 til en IP-adresse. 1092 00:50:33,334 --> 00:50:35,750 Og så they're-- jeg har ingen aner ikke hva du snakker om. 1093 00:50:35,750 --> 00:50:38,080 Og slik at de vet alt om deg. 1094 00:50:38,080 --> 00:50:42,180 Så skjønner at dette er en gratis tjeneste med et formål fra deres perspektiv 1095 00:50:42,180 --> 00:50:42,680 også. 1096 00:50:42,680 --> 00:50:44,420 Men det kan sikkert få deg ut av en knipe. 1097 00:50:44,420 --> 00:50:46,380 >> Nå bare for å ta opp en annen problem som ofte kommer opp 1098 00:50:46,380 --> 00:50:48,640 blant studentene, spesielt når du reiser internasjonalt 1099 00:50:48,640 --> 00:50:50,765 i enkelte land som Kina, hvor det faktisk 1100 00:50:50,765 --> 00:50:54,559 er en Great Firewall of China der regjeringen der blokkene ganske 1101 00:50:54,559 --> 00:50:56,100 litt av trafikken på ulike nivåer. 1102 00:50:56,100 --> 00:50:58,141 Du trenger ikke å bare blokk trafikk på nivå 1103 00:50:58,141 --> 00:51:01,240 vi snakker her, DNS eller på annen måte, du kan blokkere det på andre nivåer. 1104 00:51:01,240 --> 00:51:04,030 >> Og faktisk bare være klart, en brannmur 1105 00:51:04,030 --> 00:51:08,400 kan operere enda enklere måte enn bare å ha de systemansvarlige endre 1106 00:51:08,400 --> 00:51:09,500 DNS-innstillingene. 1107 00:51:09,500 --> 00:51:12,920 En brannmur, en anordning mellom oss og resten av verden, 1108 00:51:12,920 --> 00:51:16,850 bare kunne blokkere alle utgående forespørsler til IP-adressen 1109 00:51:16,850 --> 00:51:21,240 for Facebook på port 80, eller IP-adressen for harvard.edu, 1110 00:51:21,240 --> 00:51:22,580 eller IP-adressen til noe. 1111 00:51:22,580 --> 00:51:26,280 Så en brannmur kan se på din konvolutter IP-adresser og til og med port 1112 00:51:26,280 --> 00:51:29,384 tall, og hvis Yale ville, det kan bare slutte oss alle 1113 00:51:29,384 --> 00:51:32,550 fra selv å bruke FTP lenger, noe som ville trolig være en god ting fordi det 1114 00:51:32,550 --> 00:51:34,320 er faktisk en usikker protokoll. 1115 00:51:34,320 --> 00:51:37,620 Yale selv kunne stoppe oss fra besøker helheten av web 1116 00:51:37,620 --> 00:51:42,632 bare ved å blokkere all port Trafikken på nummer 80 i tillegg. 1117 00:51:42,632 --> 00:51:43,840 Så det kan være en annen måte. 1118 00:51:43,840 --> 00:51:45,740 Og det er enda mer avansert måter også. 1119 00:51:45,740 --> 00:51:47,770 >> Men når du er på reise utenlands for eksempel, 1120 00:51:47,770 --> 00:51:50,740 eller hvis du er i en internettkafé, eller hvis du er overalt der det finnes 1121 00:51:50,740 --> 00:51:53,179 blokkeringer eller trusler, hva kan du gjøre? 1122 00:51:53,179 --> 00:51:56,220 Vel, hvis du går nedover gaten til Starbucks eller du reiser på en flyplass, 1123 00:51:56,220 --> 00:51:58,780 generelt kan du bare hoppe på Wi-Fi ved å velge 1124 00:51:58,780 --> 00:52:04,631 lignende, JFK Wi-Fi av LaGuardia Wi-Fi, eller Logan Airport Wi-Fi, eller hva ikke. 1125 00:52:04,631 --> 00:52:05,880 Og det er ikke kryptert, ikke sant? 1126 00:52:05,880 --> 00:52:06,949 Det er ingen hengelås-ikonet. 1127 00:52:06,949 --> 00:52:09,490 Og er du sannsynligvis ikke bedt om om brukernavn og passord. 1128 00:52:09,490 --> 00:52:11,240 Du bare bedt om med noen dum skjema 1129 00:52:11,240 --> 00:52:15,260 å si at jeg er enig i å bruke dette bare i 30 minutter, eller noe sånt. 1130 00:52:15,260 --> 00:52:18,761 >> Men det er ingen kryptering mellom du og Starbucks Wi-Fi 1131 00:52:18,761 --> 00:52:20,760 punkt, de tingene med antennene på veggen. 1132 00:52:20,760 --> 00:52:24,840 Det finnes ingen kryptering mellom deg og flyplassens Wi-Fi-signaler. 1133 00:52:24,840 --> 00:52:29,060 >> Og så teknisk at skumle person sitter noen seter ned fra deg 1134 00:52:29,060 --> 00:52:31,970 i Starbucks eller på flyplassen kunne være, med riktig programvare, 1135 00:52:31,970 --> 00:52:35,164 se på alle trådløse din trafikk på hans eller hennes laptop. 1136 00:52:35,164 --> 00:52:37,080 Det er ikke så vanskelig å sette en laptop i hva som er 1137 00:52:37,080 --> 00:52:39,880 kalles promiskuøse modus, som som navnet antyder, 1138 00:52:39,880 --> 00:52:41,760 betyr at du er typen løs med reglene. 1139 00:52:41,760 --> 00:52:44,740 Og det bare lytter ikke bare for trafikk ment for det, 1140 00:52:44,740 --> 00:52:47,700 men også til alle andre er trafikk innenfor rekkevidde. 1141 00:52:47,700 --> 00:52:50,550 >> Og ved den logikken, kan det se alle de informasjonspakker 1142 00:52:50,550 --> 00:52:51,360 du mottar. 1143 00:52:51,360 --> 00:52:53,510 Og hvis disse pakkene er ikke kryptert, du 1144 00:52:53,510 --> 00:52:56,680 setter deg selv i fare for e-post, eller meldinger, 1145 00:52:56,680 --> 00:52:58,620 eller noe annet å bli utsatt for. 1146 00:52:58,620 --> 00:53:01,220 >> Så selv om du ikke er i utlandet men du er bare i Starbucks, 1147 00:53:01,220 --> 00:53:03,800 eller du er på noen tilfeldig persons Wi-Fi som ikke er kryptert, 1148 00:53:03,800 --> 00:53:05,410 en VPN er en god ting. 1149 00:53:05,410 --> 00:53:07,410 En VPN er et virtuelt privat nettverk. 1150 00:53:07,410 --> 00:53:09,480 Og det er en teknologi som lar deg ha 1151 00:53:09,480 --> 00:53:14,560 en kryptert, en egge connection-- avansert enn Caesar eller Vigenere-- 1152 00:53:14,560 --> 00:53:17,420 mellom den bærbare datamaskinen, eller telefonen, eller skrivebordet ditt, 1153 00:53:17,420 --> 00:53:22,460 og en server andre steder, som en server på Yale campus. 1154 00:53:22,460 --> 00:53:25,840 >> Og hvis du reiser abroad-- og faktisk, finner du dette på hotell 1155 00:53:25,840 --> 00:53:26,560 hele tiden. 1156 00:53:26,560 --> 00:53:28,580 Og spesielt som fremadstormende dataforskere 1157 00:53:28,580 --> 00:53:32,090 hvor dere kan, som geeks, ønsker å bruke andre enn 80 porter, 1158 00:53:32,090 --> 00:53:35,770 og andre enn 443-- porter og faktisk for oppgavesettet seks, 1159 00:53:35,770 --> 00:53:39,280 vi kommer til å spille med flere TCP-portene bare ved choice-- mye 1160 00:53:39,280 --> 00:53:42,940 av hoteller og butikker, og nettverk bare blokkere den slags ting 1161 00:53:42,940 --> 00:53:45,970 fordi de litt naivt, eller uvitenhet, tenk 1162 00:53:45,970 --> 00:53:48,010 at ingen trenger de andre portene. 1163 00:53:48,010 --> 00:53:51,150 >> Og så ved å bruke en VPN kan du omgå slike restriksjoner, 1164 00:53:51,150 --> 00:53:54,050 fordi hva en VPN gjør er det kan du på Starbucks, 1165 00:53:54,050 --> 00:53:58,630 eller flyplassen, eller hvor som helst i verden å koble encryptedly til yale.edu, 1166 00:53:58,630 --> 00:54:02,950 til noen server her på campus, og deretter tunnel, så å si, 1167 00:54:02,950 --> 00:54:06,570 alt av trafikken fra hvor du er gjennom Yale, på hvilket tidspunkt 1168 00:54:06,570 --> 00:54:08,720 det deretter går til sin endelige destinasjon. 1169 00:54:08,720 --> 00:54:11,150 >> Men ved å kryptere det, du unngå noen av disse slag 1170 00:54:11,150 --> 00:54:15,380 av filtre eller ileggelse som noen lokale nettverket har pålagt. 1171 00:54:15,380 --> 00:54:17,980 Og pluss, har du en mye mer robust forsvar 1172 00:54:17,980 --> 00:54:19,730 mot skumle mennesker rundt deg som kanskje 1173 00:54:19,730 --> 00:54:21,300 være å prøve å lytte på trafikken. 1174 00:54:21,300 --> 00:54:24,591 Det kan fortsatt være skumle folk her hjem ved Yale ser trafikken 1175 00:54:24,591 --> 00:54:28,440 som det kommer ut av VPN, men minst du har skjøvet trusselen lenger unna. 1176 00:54:28,440 --> 00:54:30,490 Og det er her også, en trade off. 1177 00:54:30,490 --> 00:54:33,645 >> Nå selvfølgelig, hvis du er i Kina eller i kafeen, 1178 00:54:33,645 --> 00:54:35,770 og du tunneling alle trafikken gjennom Yale, 1179 00:54:35,770 --> 00:54:37,590 hvilken pris vi betaler kanskje? 1180 00:54:37,590 --> 00:54:38,272 >> PUBLIKUM: Speed. 1181 00:54:38,272 --> 00:54:39,480 DAVID J. MALAN: Speed, ikke sant? 1182 00:54:39,480 --> 00:54:41,430 Det må være litt matematikk eller noen fanciness involvert 1183 00:54:41,430 --> 00:54:42,574 i selve kryptering. 1184 00:54:42,574 --> 00:54:44,990 Det kan være flere tusen miles av avstand eller tusenvis 1185 00:54:44,990 --> 00:54:47,250 av miles av kabler mellom deg og Yale. 1186 00:54:47,250 --> 00:54:49,800 Og det er virkelig ille hvis du er i Kina, for eksempel, 1187 00:54:49,800 --> 00:54:51,650 og du ønsker å besøke et nettsted i Kina. 1188 00:54:51,650 --> 00:54:54,230 Og slik at dataene skal USA, og deretter tilbake til Kina 1189 00:54:54,230 --> 00:54:56,620 bare fordi du kryptere det gjennom denne tunnelen. 1190 00:54:56,620 --> 00:54:59,960 >> Men det løser tekniske og arbeide problemer likt. 1191 00:54:59,960 --> 00:55:02,050 Men det hele koker ned til disse svært enkle ideer. 1192 00:55:02,050 --> 00:55:06,530 Og Harvard, for de nysgjerrige, har en her også, på vpn.harvard.edu, 1193 00:55:06,530 --> 00:55:09,150 som fungerer akkurat som Yale-tallet. 1194 00:55:09,150 --> 00:55:12,580 >> Så med alt som er sagt, hvorfor er hele dette nettverket nyttig? 1195 00:55:12,580 --> 00:55:14,080 Og hva kan vi begynne å gjøre med det? 1196 00:55:14,080 --> 00:55:15,630 Vel, la oss gjøre dette nå mer reell. 1197 00:55:15,630 --> 00:55:17,610 Dette er en forkortelse som de fleste av oss 1198 00:55:17,610 --> 00:55:22,140 er trolig super familiar-- HTTP-- som står for Hyper Text Transfer 1199 00:55:22,140 --> 00:55:22,950 protokoll. 1200 00:55:22,950 --> 00:55:26,460 Og dette betyr nettopp dette er språket, protokollen 1201 00:55:26,460 --> 00:55:29,140 at nettlesere og web server snakke. 1202 00:55:29,140 --> 00:55:31,437 >> P i HTTP er faktisk en protokoll. 1203 00:55:31,437 --> 00:55:33,270 Og en protokoll er bare et sett av konvensjoner. 1204 00:55:33,270 --> 00:55:36,690 Vi har sett IP-- internett protocol-- TCP-- overføring kontroll 1205 00:55:36,690 --> 00:55:38,290 protocol-- og HTTP. 1206 00:55:38,290 --> 00:55:40,570 Men hva er dette dumt ting av en protokoll? 1207 00:55:40,570 --> 00:55:41,930 Det er bare et sett av konvensjoner. 1208 00:55:41,930 --> 00:55:43,760 >> Så hvis jeg liksom komme ned her, og jeg ønsker å hilse på deg. 1209 00:55:43,760 --> 00:55:44,930 Jeg vil si hei, mitt navn er David. 1210 00:55:44,930 --> 00:55:45,600 >> PUBLIKUM: Luis. 1211 00:55:45,600 --> 00:55:46,475 >> DAVID J. MALAN: Luis. 1212 00:55:46,475 --> 00:55:49,360 Vi har denne dumme menneske konvensjonen av skjelvende hender her. 1213 00:55:49,360 --> 00:55:50,570 Men det er en protokoll, ikke sant? 1214 00:55:50,570 --> 00:55:51,470 Jeg utvidet min hånd. 1215 00:55:51,470 --> 00:55:52,530 Luis utvidet sin hånd. 1216 00:55:52,530 --> 00:55:53,070 Vi gjorde dette. 1217 00:55:53,070 --> 00:55:54,790 Og deretter ferdig, ferdig. 1218 00:55:54,790 --> 00:55:58,100 >> Og det er akkurat det samme ånden av en datamaskin protokoll 1219 00:55:58,100 --> 00:56:02,770 der som i HTTP, det som skjer er dette. 1220 00:56:02,770 --> 00:56:05,520 Hvis du er datamaskinen på venstre her, og det er noen web 1221 00:56:05,520 --> 00:56:07,230 server der på høyre. 1222 00:56:07,230 --> 00:56:11,130 Og datamaskinen på venstre ønsker å be om informasjon fra denne serveren. 1223 00:56:11,130 --> 00:56:13,140 Det er litt av en toveis drift. 1224 00:56:13,140 --> 00:56:15,800 Nettleseren til venstre ber om noen web-side. 1225 00:56:15,800 --> 00:56:18,404 Serveren til høyre svarer med noen web-side. 1226 00:56:18,404 --> 00:56:20,570 Og vi får se hvilken form de tar bare et øyeblikk. 1227 00:56:20,570 --> 00:56:24,311 >> Og det viser seg at de computers-- som nettleser og server, eller klient 1228 00:56:24,311 --> 00:56:25,310 og server, så å si. 1229 00:56:25,310 --> 00:56:28,120 Mye som en restaurant der klienten ber om noe, 1230 00:56:28,120 --> 00:56:31,670 og serveren er å bringe ham eller henne something-- få 1231 00:56:31,670 --> 00:56:33,170 er litt det operative ordet. 1232 00:56:33,170 --> 00:56:38,560 Bokstavelig innsiden av konvolutten som Nettleseren min sender herfra til et web 1233 00:56:38,560 --> 00:56:40,880 Serveren er ordet får. 1234 00:56:40,880 --> 00:56:42,700 Som jeg ønsker å få dagens nyheter. 1235 00:56:42,700 --> 00:56:45,370 Jeg ønsker å få min Facebook news feed, eller jeg 1236 00:56:45,370 --> 00:56:47,330 ønsker å få litt siden fra serveren. 1237 00:56:47,330 --> 00:56:50,760 >> Spesielt er dette hva som er går på innsiden av konvolutten. 1238 00:56:50,760 --> 00:56:53,810 Så jeg, med Cole, i hovedsak sendte Cole et svar. 1239 00:56:53,810 --> 00:56:56,750 Hvis du forestille deg at Cole faktisk ønsket et bilde av Rick Astley, 1240 00:56:56,750 --> 00:57:00,700 han kunne ha sendt meg en forespørsel ligner i ånden til dette. 1241 00:57:00,700 --> 00:57:04,670 Innsiden av konvolutten hans til meg, der Jeg er nå å spille rollen som Google, 1242 00:57:04,670 --> 00:57:08,270 ville være en anmodning som bokstavelig talt sier, får, og deretter en fremover slash-- 1243 00:57:08,270 --> 00:57:10,636 og du har sikkert sett skråstreker i webadresser før. 1244 00:57:10,636 --> 00:57:13,260 Det betyr bare gi meg standard side, standard Rick Astley 1245 00:57:13,260 --> 00:57:14,560 bilde i dette tilfellet. 1246 00:57:14,560 --> 00:57:20,100 >> Og forresten, snakker Cole språket HTTP-versjon 1.1 eller 1.1 i protokollen. 1247 00:57:20,100 --> 00:57:22,090 Og det viser seg at det er en eldre versjon 1.0. 1248 00:57:22,090 --> 00:57:23,910 Men datamaskiner har en tendens til å bruke 1,1. 1249 00:57:23,910 --> 00:57:27,840 >> Den andre linjen er en nyttig ting som vil komme tilbake til kanskje før lenge. 1250 00:57:27,840 --> 00:57:31,900 Men det er bare en spesifikasjon for meg, mottakeren, at jeg ønsker 1251 00:57:31,900 --> 00:57:33,586 er www.google.com. 1252 00:57:33,586 --> 00:57:36,340 Fordi det er meget mulig disse dager for mange, 1253 00:57:36,340 --> 00:57:39,510 hundrevis av nettsteder med forskjellige domenenavn til alle 1254 00:57:39,510 --> 00:57:40,735 bor på samme server. 1255 00:57:40,735 --> 00:57:42,860 Det kommer ikke til å være sant så mye i Googles tilfelle. 1256 00:57:42,860 --> 00:57:45,261 Men i en mindre selskaps tilfelle, kan absolutt være. 1257 00:57:45,261 --> 00:57:47,260 Så Cole er bare slags sette i konvolutten, 1258 00:57:47,260 --> 00:57:50,840 forresten, når dette går din IP-adresse på port 80, 1259 00:57:50,840 --> 00:57:54,450 bare være sikker på at du vet Jeg ønsker www.google.com, ikke 1260 00:57:54,450 --> 00:57:56,740 noen andre tilfeldige hjemmeside på samme server. 1261 00:57:56,740 --> 00:58:00,360 >> Det jeg da svare på Cole med, på slutten av dagen, er et bilde. 1262 00:58:00,360 --> 00:58:02,920 Men på toppen av det bildet innsiden av konvolutten 1263 00:58:02,920 --> 00:58:05,600 er faktisk litt tekst, der jeg sier, OK. 1264 00:58:05,600 --> 00:58:07,970 Jeg snakker HTTP versjon 1.1 også. 1265 00:58:07,970 --> 00:58:09,200 200. 1266 00:58:09,200 --> 00:58:11,730 Som er en statuskode som de fleste av oss har trolig 1267 00:58:11,730 --> 00:58:14,185 aldri sett, fordi det betyr OK. 1268 00:58:14,185 --> 00:58:16,810 Og dette er bra, fordi det betyr at jeg reagerer hell 1269 00:58:16,810 --> 00:58:18,040 Cole anmodning. 1270 00:58:18,040 --> 00:58:21,930 >> Hva tallene har du sannsynligvis sett på nettet som ikke er OK? 1271 00:58:21,930 --> 00:58:22,780 >> PUBLIKUM: 404. 1272 00:58:22,780 --> 00:58:24,830 >> DAVID J. MALAN: 404-- fil ikke funnet. 1273 00:58:24,830 --> 00:58:27,520 Så ja, helst du har sett en av de irriterende filen ikke 1274 00:58:27,520 --> 00:58:31,010 funnet feil, fordi nettsiden er død, 1275 00:58:31,010 --> 00:58:34,190 eller fordi du tastet feil en URL, som bare betyr 1276 00:58:34,190 --> 00:58:37,600 at den lille konvolutten som din datamaskin mottatt fra serveren 1277 00:58:37,600 --> 00:58:42,670 inneholdt en melding HTTP 1.1, 404-- ikke funnet. 1278 00:58:42,670 --> 00:58:44,930 Filen eller at forespørselen du har gjort er ikke funnet. 1279 00:58:44,930 --> 00:58:48,660 >> Videre er innsiden av hylsteret vanligvis er denne linjen, innholdstype. 1280 00:58:48,660 --> 00:58:51,080 Noen ganger er det HTML, noe vi vil snart se. 1281 00:58:51,080 --> 00:58:52,225 Noen ganger er det en JPEG. 1282 00:58:52,225 --> 00:58:53,100 Noen ganger er det en GIF. 1283 00:58:53,100 --> 00:58:56,060 Noen ganger er det en film-fil, en lydfil, en rekke ting. 1284 00:58:56,060 --> 00:59:00,059 Så inne på konvolutten er bare en lite hint om hva jeg mottar. 1285 00:59:00,059 --> 00:59:03,100 Det finnes andre statuskoder også, noen som vi vil utforske i P satt seks, 1286 00:59:03,100 --> 00:59:05,890 og du vil snuble over i P satt sju og / eller åtte. 1287 00:59:05,890 --> 00:59:08,580 Men noen her, som 404 vi har sett. 1288 00:59:08,580 --> 00:59:11,700 Forbudt, 403, betyr som tilgangen er galt, 1289 00:59:11,700 --> 00:59:14,740 som om du ikke har en slags konfigurert den riktig. 1290 00:59:14,740 --> 00:59:17,830 301 og 302, vi sjelden ser visuelt. 1291 00:59:17,830 --> 00:59:19,150 Men de mener omdirigere. 1292 00:59:19,150 --> 00:59:21,650 Hver gang du har gått til én URL og du har vært magisk 1293 00:59:21,650 --> 00:59:24,410 sendt et annet sted, det er fordi nettleseren har sendt tilbake 1294 00:59:24,410 --> 00:59:27,210 en konvolutt som inneholdt antall 301 eller 302, 1295 00:59:27,210 --> 00:59:30,790 samt nettadressen som den ønsker Nettleseren din å gå til stedet. 1296 00:59:30,790 --> 00:59:32,010 >> 500 er fryktelig. 1297 00:59:32,010 --> 00:59:34,842 Du vil se det før lenge, sannsynligvis i P satt seks eller P satt syv. 1298 00:59:34,842 --> 00:59:37,050 Og det betyr vanligvis det er noen feil i koden din, 1299 00:59:37,050 --> 00:59:40,000 fordi faktisk vi skal skrive kode som svarer på web forespørsler. 1300 00:59:40,000 --> 00:59:42,110 Og du har bare fått noen feil i logikk eller syntaks, 1301 00:59:42,110 --> 00:59:43,820 og serveren kan ikke håndtere det. 1302 00:59:43,820 --> 00:59:47,460 >> Så la oss se hvordan vi kan nå utnytte og forstå disse forespørslene som følger. 1303 00:59:47,460 --> 00:59:50,716 Hvis jeg går til, la oss si, google.com. 1304 00:59:50,716 --> 00:59:55,240 La meg gå til www.google.com. 1305 00:59:55,240 --> 01:00:01,220 Og for demonstrasjon skyld, la oss se, jeg trenger å gå til Innstillinger her. 1306 01:00:01,220 --> 01:00:03,180 Jeg kommer til å gå til søkeinnstillingene. 1307 01:00:03,180 --> 01:00:08,236 Og Google har stadig irriterende funksjoner, men nyttige funksjoner. 1308 01:00:08,236 --> 01:00:11,110 Så Google har denne tingen som øyeblikkelig Resultatene der du begynner å skrive, 1309 01:00:11,110 --> 01:00:12,889 og automatisk ting begynner å vises. 1310 01:00:12,889 --> 01:00:14,680 Og det er alt greit og teknisk nyttig, 1311 01:00:14,680 --> 01:00:16,420 og vi vil forstå før lenge hvordan dette fungerer. 1312 01:00:16,420 --> 01:00:18,429 Men for nå, jeg snu off øyeblikkelige resultater, 1313 01:00:18,429 --> 01:00:20,720 fordi jeg vil at min nettleser for å slags arbeid gamle skolen så 1314 01:00:20,720 --> 01:00:22,940 at jeg kan se hva som skjer. 1315 01:00:22,940 --> 01:00:23,840 >> Så nå er jeg tilbake her. 1316 01:00:23,840 --> 01:00:25,090 Og jeg ønsker å søke etter katter. 1317 01:00:25,090 --> 01:00:30,351 Og legg merke til jeg ser noen forslag, noen veldig godartet forslag 1318 01:00:30,351 --> 01:00:30,850 heldigvis. 1319 01:00:30,850 --> 01:00:34,730 Og nå hvis jeg trykker Enter, La oss se hva som skjer. 1320 01:00:34,730 --> 01:00:35,850 >> Så er det noen katter. 1321 01:00:35,850 --> 01:00:37,540 Og den øverste treffet er på Wikipedia. 1322 01:00:37,540 --> 01:00:39,820 Men i dag bryr vi om teknologien opp her. 1323 01:00:39,820 --> 01:00:42,479 Så webadressen som jeg har blitt sendt dette her. 1324 01:00:42,479 --> 01:00:44,520 Og det er noen ting jeg forstår ikke helt. 1325 01:00:44,520 --> 01:00:47,430 >> Så jeg kommer til å gå videre, fordi Jeg slags vet hvordan Google fungerer, 1326 01:00:47,430 --> 01:00:50,700 og jeg kommer til å destillere dette URL inn i sin enkleste form. 1327 01:00:50,700 --> 01:00:52,510 Og nå kommer jeg til å trykke enter igjen. 1328 01:00:52,510 --> 01:00:53,360 Og det fungerer fremdeles. 1329 01:00:53,360 --> 01:00:55,800 Jeg har en side med resultater alt om katter. 1330 01:00:55,800 --> 01:00:58,460 >> Men legg merke til enkelhet av min URL. 1331 01:00:58,460 --> 01:01:00,820 Det viser seg at dette er hvordan mye av web fungerer. 1332 01:01:00,820 --> 01:01:03,500 Internett er bare en hel haug med datamaskiner 1333 01:01:03,500 --> 01:01:05,320 kjøre programvare som tar innspill. 1334 01:01:05,320 --> 01:01:07,480 Det er ikke få streng stil innspill. 1335 01:01:07,480 --> 01:01:09,670 Det er ikke kommandolinje argumenter som vi er vant til. 1336 01:01:09,670 --> 01:01:13,449 De tar inn, settes disse webservere, ved hjelp av nettadressene ganske ofte. 1337 01:01:13,449 --> 01:01:15,240 Og når du har søkte etter noe, 1338 01:01:15,240 --> 01:01:17,448 helst du har logget inn Facebook, helst du har 1339 01:01:17,448 --> 01:01:20,090 gjort noe interaktive med en web-side, hva du gjør 1340 01:01:20,090 --> 01:01:24,340 effektivt å sende inn et skjema, så å speak-- tekstbokser, avmerkingsbokser, 1341 01:01:24,340 --> 01:01:27,880 små sirkler og whatnot som sender informasjon fra deg til serveren. 1342 01:01:27,880 --> 01:01:31,960 >> Og det viser seg at nettet serveren vet å se på denne nettadressen 1343 01:01:31,960 --> 01:01:36,040 og analysere det, som ser på det tegnet ved tegn på utkikk etter noe 1344 01:01:36,040 --> 01:01:38,000 interessant etter et spørsmålstegn. 1345 01:01:38,000 --> 01:01:40,910 Fordi etter et spørsmålstegn, det viser seg, skal komme 1346 01:01:40,910 --> 01:01:42,730 en haug med sentrale verdiparene. 1347 01:01:42,730 --> 01:01:44,570 Jeg mener key = verdi. 1348 01:01:44,570 --> 01:01:48,130 Og så hvis det er multiple-- kanskje en ampersand, en annen nøkkel = verdi, 1349 01:01:48,130 --> 01:01:50,200 ampersand, key = verdi. 1350 01:01:50,200 --> 01:01:54,560 >> Så vi har på en måte sett denne ideen før der noe har en verdi. 1351 01:01:54,560 --> 01:01:55,880 Det er bare et nytt format her. 1352 01:01:55,880 --> 01:01:59,040 Og jeg bare vet, etter konvensjonen, Google bruker q for søket. 1353 01:01:59,040 --> 01:02:02,670 Og så hvis jeg vil søke etter hunder, jeg kan manuelt søke etter hunder sånn. 1354 01:02:02,670 --> 01:02:06,360 Og da er jeg tydeligvis får noen søkeresultater involverer hunder. 1355 01:02:06,360 --> 01:02:07,727 >> Så det ser ut til å være interessant. 1356 01:02:07,727 --> 01:02:10,060 Og ja, hva som skjer under panseret er dette. 1357 01:02:10,060 --> 01:02:11,460 La meg gjøre dette. 1358 01:02:11,460 --> 01:02:13,620 Dette er a-- la oss se. 1359 01:02:13,620 --> 01:02:16,320 La meg gå tilbake over her for bare et øyeblikk. 1360 01:02:16,320 --> 01:02:19,810 >> Vi vil se at det er andre måter å sende inn informasjon. 1361 01:02:19,810 --> 01:02:25,340 Så hvis jeg logger på Facebook, eller Gmail, eller andre populære nettsiden, 1362 01:02:25,340 --> 01:02:30,720 det synes slags dårlig hvis det jeg skrev i søkeboksen ender opp i min URL, 1363 01:02:30,720 --> 01:02:32,850 i min nettleserens adressefelt. 1364 01:02:32,850 --> 01:02:33,690 Hvorfor? 1365 01:02:33,690 --> 01:02:35,395 Hvorfor er det mildt bekymringsfull? 1366 01:02:35,395 --> 01:02:39,567 1367 01:02:39,567 --> 01:02:40,067 Yeah? 1368 01:02:40,067 --> 01:02:41,380 PUBLIKUM: Skriv inn et passord. 1369 01:02:41,380 --> 01:02:41,720 DAVID J. MALAN: Yeah. 1370 01:02:41,720 --> 01:02:44,000 Så hva om hva jeg har skrev inn er passordet mitt? 1371 01:02:44,000 --> 01:02:47,881 Jeg slags ikke ønsker det så åpenbart synlig i min nettleserens adressefelt. 1372 01:02:47,881 --> 01:02:50,630 En, fordi min irriterende romkamerat en tendens til å se over skulderen min, 1373 01:02:50,630 --> 01:02:53,980 og han eller hun kan nå se, selv om det var kuler når jeg skriver det inn, 1374 01:02:53,980 --> 01:02:54,810 små sirkler. 1375 01:02:54,810 --> 01:02:56,010 Nå er det i min adresselinjen. 1376 01:02:56,010 --> 01:02:59,270 >> Dessuten, hva er sant om ting du pleier å skrive i adressefeltet. 1377 01:02:59,270 --> 01:03:00,230 >> PUBLIKUM: [uhørbart] 1378 01:03:00,230 --> 01:03:01,505 >> DAVID J. MALAN: Hva er det? 1379 01:03:01,505 --> 01:03:02,630 PUBLIKUM: Det blir sendt ut. 1380 01:03:02,630 --> 01:03:03,510 DAVID J. MALAN: Det blir sendt ut. 1381 01:03:03,510 --> 01:03:05,102 Og også, det blir husket. 1382 01:03:05,102 --> 01:03:07,060 På grunn av at neste gang du skriver ting der oppe, 1383 01:03:07,060 --> 01:03:10,440 ofte det autocompletes og det husker hva du har skrevet før. 1384 01:03:10,440 --> 01:03:13,850 Og så er det denne veritabel historie at søsken, eller din romkamerat, 1385 01:03:13,850 --> 01:03:16,830 eller hvem som kan gå gjennom for å ganske mye ser hver nettside 1386 01:03:16,830 --> 01:03:19,760 du har besøkt fordi det er logget inn som adresselinjen. 1387 01:03:19,760 --> 01:03:22,790 >> Videre antar du vil laste opp et bilde til Facebook. 1388 01:03:22,790 --> 01:03:26,520 Hvordan i all verden er du kommer til å sette et bilde i en URL? 1389 01:03:26,520 --> 01:03:30,217 >> Vel, det viser seg at du kan gjøre det i noen måte, men det er absolutt ikke opplagt. 1390 01:03:30,217 --> 01:03:33,050 Og så er det denne andre måten sende informasjon i en konvolutt, 1391 01:03:33,050 --> 01:03:35,680 ikke via en GET, men via noe som kalles POST. 1392 01:03:35,680 --> 01:03:38,060 Og i teorien, ser det ganske mye det samme. 1393 01:03:38,060 --> 01:03:41,270 I stedet for ordet GET, sier vi POST, og deretter den samme type format. 1394 01:03:41,270 --> 01:03:43,310 >> For eksempel, er denne et skjermbilde av hva 1395 01:03:43,310 --> 01:03:46,920 det kan se ut som om jeg prøver logging inn i Facebook, som sender meg til en fil 1396 01:03:46,920 --> 01:03:51,230 kalt login.php, som faktisk er fortsatt til denne dag navngitt som sådan. 1397 01:03:51,230 --> 01:03:53,910 Det er det samme filnavn Mark ga til det mange år siden. 1398 01:03:53,910 --> 01:03:58,520 Det er programmet han skrev i PHP via der brukerne kan logge inn på nettstedet. 1399 01:03:58,520 --> 01:04:00,370 >> Men du trenger å sende noen ytterligere innspill. 1400 01:04:00,370 --> 01:04:05,170 Og heller enn det å gå etter filnavn som det gjorde før med cats-- 1401 01:04:05,170 --> 01:04:09,720 q = cats-- det kan gå lavere i anmodningen, dypere inne i konvolutten hvis du 1402 01:04:09,720 --> 01:04:12,440 vil der ingen kan se det, og hvor det ikke ender opp 1403 01:04:12,440 --> 01:04:15,670 i brukerens nettleser bar, og derfor ikke huske for folk å sniffe 1404 01:04:15,670 --> 01:04:16,290 rundt. 1405 01:04:16,290 --> 01:04:21,260 >> Og så her min e-postadresse og min falske passord faktisk gå. 1406 01:04:21,260 --> 01:04:27,400 Og hvis Facebook bruker ikke HTTP, men HTTPS, 1407 01:04:27,400 --> 01:04:30,710 dette vil alle bli kryptert, eggerøre, ala Cæsar eller Vigenère, 1408 01:04:30,710 --> 01:04:34,960 men mer fancily slik at ingen faktisk kan se denne forespørselen. 1409 01:04:34,960 --> 01:04:38,120 >> Og så ja, helst du har en URL som starter med HTTPS, 1410 01:04:38,120 --> 01:04:39,560 det betyr bare det er kryptert. 1411 01:04:39,560 --> 01:04:42,710 Men på slutten av dagen, hva er faktisk inne av disse konvoluttene? 1412 01:04:42,710 --> 01:04:44,070 Dette var super lavt nivå. 1413 01:04:44,070 --> 01:04:46,240 Og heldigvis, er vi ikke kommer til å nødvendigvis ha 1414 01:04:46,240 --> 01:04:49,310 å gå så lavt nivå hver gang for å begynner å skrive interessant programvare. 1415 01:04:49,310 --> 01:04:51,060 Vi kan begynne å ta ideene til uke en 1416 01:04:51,060 --> 01:04:54,020 gjennom fem, anta at det Nå er denne infrastrukturen som 1417 01:04:54,020 --> 01:04:57,160 lar oss skrive programvare som opererer på nettet, 1418 01:04:57,160 --> 01:05:00,120 og det kommer til å tillate oss denne kommende uken for å starte 1419 01:05:00,120 --> 01:05:01,840 å se på noe som heter HTML. 1420 01:05:01,840 --> 01:05:04,750 Dette er ting som er enda dypere inne i konvolutten, 1421 01:05:04,750 --> 01:05:06,150 men det er ting vi er kommer til å begynne å skrive. 1422 01:05:06,150 --> 01:05:08,020 Og det er ting mer interessant, vi er 1423 01:05:08,020 --> 01:05:11,420 kommer til å skrive programmer som begynner å generere automatisk 1424 01:05:11,420 --> 01:05:15,410 slik at våre nettsider er ikke hard kodet, men ta inn og produsere output. 1425 01:05:15,410 --> 01:05:18,810 >> Dette er kanskje den enkleste web siden du kan gjøre i verden. 1426 01:05:18,810 --> 01:05:23,000 Jeg kan faktisk åpne opp noe dumt som TextEdit 1427 01:05:23,000 --> 01:05:26,160 på min Mac, som bare gir meg en enkel tekstvindu som dette. 1428 01:05:26,160 --> 01:05:29,510 PC-brukere har Notepad.ext, som er svært lik i ånd. 1429 01:05:29,510 --> 01:05:33,212 >> Og jeg kan bokstavelig talt skrive ut dette-- DOCTYPE HTML, 1430 01:05:33,212 --> 01:05:34,420 som ser litt kryptisk. 1431 01:05:34,420 --> 01:05:35,850 Men vi vil komme tilbake til det. 1432 01:05:35,850 --> 01:05:38,730 HTML, med disse rare vinklede braketter og skråstreker, 1433 01:05:38,730 --> 01:05:42,240 innsiden av som nå kommer jeg til å si her kommer leder av nettsiden min. 1434 01:05:42,240 --> 01:05:45,220 Innsiden av det, jeg bare vet, og du vil snart vite, 1435 01:05:45,220 --> 01:05:47,850 at jeg kan sette tittelen på min nettside. 1436 01:05:47,850 --> 01:05:49,720 Og så under leder av nettsiden er 1437 01:05:49,720 --> 01:05:51,972 kommer til å gå til den såkalte kroppen av websiden. 1438 01:05:51,972 --> 01:05:54,180 Og jeg bare innrykk bare som i C til slags holde 1439 01:05:54,180 --> 01:05:57,620 ting pent lesbar stilistisk. 1440 01:05:57,620 --> 01:06:04,745 Og nå kommer jeg til å lagre dette som en filen på skrivebordet mitt, kalt hello.html. 1441 01:06:04,745 --> 01:06:06,770 >> Og jeg kommer til å fortelle det ja, bruke HTML. 1442 01:06:06,770 --> 01:06:09,690 Ikke endre det til .txt, selv selv om alt dette er en tekstfil, 1443 01:06:09,690 --> 01:06:12,130 på samme måte som en C-program skrevet med en tekst editor. 1444 01:06:12,130 --> 01:06:15,080 Selv om ikke i CS50 IDE på øyeblikket, bare her på min Mac. 1445 01:06:15,080 --> 01:06:18,490 >> Og hvis jeg nå gå til skrivebordet mitt, vil du se hello.html. 1446 01:06:18,490 --> 01:06:20,720 Hvis jeg dobbeltklikker dette, det vil åpne Chrome. 1447 01:06:20,720 --> 01:06:23,260 Og selv om denne filen skjer for å leve på skrivebordet mitt, 1448 01:06:23,260 --> 01:06:26,550 det er kanskje den enkleste nettside jeg kunne gjøre. 1449 01:06:26,550 --> 01:06:30,080 >> Legg merke til at tittelen på Kategorien vei opp toppen er hello world. 1450 01:06:30,080 --> 01:06:32,470 Liket av nettsiden er faktisk hello world. 1451 01:06:32,470 --> 01:06:35,830 Og alt jeg har gjort for å få til dette punktet er implementere, 1452 01:06:35,830 --> 01:06:38,342 eller er skrive et nytt språk, kalt HTML. 1453 01:06:38,342 --> 01:06:40,300 Det er ikke et programmerings språk som C. Det er 1454 01:06:40,300 --> 01:06:42,508 ikke kommer til å være forhold, og løkker og funksjoner. 1455 01:06:42,508 --> 01:06:46,560 Det er et kodespråk, der Hvis du bare fortelle mottaker 1456 01:06:46,560 --> 01:06:48,410 Programmet hva du vil gjøre. 1457 01:06:48,410 --> 01:06:51,195 Dette betyr hei nettleser, her kommer en HTML-side. 1458 01:06:51,195 --> 01:06:53,040 Hei nettleser, her kommer hodet på siden min. 1459 01:06:53,040 --> 01:06:55,130 Hei nettleser, her kommer kroppen på siden min. 1460 01:06:55,130 --> 01:06:57,100 Hei nettleser, det er det for kroppen. 1461 01:06:57,100 --> 01:06:59,350 Det er det for HTML-siden. 1462 01:06:59,350 --> 01:07:03,560 >> Og med disse enkle definisjoner alene, vil vi snart se at en, 1463 01:07:03,560 --> 01:07:05,122 vi kan representere dette som et tre. 1464 01:07:05,122 --> 01:07:06,080 Men mer om det senere. 1465 01:07:06,080 --> 01:07:08,788 Så dette vil alle interconnect til våre nyeste datastrukturer. 1466 01:07:08,788 --> 01:07:12,460 To, vil vi introdusere dette dum spøk. 1467 01:07:12,460 --> 01:07:15,680 Dette er en faktisk tatovering som denne fyren hadde på halsen hans. 1468 01:07:15,680 --> 01:07:19,660 Det er trolig morsomt den første uken eller to, og deretter, kanskje ikke så mye. 1469 01:07:19,660 --> 01:07:22,960 >> Men HTML, og selv på nettet siden jeg bare gjort, super sinn 1470 01:07:22,960 --> 01:07:25,670 numbingly disappointing-- bare si hei verden 1471 01:07:25,670 --> 01:07:27,210 i svart tekst på hvit bakgrunn. 1472 01:07:27,210 --> 01:07:28,680 Sikkert vi kan gjøre mye bedre. 1473 01:07:28,680 --> 01:07:31,552 Og vi vil gjøre det ved å introdusere et annet språk kalles CSS. 1474 01:07:31,552 --> 01:07:34,760 Dette også ikke et programmerings language-- ingen løkker og betingelser, eller for looper, 1475 01:07:34,760 --> 01:07:38,470 men egentlig, bare syntaks der vi kan si, gjøre denne teksten stor. 1476 01:07:38,470 --> 01:07:39,415 Gjør denne teksten små. 1477 01:07:39,415 --> 01:07:40,040 Høyre justere det. 1478 01:07:40,040 --> 01:07:40,650 Venstre justere det. 1479 01:07:40,650 --> 01:07:41,195 Gjør det rosa. 1480 01:07:41,195 --> 01:07:41,820 Gjør det lilla. 1481 01:07:41,820 --> 01:07:42,650 Gjør det blå. 1482 01:07:42,650 --> 01:07:44,860 Eller gjøre en rekke andre visuelle effekter. 1483 01:07:44,860 --> 01:07:48,590 Og så får vi se hvordan du starter stylizing websider slik at de ser på en måte 1484 01:07:48,590 --> 01:07:50,480 nærmere hva vi ønsker. 1485 01:07:50,480 --> 01:07:56,930 >> Og til slutt, har vi faktisk ødelagt kanskje mye av TV og film for deg. 1486 01:07:56,930 --> 01:07:58,930 Jeg trodde vi skulle ende her med vår endelige sekunder 1487 01:07:58,930 --> 01:08:03,700 på en endelig klipp som viser deg hvordan hacking på internett fungerer. 1488 01:08:03,700 --> 01:08:06,250 Hvis vi kunne dimme lyser en siste gang. 1489 01:08:06,250 --> 01:08:07,250 >> [VIDEO PLAYBACK] 1490 01:08:07,250 --> 01:08:09,520 >> -Aldri. 1491 01:08:09,520 --> 01:08:10,650 Jeg blir hacket. 1492 01:08:10,650 --> 01:08:11,770 >> -Okorsky? 1493 01:08:11,770 --> 01:08:14,230 >> -No-- Nei, dette er viktig. 1494 01:08:14,230 --> 01:08:17,074 De har allerede brent gjennom Kripos offentlig brannmur. 1495 01:08:17,074 --> 01:08:19,990 -Vel, Isolere node og dump dem på den andre siden av ruteren. 1496 01:08:19,990 --> 01:08:20,990 -Jeg prøver. 1497 01:08:20,990 --> 01:08:23,990 Det har gått for fort. 1498 01:08:23,990 --> 01:08:25,179 >> -OH, Er ikke bra. 1499 01:08:25,179 --> 01:08:27,470 De bruker vår forbindelse [Uhørbart] denne databasen. 1500 01:08:27,470 --> 01:08:28,458 Bryte den. 1501 01:08:28,458 --> 01:08:28,958 -Jeg Kan ikke. 1502 01:08:28,958 --> 01:08:29,454 Det er et poeng angrep. 1503 01:08:29,454 --> 01:08:31,438 Han eller hun er bare gå etter min maskin. 1504 01:08:31,438 --> 01:08:32,430 >> -Det er ikke mulig. 1505 01:08:32,430 --> 01:08:33,847 Det er DOD nivået mitt kryptering. 1506 01:08:33,847 --> 01:08:35,055 Det vil ta måneder å get-- 1507 01:08:35,055 --> 01:08:35,857 -Hei, Hva er det? 1508 01:08:35,857 --> 01:08:36,398 En video game? 1509 01:08:36,398 --> 01:08:37,886 >> -Nei Tony, vi får hacket. 1510 01:08:37,886 --> 01:08:40,795 >> -Hvis De får i Abby datamaskin, hele NCIS nettverket er neste. 1511 01:08:40,795 --> 01:08:42,050 >> -Jeg Kan ikke stoppe ham. 1512 01:08:42,050 --> 01:08:43,050 Gjør noe McGee. 1513 01:08:43,050 --> 01:08:44,550 >> -Jeg Har aldri sett kode som dette. 1514 01:08:44,550 --> 01:08:47,432 1515 01:08:47,432 --> 01:08:48,571 -Å. 1516 01:08:48,571 --> 01:08:49,196 -Hvor Er det? 1517 01:08:49,196 --> 01:08:50,604 Abby? 1518 01:08:50,604 --> 01:08:51,520 -Jeg Har ikke gjort noe. 1519 01:08:51,520 --> 01:08:53,020 Jeg trodde du gjorde. 1520 01:08:53,020 --> 01:08:54,520 >> -Nei. 1521 01:08:54,520 --> 01:08:57,232 >> -Jeg gjorde. 1522 01:08:57,232 --> 01:08:58,307 >> [END PLAYBACK] 1523 01:08:58,307 --> 01:09:00,390 DAVID J. MALAN: Den beste delen er to personer skrive 1524 01:09:00,390 --> 01:09:02,170 på tastaturet samtidig. 1525 01:09:02,170 --> 01:09:03,200 >> Så det er det for CS50. 1526 01:09:03,200 --> 01:09:04,700 Vi holder oss rundt etter kontortid. 1527 01:09:04,700 --> 01:09:06,344 Og vi ser deg neste gang. 1528 01:09:06,344 --> 01:09:07,760 [MUSIC SPILLE - "SEINFELD tema"] 1529 01:09:07,760 --> 01:09:11,139 1530 01:09:11,139 --> 01:09:11,680 Dette er CS50. 1531 01:09:11,680 --> 01:09:17,960 1532 01:09:17,960 --> 01:09:20,854 Jeg ønsker ikke å være en pirat. 1533 01:09:20,854 --> 01:09:21,770 SPEAKER 2: Yarr David. 1534 01:09:21,770 --> 01:09:23,700 Det er en fin dublett du være seg. 1535 01:09:23,700 --> 01:09:26,450 Mange av forliket i at puff. 1536 01:09:26,450 --> 01:09:29,327