[Musikk spilles] SPEAKER 1: All right, velkommen tilbake til CS50. Dette er slutten av uke åtte, og nesten Halloween. I morgen kveld har kontortid vil være de skumleste seg ennå, og ikke fordi av Halloween. Men på dette notatet, innser at Problemet satt seks, det stavekontroll oppgavesettet, er kjent for å være, for mange studenter, den mest utfordrende, absolutt blant de C oppgavesett, og virkelig, generelt. Og jeg nevner dette bare fordi dette er uken hvor mange mennesker får spesielt stresset med bare prøver for å få den jævla stavekontrollen til å fungere. Og en ting jeg vil oppfordre deg er det, som du ser i dag, og på mandag, begynner vi å treffe denne toppen denne uken der, nå, ting blir en litt mer kjent, er en litt mer tilgjengelig, under overgangen fra en kommandolinje miljø i C til en web-basert miljø i PHP. Og så vil jeg oppfordre deg, selv om du er virkelig på din arme råd i prøver å få p satt til arbeid, hvis det er faktisk det stedet du er på, eller finne deg selv på, prøver til strøm gjennom den. Fordi jeg tror du vil være helt fornøyd, og ganske stolt av deg selv, hvis du virkelig ende den delen av Selvfølgelig, C del, på så høy, hvis stressende, merk. Så det er ikke for å skremme. Det er bare ment for å oppmuntre deg til holde opp den ekstra timen for å bli den stavekontroll fungerer. Og hvis du gjør det, skjønner at dette er valgfri, helt. Men vi har den såkalte big board som gikk live i morges. Som i morges, var jeg på toppen av store bord, som er et mål på hvordan mye RAM og hvor mye kjøretiden programmet stavekontroll krever. Men jeg har siden drevet på flukt. Jeg er nå den uheldige nummer 13. Og hva du vil se her er, David Kaufman, og Lauren, og Adam, og Jason, og andre er nå på toppen av den store bord. Hvis du ser der borte til høyre, alle av oss har virkelig god implementeringer av størrelse minst - retur antall ord i ordlisten. Og i hver av disse kolonnene, vil du se hvor mye RAM hver av våre implementeringer bruker, hvor mye kjøretid det tar å utføre belastning, versus sjekk, versus størrelse og losse, og da, total kjøretid. Så bare for å berolige Elmer, og Patrick, og Linda, og alle andre som kommer etter deg, er det absolutt ingen skam i å være mot bunnen av et stort A. Hvis noe, betyr at du fikk jobbe, og det er riktig, men det er ikke nødvendigvis så effektiv, plass eller tidsmessig, som det kan være. Så, helt valgfritt. Men ment å være en gulrot slags så at når du arbeider på p din satt, du er så stolt av deg selv, du fikk det til å fungere, legger du til den store styret, har du fått en virkelig god del, går du til middag, kommer du tilbake, og romkameratene har falt deg ut på den store bord. Vel, det er tid, på det tidspunktet, for å gå tilbake til tegnebrettet, slik som å re-utfordrer den store bord. Hvis du ser på spec, den instruksjoner for grensesnitt med stort bord er nå lagt ut. Så et par hoder ups - en, den pre-forslag for den endelige Prosjektet er planlagt førstkommende mandag. Se denne spec på kursets nettstedet for hva det betyr. Det er egentlig bare en uformell, men trodde provoserende e-post mellom deg og din TF, egentlig bare for å få ting i gang, det ble startet, selv om de fleste av dere har aldri selv skrevet en nettside før, ikke engang vet hva du kanskje, hvordan du kanskje, implementere det endelige prosjektet. Gå på tro at du vet hvordan du gjør ganske mange flere ting i noen uker. Så bare begynne denne prosessen per spec av å utforske mulige ideer. Også, hva vi ville invitere deg til å gjøre er - Vi har en tradisjon i mange år nå, i løpet, av hosting dette - store.cs50.net. Alt er solgt til kostpris. Og det er egentlig bare en mulighet til å slitasje CS50, hvis du ønsker å gjøre at ved kursets og. For eksempel er det slike ting som t-skjorter som du kanskje har sett går rundt campus, sweatshirts. Og så har vi også be elevene sende design å bli udødeliggjort i den CS50 butikken. For eksempel, en av fjorårets favoritter som vil, kanskje, nå appellerer til deg er denne her. Svært populært element. Så hvis du ønsker å delta i dette, vil vi sette opp et skjema snart, på cs50.net/design, som du kan laste opp et bilde som du har gjort i Illustrator eller Photoshop, eller noe lignende program. Og hvis du er kjent med slike spesifikasjoner, vi vil ha det til være et PNG-bilde, minst 200 punkter per tommers, og færre enn at mange piksler, og under 10 megabyte. For flere detaljer, bare e kursets hoder på heads@cs50.net hvis du ønsker å delta i dette. Ok, så i dag, ikke mer C. Så vi begynne å trekke tilbake lagene i Internett, web, og hvordan du kan faktisk begynne å skrive programvare for dette annerledes miljø. Så akkurat i dette, la oss be, første, spørsmålet - la meg få oss til våre kjente tegning app over her. La meg stille spørsmålet om, hvordan internett fungerer. [? STUDENT: Magic. ?] SPEAKER 1: Magic. OK. Godt svar. Så vi starter der i dag, og se om vi kan ikke gjøre det litt mindre magisk innen en time. La oss prøve å fortelle den i sammenheng med en historie. Så du er tilhenger av å gå til facebook.com, eller reddit.com, eller hva disse dager. Og så hva som egentlig skjer når du skriver inn noe sånt facebook.com, og trykker Enter, i Chrome, eller Firefox, eller IE, eller Safari, eller hva nettleser du er faktisk gjør? Kan vi fortelle denne historien, kanskje setning for setning? Hva er en av de første tingene som skjer når du trykker på Enter, etter skrive facebook.com? [? STUDENT: Ditt] datamaskin gjør en HTTP-forespørsel. SPEAKER 1: OK. Så datamaskinen gjør - vi vil kalle det - en HTTP-forespørsel. Nå hva betyr det? Vel, har alle av oss sikkert sett eller skrevet, i mange år nå, H-T-T-P ofte etterfulgt av kolon, skråstrek, skråstrek. Så hva er det? Vel, HTTP HyperText Transfer Protocol. Og det er bare en fancy måte å si: Det er språket som nettlesere, som Chrome og andre, og webservere, som facebook.com, snakke med hverandre. Og det er en ganske enkel, engelsk orientert språk. Det er nesten som pseudo-kode. Og det er en måte en klient, som vi kaller det - en nettleser - kommunisere med serveren. Og akkurat som i en restaurant, når du, klienten, sitte ned ved et bord og deretter bestille noe ut av Menyen på serveren, er at serveren kommer til å ta med seg ting, hva er det du ba om. Samme i dataverdenen. En nettleser - en klient - kommer til å gjøre en forespørsel, og da forhåpentligvis komme tilbake noe fra serveren. Og at noe er, til en høyt nivå, web side. På et litt lavere nivå, er det en fil som er skrevet i en annen språk som heter HTML - HyperText Markup Language. Men mer om det i løpet av et øyeblikk. Så HyperText Transfer Protocol - HTTP - det er den protokollen som nettleser og server bruk. Vel, hva er en protokoll, egentlig? Vel, kan du tenke på det som et språk. Men hvis jeg nå ut til vårt publikum her, en normal ting for oss mennesker til vet er, når vi hilser noen, Jeg sier hei, mitt navn er David. [? STUDENT: Hei,] mitt navn er Dipty?. SPEAKER 1: "Hei, mitt navn Dipty, "svarer hun. Og så vi har hatt dette ganske vilkårlig interaksjon av skjelvende hender, er som ofte den menneskelige konvensjonen i de fleste land. Og det er en protokoll, ikke sant? Jeg liksom startet det ved å utvide min hånd, snarere forkjært, på scenen av Sanders her. Hun skjønte, oh, har jeg fått en be om en hånd tilsynelatende. Og så hun svart på forespørselen ved faktisk å anerkjenne det. En anerkjennelse, ACK, er faktisk en setning svært vanlig i verden av nettverk, for en server å erkjenner klienten. Så, vi liksom ferdig som transaksjon, og forlegenhet over. Så det er egentlig hva som skjer under panseret i tillegg. La meg gjøre dette litt mer teknisk under panseret. Jeg kommer til å gå over her til en terminal vindu. Dette terminal vindu skjer for å være på min Mac, men du kan gjøre det samme type ting i CS50 Appliance. Og jeg faktisk kommer til å bruke et program at vi ikke vil virkelig brukes for mye i det hele tatt semesteret. Men det heter Telnet. Tilbake i dag, var Telnet programmet som du brukte til å koble til en ekstern server, for å sjekke e-posten din eller å gjøre noe sånt. For nå, vi kommer til å bruke denne gamle skoleprogram, Telnet, å late som være en nettleser. Og jeg kommer til å gå videre og gjøre følgende - la meg øke min skriftstørrelse. Og jeg kommer til å si, Telnet til server kalt www.facebook.com, men spesielt, Telnet til port 80. Vi vil komme tilbake til dette. Men for nå, vet at de fleste tjenester på internett er identifisert entydig med noen tall. I dette tilfellet er det 80. Nå er de fleste av dere har sikkert aldri skrevet 80 før. Men i virkeligheten, hvis jeg går til en nettleser og trekke opp, for eksempel, http://www.facebook.com/-- det er autofullfør, det er ikke min historie - all right, så nå går vi til tykktarmen 80 slash. Så jeg hevder at selv om du har sannsynligvis aldri skrevet dette før, med tykktarmen 80 etter facebook.com, forhåpentligvis, er det fortsatt kommer til å fungere. Og ja, det går til facebook.com. Så det viser seg at 80 har vært implisitt. Ingen av oss mennesker har hatt å skrive det i årevis. Fordi nettlesere som standard, bare anta at nummeret du ønsker å bruke når du ringer opp en server så å tale er, faktisk, 80. Fordi lang historie kort, servere kan gjøre mye mer enn bare tjene opp nettsider. De kan svare på direktemeldinger. De kan sende e-post. Det er massevis av tjenester som kan kjøres på en enkelt server. Så disse tallene - i dette tilfellet 80 - identifiserer en av dem tjenester, som er HTTP, i web-protokollen enn en server kan faktisk støtte. Men jeg kan simulere denne forespørselen nå, ordrett, ved hjelp av denne gamle skolen Telnet program. Så jeg kommer til å hovedsaklig nå late å være en nettleser og snakke HTTP ved å sende, med tastaturet mitt, akkurat kommandoene som Chrome bare visste hvordan å sende for meg magisk. Så jeg kommer til å gå videre og trykk Enter. Legg merke til at det er prøver 31.13.69.32. 13 Hva er det? Så det er en IP-adresse. Nå selv om du ikke er altfor kjent med vanskelighetene med dem, du sannsynligvis ha en generell følelse at disse tingene eksisterer. Og en IP-adresse - Internet Protocol-adresse - er bare en unik identifikator for en datamaskin på internett. Dette er litt av en overforenkling for øyeblikket. Men hver datamaskin på internett har en unik IP-adresse, mye som hver Huset i, sier at USA har en unik postadresse, noe som 123 Main Street, i Majorstua, USA. Så noe sånt. Og det også er overforenkling. Men disse adressene som vi har i postvesenet verden og disse adressene at vi har i dataverdenen identifiserer servere, slik at når du sender en melding til dem over internett, eller når du setter inn en bokstav i en gammel skole postkasse - postbrev - tjenesten vet hvordan du får det forespørselen, eller som brev, til tiltenkte mottakeren. Nå er min datamaskin, liksom, har bare funnet ut at Facebook unike IP er 31.13.69.32. Faktisk kan det trolig endre seg. Facebook har trolig flere IP adresser, fordi de absolutt har mer enn én server. Men det har skjedd for oss magisk. Faktisk er den indre hemmelig navn serveren jeg har tydeligvis koblet å kalles star.c10r.facebook.com, uansett hva det er. Det er bare hva systemet administrator på Facebook besluttet å kaller dette bestemt server som jeg ble noe tilfeldig sendt til. Så nå hvis tilkoblingen min har ikke tidsavbrudd, kommer jeg til å later til å være at nettleseren. Jeg kommer til å si få plass skråstrek plass. Og jeg kommer til å late som de snakker HTTP versjon 1.1, som er den som de fleste nettlesere bruke. Og jeg spesifikt kommer til å nevne til serveren, forresten, jeg vil ha den nettside kjent for verden som facebook.com. Enter, Enter. Og nå merke til hva som skjedde. Serveren, servitør, har reagert til bestillingen min, eller min forespørsel, med en annen tekstmelding. Nå igjen, i verden av nettlesere som Chrome og Safari, ville du ikke ser dette, som den menneskelige. Microsoft og Google bare skjule disse detaljene fra oss. Men Facebook har reagert med en svar, også i språket HTTP. Merker det er en kode her, 302, som faktisk har spesiell betydning ved konvensjonen. Funnet, så det er i hvert fall lovende. Men tydeligvis Facebook forteller meg, mm-mm, om du ikke ønsker det du ba om. Du stedet vil dagens spesielle, som er facebook.com / unsupportedbrowser. Så på et høyt nivå, hva gjør Facebook synes å være å gjøre her? Det omdirigere meg. Så Facebook ikke liker faktum at jeg later til å være denne nettleseren. Og så det er omdirigere meg til noen nettside. Jeg er faktisk nysgjerrig nå, hva denne tingen ser ut. La meg gå over til at i Chrome så vi kan se hva de vil ha meg til å se. Så nå har de faktisk sendte meg tilbake til Facebook fordi de har innsett, oh, har du en nettleser som støttes. Vi er ikke engang kommer til å vise deg den siden. Så la oss gå videre og se hvis vi ikke kan fikse dette. Jeg er nødt til å jukse litt. Og mer på dette i ukene som kommer. Men jeg kommer til å gjøre en ting her. Og jeg skal forklare dette før lenge. Gi meg bare et øyeblikk å jukse, og imponere deg. Så la meg få denne. OK. Jeg skal forklare hva jeg gjør på bare et øyeblikk. Jeg kommer til å gå videre og avbryte denne tilkobling, og prøve dette igjen. Få slash HTTP 1.1 host www.facebook.com user-agent. OK. Nå har jeg lot som Chrome. Så det viser seg at når en leser sender en forespørsel til en server, det er bare ære systemet. Hvis jeg sier jeg er Chrome, Facebook vil anta jeg er Chrome. Og de midlene som jeg identifiserte meg selv som Chrome er etter dette atrociously lang streng. Hovedsak, hele nettleseren produsenter i verden har besluttet, vel, denne versjonen av dette Nettleseren på dette operativsystemet vil har en bruker-agenten streng som ser sånn sprø rotet der. Og Mozilla er der for historiske årsaker. Men legg merke til hvor mye informasjon jeg er lekker til facebook.com uten selv logge inn Jeg forteller Mark at det er en Mac som jeg bruker. Jeg forteller ham at det er en Intel basert Mac som kjører Mac OS 10.8.5. Som en digresjon, er denne informasjonen kommer til hvert nettsted du besøker med nettleseren. Ganske ufarlige så langt, men det blir litt saftigere. Legg merke til at, hvis vi leser langt nok, Jeg bruker Chrome versjon 30.0.1599.101. Men nå, merker at responsen er ikke så ille som det var før. Hvor er Facebook forteller meg å gå nå? Det forteller meg, igjen, nettsiden - det forteller meg at det er flyttet permanent. Vel, hvor pokker Facebook reise? Ja, så det er en subtil forskjell. Men legg merke til her, at nettstedet har faktisk flyttet til HTTPS. Så lang historie kort, er dette en måte at Facebook er håndheve at jeg faktisk ende opp på den sikre versjonen av deres hjemmeside, den som er med kryptering - mer kompleks enn den kryptering vi snakket om for p sett to, men kryptering likevel. Nå på dette punktet blir det vanskelig for meg å forfalske deres web be om hjelp av Telnet. Fordi hvis de forteller meg å bruke SSL - HTTPS-prefikset er hva som tilsier - hvis de forteller meg å bruke kryptografi, det er ingen måte jeg kommer manuelt kryptere meldingen min foran av alle dere her, og prøve å finne ut hvordan du gjør det. Det er bare kommer til å få mye mer kompleks. Men det er hva leseren gjør for deg. La oss se om vi ikke kan gjøre dette litt mer enkelt, og deretter, med en nettside som ikke forventer oss å være så sikker. La oss gå til, si, harvard.edu på port 80. Enter. Greit, så får slash HTTP 1.1. Og hva betyr dette først slash? Bare for å være klar, hvorfor gjøre Jeg fortsette å skrive det? Vel normalt, når du skriver inn en URL - og dessverre, nettlesere vanligvis skjule dette i disse dager - Normalt, når du går til harvard.edu, at URL offisielt ikke ender i en skråstrek. Fordi en enkel slash betegner hvilken del av harddisken? Roten av harddisken. Vi i Appliance har egentlig ikke hatt å tenke på dette, fordi vi er alltid i John Harvard mappe. Men hans mappen er i en annen mappe. Og at mappen er i roten av Apparatets harddisk, så å si, selv om det er virtuelle. Så en enkel slash som dette betyr roten av harddisken. Det er som C kolon skråstrek, eller det er roten av volumet, på Mac OS. Men Chrome og andre nettlesere disse dager, har fått brukervennlig, og de skjuler at slash helt. Men det er alt som betyr i min tekstmelding - gi meg roten av harvard.edu 's hjemmeside, det vil si standard selve siden. Så la meg gå videre og trykk Enter. La meg minne verten som jeg ønsker www.harvard.edu, bare i tilfelle det er andre nettsteder som lever på samme fysiske server. OK. Harvard fikk litt utålmodig med meg. Så la oss gjøre dette igjen, raskere. Få slash HTTP 1.1 host www.harvard.edu user-agent - Jeg gjetter våre servere ikke omsorg så mye om dette - Enter, Enter. Puh. Å faen, dårlig forespørsel. OK. Så hva er det som skjer her - hallo, harvard.edu. Hvorfor er det å gjøre det - interessant. Oh, OK. Så hva Harvard er nå gjør - og vi er kommer til å raskt dreier av fra denne veien, fordi det kommer å få kjedelig raskt - legge merke til at Harvard er faktisk komprimere sitt svar til meg, som er ikke ideelt. Fordi I, tilsynelatende som et menneske, ikke vet hvordan å dekomprimere biter som har blitt sendt til meg komprimert. Og de blir vist er søppel der, fordi de er nuller og enere, men de er ikke ASCII-tegn. De er mønstre av nuller og enere som har blitt komprimert for å ta opp mindre plass. Så veldig raskt, la meg se hvis jeg kan gjenopprette her. La oss prøve, kanskje, en annen campus helt. mit.edu get slash HTTP slash 1.1 host www.mit.edu user-agent tykktarmen der. Takk, MIT. OK. Så her har vi en nettside. Så dette er språket kjent som HTML - HyperText Markup Language. Jeg er ganske enkelt å rulle opp igjen i tid for å få til det aller tip top på denne siden. Og legg merke til hvordan MIT har respondert til min forespørsel. 200 er god. 200 betyr alt er bokstavelig talt OK. Og det er en status kode som vi mennesker egentlig aldri se, på en god måte. Fordi det betyr at alt er bra. Legg merke til at MIT er å informere meg, hei, serveren vi kjører kalles Apache, som er et svært populært åpen kildekode gratis web server. De kjører, tilsynelatende, UNIX, som er en operativsystem som Linux. Legg merke til at de tilsynelatende oppdatert deres nettside på 04:00, Greenwich Mean Time. Legg merke til et par andre detaljer. De er tilbake, for meg, text / html. Så får vi se hva det betyr på bare et øyeblikk. De har tydeligvis gitt meg 14717 bytes verdt av HTML. Og noen andre, mer esoteriske informasjonen er der inne. Men det er her det blir interessant. Dette er hvordan du lage en nettside. Dette er hvordan du lage en nettside som tittelen i kategorien i nettleseren din, er MIT bindestrek Massachusetts Institute of Technology. Og ja, hvis vi går tilbake til Chrome og besøke www.mit.edu, merke det, faktisk, i tittelen her oppe, er MIT dash Massachusetts Institutt prikk, prikk, prikk. Og nå merke til, også, hvis jeg høyreklikker eller Kontroll-klikk på skrivebordet her, og gå til Vis side Source - i det minste i krom, skjønt hver browser gjør dette via noen midler - her er den samme filen. Det skjer for å være fargekodet, eller syntaks markert. Men akkurat som med C-kode som ble ikke fargelegges av deg, var det fargelegges av gedit, på samme måte er Chrome bare å lage dette penere å lese. Men dette er ting som vi vil snart være å skrive. Så det er sluttspillet. Serveren har svart med at informasjon, akkurat som svarte deg med hånden for håndtrykk vår. Men hva annet må gå på i mellom disse trinnene? Vel, når jeg skriver inn, i det siste tilfellet, www.mit.edu og trykker Enter, vi vet at det å snakke med port 80 automatisk port bare å være det nummeret. Men hvor ble det av IP-adressen reise? Hvor er min datamaskin å finne ut hva IP-adressen til mit.edu er? Vel, viser det seg, i denne verden, det er ting som heter DNS-servere. Og la meg gå videre og tegne et raskt bilde over her. Og dette vil bare skissere, i grove trekk, hva skjer. Så vi vil late som dette er min laptop her, i Sanders. Og det har Wi-Fi, slik at den er koblet trådløst til noe. Hva er det faktisk koblet til? Vel, et sted her inne, det er noe på vegg med noen antenner. Og det kalles et tilgangspunkt - AP. Trådløst aksesspunkt, trådløs ruter - kall det hva du vil. Men de er hele campus, med de små antenner. Ours er laget av Cisco, typisk. Og så en eller annen måte, er min datamaskin snakker til at trådløst tilgangspunkt, et sted her i Sanders, eller nede, eller utenfor. I mellomtiden har denne tingen mye fysiske ledninger skal trolig, Science Center, som vi vil tegne som dette. Det gjør faktisk ikke ser sånn. Det ser faktisk mye bedre. Så Science Center har en hel haug av datamaskiner ut av det som eller annen måte er fysisk koblet til alt av disse tilgangspunkter på campus. Og de fysiske datamaskiner, vil vi ringe rutere eller gatewayer. En ruter, som navnet antyder, er det formål i livet er å rute informasjon. Det tar noen biter, fra en datamaskin, som input, og tallene ut til der de bitene skal sendes til. Så i tilfelle av min forespørsel om mit.edu, det er faktisk ganske enkelt. Min forespørsel kommer fra nettleseren min, over Wi-Fi, til tilgangspunktet, da, via en kabel, til en ruter i Science Center. Og en eller annen måte, ruteren i Science Center tallene ut at MIT er på den måten. Og jeg kommer til å gå videre de bits, kommer jeg til å rute de bitene, nedover veien, ned Mass Ave., til MIT. Men hvordan gjorde maskinen min vet hva IP-adressen selv var? Vel det viser seg at et sted her er det servere - og jeg kommer til å trekke det ganske abstrakt - som en DNS-server - Domain Name System. Disse er ikke rutere. Dette er ulike typer servere hvis formål i livet er å oversette vertsnavn, som www.mit.edu, til IP adresser, som 1.2.3.4 Så DNS-servere gjøre akkurat det. Du kan tenke på dem som har en stor database, eller egentlig, som en stor Excel fil med to kolonner. En er vertsnavn, en er IP-adresser. Og de bare konvertere den ene til den annen, i begge retninger. Nå i virkeligheten er det litt mer kompleks enn det. Men det er hvordan datamaskinen min, min tilfeldig Mac eller PC på denne tabellen her, vet hva unik identifikator er for www.mit.edu, eller Facebook, eller harvard.edu, for den saks skyld. Men selvfølgelig, det er helheten av Mass Ave her. Og så får vi MIT, som denne er faktisk mer overbevisende. Det blir MIT. Og slik at de også har noen servere. Og de liksom har en kablet eller trådløs, tilkobling til Harvard. Og selvfølgelig, vi kan gå mye lenger nedover veien enn MIT, og snakke med mest hvilken som helst datamaskin i verden. Men la oss se om vi ikke kan se det. La meg gå tilbake til Terminal min vindu for bare et øyeblikk. Og la oss anta at jeg har funnet ut hva IP-adressen er for mit.edu som Telnet funnet det ut før, og nettleseren min kan tydelig finne det ut for meg. Og jeg kommer til å kjøre et annet program, i denne Terminal-vinduet, kalt traceroute, sporing rute fra her - bokstavelig talt, denne tabellen - til www.mit.edu. La oss se hva som skjer. La meg faktisk krympe skriftstørrelsen. Oop. Nei, jeg ønsket å overraske deg. OK. Så here we go. La meg gå videre og kjøre dette her. Og det jeg så for et øyeblikk siden, og vi ser igjen nå, er dette utgang - traceroute www.mit.edu. Legg merke til, i første linje, dette programmet faktisk funnet ut at MITs IP-adresse er dette nummeret her. Og nå, hva skjer mellom oss og dem? Så denne linje her, på rad, og denne linje her, i rad to, og deretter, rad tre - hva gjør hver av disse linjer sannsynligvis representerer? Steder, poeng, sikker. De kalles humle, konseptuelt. Men fysisk, hva er de? De er rutere. Vi har bare, egentlig, ett stykke hardware her for å snakke om så langt. De er rutere. Så denne tingen her - gal navn - men dette er trolig maskinrom, MR, i Science Center. Det er en gateway, aka router. Dette er bare noe unikt nummer som noen kom opp med for det. Og det er innen harvard.edu. Og det er den ip-adressen som ruteren det er, igjen, sannsynligvis i Science Center, basert på navnet. Denne andre rad representerer en annen router som ikke har et kallenavn tilsynelatende - et vertsnavn - det bare har en IP-adresse. Så lang historie kort, for å få data fra punktene A til B, det er mer enn bare Harvards router, og MITs ruter, og Googles ruter, og Facebooks router. Det er dusinvis, hundrevis, tusenvis av rutere mellom ethvert punkt A og eventuelle punkt B på Internett. Men vanligvis, kan du få data fra ett punkt til et annet i færre enn 30 hopp. Med andre ord, du trenger bare å levere dataene til 30 eller færre slike rutere. Og det er vanligvis mange færre enn det. Vel, la oss se hva som skjer her. I rad tre, traff vi en router som heter Kjernen Science Center gateway et eller annet. I rad 4, har vi Border Gateway - disse er bare kryptiske forkortelser - også innen harvard.edu. Her er en annen grensen gateway. Og så, plutselig, whoa, vi synes å være i New York City. Så det viser seg - og jeg er i dedusere bare fra vertsnavn. Dette kan være misvisende. Det kan være nede i veien. Det er tøft å si - men denne kan brukes som et åpenbaring at den korteste avstanden mellom to punkter på internett er ikke nødvendigvis en rett linje. Hvis vi tenker på korteste som den raskeste bane, den minst trafikkerte banen, er det fullt mulig - selv om vi ikke kan være sikker - at dataene er på reise en anstendig Avstanden mellom radene fem og seks. Nå dessverre MIT, eller noen, fikk litt selvtillit defensive, og de har begynte å ignorere våre forespørsler. Disse ruterne er konfigurert til ignorere forespørsler av skjemaet som er deg, hvem du er, hvem du er. Så la oss se om vi ikke kan gjøre dette med noen mer samarbeidsvillig. Så Stanford har en fin tradisjon for ha en litt større åpenhet. Så la oss se hva som skjer her. Igjen, ganske kryptisk. Men vi begynner, igjen, i maskinen rom i Science Sentrum, i rad én. Så det er bra. De fleste av serverne gjorde svar, inkludert Stanford. Så merker vi gikk fra maskinrommet i Science Center, til en viss anonym ruter andre steder, til en annen Science Center gateway, til en grense gateway, og deretter, til noe her - nox.org. Dette er de nordlige Crossroads, en svært populær peering punkt der mange av kabler, mange Internett-leverandører - Internett-leverandører - kobler inn. Her er en annen navnløs IP her. Her er en annen slik server. Men dette er interessant. Hvor er ruteren i rad åtte, sannsynligvis? Så det er nok i Washington, DC. Og jeg kan slags underbygge at hypotesen denne gangen. Fordi hvor lang tid tok det oss å gå fra Science Center til denne ruteren i rad sju? Vel, disse millisekunder målinger på høyre side her er estimater av den tiden. Det er tre av dem fordi program, traceroute, prøver hver router tre ganger, bare så du kan få en visuell gjennomsnittet av tallene. Men det tar tydeligvis seks millisekunder å få å ro syv sin router. Men hvor fort kan, tilsynelatende, du reise, hvis du er litt, mellom Boston og Washington DC? 14 millisekunder er like lenge som det tar for at direktemelding, for at e-post, for at nettsiden forespørsel til reise mellom her og Washington DC. Hvis jeg går videre, til ruteren nummer 10, hvilken by jeg er tydeligvis i nå? Så, Houston. Og dette bekreftes ved hopp i tid. Det er veldig treg til å komme til Houston. Det tar 47 millisekunder å komme fra Boston til Houston i dette tilfellet. Og hvis vi ser lenger, LAX - ser ut som vi får til Stanford slags denne måten, ved å gå gjennom LA. Men jeg dedusere at fra LAX. Geeks pleier å bruke flyplasskoder for rutere navn her. Og dette er slags konsistent med denne antakelsen. 82 millisekunder. Så, vi tydeligvis gå til en annen LAX, en annen LA router og deretter, noen navnløse, og så til slutt, et kryptiske navnet på Stanford nettverk, eller nær dette, stanford.edu, er 90 millisekunder bort, eller 6 pluss timer med fly. Så dette er hvordan rask dataoverføring reiser på internett. Og det er ting vi absolutt tar for gitt i disse dager. Når du har noen Gchat med noen, og meldingene er bare vises, vurdere hvor fort som skjer. Og visuelt, er det faktisk skjer på den slags hastighet. Så mellom punkter man og 18, i dette tilfellet er det ting enn rutere. Hva er noen maskiner på internett som kan blokkere trafikk fra å komme gjennom? STUDENT: Brannmurer. SPEAKER 1: Så, brannmurer. Og vi har personlige brannmurer at din egen Mac eller PC kan holde trafikk inn eller ut. Harvard har brannmurer. MIT har antagelig brannmurer. Og Stanford gjør, som gjør alle av Internett-leverandører som eier disse ruterne i mellom punkt A og B. Men visste du noen gang slutte å vurdere, eller omsorg, hvordan en brannmur fungerer. Vel allerede, har vi den grunnleggende bygningen blokker som til ingeniør det svaret. Hvis du var en brannmur - og la oss anta at du er et sted mellom punkt A og punkt B. En kabel som kommer inn i deg, og går ut av deg. Så du har den teknologiske evne å se på alle konvoluttene med informasjon som flyter mellom du og den andre personen. Med andre ord, de får meldinger jeg var manuelt å skrive, kan du tenke på dem som å skrive en rask kommentar til noen, sette IP-adressen til mottakeren, og portnummer mottakeren, på denne konvolutten, da, skrive din egen IP-adresse og ditt eget portnummer i venstre hånd hjørne som du ville en bokstav. Deretter sender du det ut trådløst. Og det reiser en eller annen måte, gjennom rutere, gjennom ledninger, trådløst, nedover veien til MIT. Så hvis du er en brannmur, hvordan du stoppe dette skal skje? Hva ville du gjøre hvis din neste p satt var å gjennomføre en brannmur? Hvordan stopper jeg alle Harvard folk fra stadig snakker til MIT folk igjen? [? STUDENT: Du] reversere brevet?. SPEAKER 1: Du hva? [? STUDENT: Reverse] brevet tidlig. SPEAKER 1: Omvendt brevet - hva mener du? [? STUDENT: Send] det tilbake til avsenderen. SPEAKER 1: Send den tilbake. OK. Så du kan avvise den virtuelle konvolutt, liksom ved å gjøre retur til avsender eller annen måte. Så sikker på, det er hva vi ønsker å oppnå. Men la oss dykke litt dypere. Hvordan gjør jeg det? Hvis inngangen til dette problemet - hvis jeg er brannmuren, og jeg er effektivt står mellom punktene A og B, og Jeg er en middelaldrende mann som får se innsiden av denne konvolutten, og deretter bestemme om du vil sende den tilbake til Harvard eller å tillate det å fortsette, hva er det jeg, brannmur, kommer å ønske å se på? Jeg tror jeg hørte det her. [? STUDENT: Hvor det er] kommer fra?. SPEAKER 1: Hvor det kommer fra. Så hvis kilden IP-adresse - den lille antallet opp her - er en IP-adresse som hører til Harvard - og jeg kan faktisk vet at med høy sannsynlighet. De fleste av Harvards IP-adresser starter med 140,247 dot noe dot noe, eller 128,103 dot noe dot noe. Harvard eier disse biter av IP-adresser. Vel, hvis jeg ser at IP-adresser som avsender, kan jeg bare sende den tilbake. I virkeligheten gjør internett ikke gidder å kaste bort tid sende bitene tilbake. Det bare bokstavelig talt faller pakken ved å slette den, effektivt. Så hva annet kan jeg se på da? Anta at jeg ønsker å la folk på Harvard besøk mit.edu, og trekke opp nettsteder, og se videoer ved MIT, og lignende. Men jeg ønsker ikke mennesker ved Harvard e-post noen ved MIT. Hvordan kunne jeg tillate trafikk fra Harvard til MIT, via nettet, men forby noe sånt som en e-post? [? STUDENT: Den] portnummer. SPEAKER 1: En port nummer - det er bare andre ingrediensen vi har. Vi har IP-adresse, som vi bare leveraged, eller vi har portnummer, der 80, sa vi, unikt identifiserer web-trafikk. Nå er jeg ikke forventer at du skal vite dette - noen av dere kanskje allerede vet fra kjennskap - hva er et tall som er brukt for e-post, vanligvis? Det er ofte 25. 25 viser til SMTP, er som en post Transfer Protocol at du kan ha måtte sette opp på et tidspunkt, hvis du er bruke Eudora eller Outlook, eller noe sånt. Det er bare et annet nummer - 25. Telnet, som vi brukte før, bruker 23. FTP - File Transfer Protocol, hvis du noen gang hørt om at man - bruker 21. HTTPS, den sikreste versjonen av HTTP, som vi vil komme tilbake til før lenge, bruker 443. Så verden har en hel haug med tall som korrelerer pakker - heller, korrelerer tjenester til de faktiske tallene. Så det er alt en brannmur gjør. Det er å ta en titt inne i denne virtuelle konvolutt, og deretter bestemme ja eller nei å videresende sammen, basert på disse ingrediensene. Nå hva kunne Harvard klart gjøre å komme forbi denne brannmuren da? Hvis du ønsker å være i stand til å sende en melding til MIT, men ikke bli oppdaget, vel, kan du spole din IP-adresse, og bare liksom være fancy nok, vet hvordan å skrive C-kode, og skrive din egen nettverk program som endrer fast adresse. Problemet er at du kan absolutt sende data anonymt, men hvis du ønsker å få noen form for svar, liker se MITs hjemmeside, selvsagt, løser denne behov for å være korrekt. Ellers kan du si noe du vil, er du ikke kommer til høre fra dem. Men dette er bare en av typene av angrep som vi kan sende. Men det viser seg når vi sender disse meldinger - og la oss gjøre et eksempel på dette. Det viser seg, hvis jeg har et budskap som Jeg ønsker å sende, det er ikke bare sendes i én konvolutt. For effektivitet skyld, spesielt når filene du ber om eller svarene du får er spesielt stor, hva TCP/IP-- Transmission Control Protocol / Internet Protokoll - det er bare et fancy måte å si hva det nettverk programvare og datamaskiner gjør det - er de ta en melding som dette, og de klippe det opp i fragmenter - la oss si fire fragmenter. Og hvis jeg nå kutte dette opp i her, kutte denne opp i her, hva min Datamaskinen er da skal gjøre er det kommer til å ta ett fragment og sette den i en konvolutt. Greit, og la meg få en - la oss se. Det kommer til å ta en. Det kommer til å ta en annen konvolutt, og det kommer til å sette den andre delen av denne meldingen her. OK. Det kommer til å ta den tredje del, legg den inn her. Kanskje neste gang vi skal bare gjøre to deler. Og vi vil ta den fjerde delen, og sette den inn her. Og hva nå, må være skrevet på disse konvoluttene - som vi vil late som de gjør, for tids skyld, og ikke faktisk skrive ut. Hva må skrives på hver av disse fire konvolutter, med mitt budskap til noen? [? STUDENT: The] orden?. SPEAKER 1: Så rekkefølgen. Jeg trenger ikke bare IP-adressen og portnummer, som vi nettopp har diskutert, jeg nå trenger en sekvens nummer av noe slag vil si, dette er en pakke, denne er to, er denne tre, dette er fire. Og dette er faktisk nyttig. Fordi internett, det viser seg, er faktisk ganske upålitelig. Rutere kan bli overbelastet. Kabler kan bli overveldet - en overforenkling - men, med biter slik at det som rutere trenger å gjøre er å slippe bare pakker. Med andre ord, hvis kabel er bare virkelig trafikk, kan du få tre av disse fire pakker. Men hvis du har en unik identifikator på hver av dem, vet du at du er mangler pakke nummer fire av fire. Så du kan spørre ham i den andre enden å sende den. Men forutsatt at det ikke skjer, la oss se hva som kan skje. Så hvis jeg ønsker å sende en melding til - som ønsker å motta budskapet mitt fra internett? Hva med noen nærmere foran. Brian, er det? OK. Du bo der. Jeg kommer til å sende det til deg. Og med internett er at de kanskje ikke engang følge samme vei. Så her jeg går. Jeg sender en melding, fragment en av fire. Være en ruter. Bare la andre håndtere det. Der du går. Vi vil gi denne til deg, og vi vil gi denne til deg. Og vi får se hvor raskt - hvor mange millisekunder det tar å få denne meldingen til Brian. Alle får delta i dag. OK. Brian har en, og to. Hvis noen ønsker å være - [? STUDENT: Alle fire. ?] SPEAKER 1: Han har alle fire. Slik at ingen valgte å droppe en pakke. Det er kult. Det er bra. Så Brian har nå alle fire. Hvis du ønsker å gå videre og montere dem for oss. Jeg vet, vi er late. Så for tiden skyld - vi har fire. Så, OK, åpne en av dem. OK. Det er en fjerdedel av mitt budskap til deg. Nå åpner den andre. Dette kan være morsomt, til slutt, bare til meg og Brian. Greit, du har to. Så i mellomtiden, vi fysisk gjorde dette med saks, men alt det tar å fragmentere disse tingene i en datamaskin er bare å sende noe av biter i en pakke, i en virtuell konvolutt, noen av bitene i andre, noen i en annen, og i en viss fjerde, og deretter la maskinen avgjøre, basert på disse tallene, i hvilken rekkefølge du har å sette sammen dem. Og Brians, kanskje, den eneste en som kan se dette. Meldingen jeg sendte til Brain - på grunn av Selvfølgelig er internett fylt med disse er - Ja. Så det er budskapet. Og Brian kan henge på den nå. Så det tok, selvsagt, en stund å gjøre dette. Men det er det som egentlig skjer, som ruting data gjennom publikum på denne måten. Men det er igjen, en rekke punkter rutere, brannmurer og andre slike ting mellom punktene A og B. og snarere enn bare å fortelle historien verbalt, tenkte jeg at jeg skulle dra opp denne video som noen venner av oss, fra Erikson, år tilbake, faktisk satt sammen som forklarer hvordan dette fungerer. Og det er ca 10 eller så minutter lang. Så la oss gi deg, nå, Warriors of Net. [Musikk spilles] FORTELLER: For første gang i historien, mennesker og maskiner er jobbe sammen, å realisere en drøm - en samlende kraft som ikke kjenner noen geografiske grenser, uten hensyn til rase, tro eller farge - en ny æra der kommunikasjonen virkelig bringer folk sammen. Dette er begynnelsen på nettet. Vil du vite hvordan det fungerer? Klikk her for å starte Reisen inn i nettet. Nå nøyaktig hva som skjedde da du klikket på denne linken? Du startet en strøm av informasjon. Denne informasjonen reiser ned til din egen personlige mail rommet, når Mr. IP-pakker det, betegner det, og sender det på sin måte. Hver pakke er begrenset i sin størrelse. Postrommet må bestemme hvordan du vil dele opplysningene, og hvordan du pakke det. Nå pakken trenger en etikett som inneholder viktig informasjon som avsenderadresse, mottakerens adresse og typen av pakken er det. Fordi denne pakken kommer ut på internett, også det får en adressen til proxy-serveren, som har en spesiell funksjon, som vi skal se senere. Pakken er nå lansert på din lokalt nettverk, eller LAN. Dette nettverket brukes til å koble alle de lokale datamaskiner, rutere, skrivere, et cetera for informasjon utveksling innenfor de fysiske murer bygningen. LAN er en ganske ukontrollert sted, og dessverre, ulykker kan skje. Motorveien av LAN er fullpakket med alle typer informasjon. Dette er IP-pakker, Novell pakker, AppleTalk pakker - de kommer mot trafikk, som vanlig. Den lokale ruter leser å ta opp og, om nødvendig, løfter pakken på et annet nett. Ah, ruteren - et symbol på kontroll i en tilsynelatende uorganisert verden. RUTER: Whoops, beklager om det. La oss sette dette her, denne her. Dette flytter hit. Dette man beveger seg her. Jeg liker ikke denne. La oss flytte denne. Denne går her. [Uhørlig] Sagt på en annen skramling her. La oss sette dette her. Nah, jeg skal gå med det. La oss sette det ene her. FORTELLER: Der er han - systematisk, uhyggelige, metodisk, konservativ, og noen ganger ikke helt opp til hastighet. Men minst han er nøyaktig, for det meste. RUTER: Sett at en der borte. At man går der, at man går der, og dette går der. Vel, går en annen der. Som går her. [Uhørlig] FORTELLER: Som pakkene forlate router, de gjør sin vei inn i intranett og hode for ruteren bryteren. Litt mer effektiv enn ruteren, ruteren bytte spiller rask og løs med IP-pakker, behendig ruting dem på veien - en digital Pinball Wizard, hvis du vil. ROUTER SWITCH: Here we go. Her kommer en til. Og det er en annen. Overvåk dette, mamma. Her går det. Whoop, rundt ryggen. Hei, der, der inne. Over til venstre. Over til høyre. Over til venstre. Over til høyre. Du fikk den. Her kommer det. Han skyter, han scorer. Det kommer. Hei Wayne, se opp, her kommer en annen. Oh, her vi går. FORTELLER: Som pakker kommer frem til destinasjonen, de plukket opp av nettverksgrensesnitt, klar til å bli sendes til det neste nivå - i dette tilfellet, proxy. Proxy brukes av mange selskaper som liksom en middelaldrende mann for å minske belastningen på deres Internett forbindelse, og for sikkerhetsmessige grunner også. Som du kan se, de pakker er alle av ulike størrelser, avhengig av deres innhold. Proxy åpner pakken og ser for web-adressen, eller URL. Avhengig av hvorvidt det er adressen akseptabel, blir pakken sendt videre til internett. Det er imidlertid noen adresser hvilke ikke møter med godkjenning av proxy - det vil si, bedrifts-eller retningslinjer for forvaltningen. Disse er summarisk behandlet. Vi vil ikke ha noe av det. For de som gjør det, er det på veien igjen. Neste opp, brannmuren. Bedriftens brannmur tjener to formål. Det hindrer noen ganske ekle ting fra internett fra å komme inn i intranett, og det kan også forhindre sensitiv informasjon fra blir sendt ut på internett. Når gjennom brannmuren, en ruter plukker opp pakken og plasserer den på en mye smalere vei, eller båndbredde, som vi sier. Selvfølgelig, er veien ikke bred nok til å ta dem alle. Nå lurer du kanskje på hva som skjer med alle disse pakkene som ikke gjør det underveis. Vel, når Mr. IP ikke får en erkjennelse av at en pakke har vært mottatt i rett tid, rett og slett han sender en erstatning pakke. Vi er nå klare til å gå inn i verden av internett, et edderkoppnett av sammenhengende nettverk som spenner hele kloden. Her rutere og svitsjer etablere koblinger mellom nettverk. Nå nettet er en helt annen miljø enn du finner innenfor de beskyttende veggene i lokalnettet. Her ute er det Wild West - god plass, masse muligheter, masse ting til utforske, og steder å gå. Takket være svært lite kontroll og regulering, nye ideer finner fruktbare jord å skyve konvolutten av sine muligheter. Men på grunn av denne frihet, visse farer også ligge på lur. Du vet aldri når du møter den fryktede ping of death, en spesiell versjon av en vanlig forespørsel ping som noen idiot tenkt deg å rote opp intetanende verter. Banen våre pakker tar kan være via satellitt, telefonlinjer, trådløs, eller trans-oseanisk kabel. De trenger ikke alltid ta den raskeste, eller korteste, rutene mulig. Men de vil få det til slutt. Kanskje det er derfor det er noen ganger kalt world wide vente. Men når alt fungerer, du kan omgå hele verden fem ganger mer enn ved slipp av en lue, bokstavelig talt - og alt for kostnaden av en lokal samtale, eller mindre. Nær slutten av våre reisemål, vi finner en annen brannmur. Avhengig av ditt perspektiv som en datapakke kan brannmuren være en bastion av sikkerhet, eller en fryktet motstander. Alt avhenger av hvilken side du er på og hva dine intensjoner er. Brannmuren er utviklet for å slipper inn bare de pakker som oppfyller kriteriene. Denne brannmuren er i drift på port 80 og 25 år. Alle forsøk på å gå inn gjennom andre portene er stengt for virksomheten. Port 25 er brukt for post-pakker, mens port 80 er inngangen for pakker fra internett til webserveren. Innsiden av brannmuren, pakker er vist mer grundig. Noen pakker gjør det lett gjennom skikker, mens andre ser bare litt tvilsom. Brannmuren offiser er ikke lett lurt, for eksempel når dette ping av død pakke prøver å skjule seg som en vanlig ping pakke. Brannmur: Neste. OK. Gå på. Det er OK. Ikke noe problem. Ha en fin dag. Være her ute. Bye. FORTELLER: For de pakker heldig nok til å gjøre det så langt, den Reisen er nesten over. Det er bare et utvalg på grensesnittet til tas opp i web-serveren. I dag en web-server kan kjøre på mange ting, fra en stormaskin, til et webkamera, til datamaskinen på skrivebordet. Eller hvorfor ikke ditt kjøleskap? Med riktig oppsett, kan du finne ut om du har makings for kylling cacciatore, eller hvis du har å gå på shopping. Husk at dette er starten på nettet. Nesten alt er mulig. En etter en blir de pakker mottatt, åpnet, og pakket. Den informasjonen de inneholder - det vil si, din forespørsel for informasjon - blir sendt videre til nettet server applikasjon. Pakken i seg selv er resirkulert, klar til brukes igjen, og fylt med nødvendig informasjon, adressert, og sende ut, på vei tilbake til deg, tilbake forbi brannmur, rutere, og på gjennom til internett, tilbake gjennom bedriftens brannmur, og videre til din grensesnitt, klar til å levere din nettleser med informasjonen du ba om - det vil si, denne film. Fornøyd med sin innsats og tillitsfulle i en bedre verden, vår trofaste datapakker ri trettitalls inn solnedgangen på en annen dag, vel vitende fullt, de har tjent sine herrer også. Nå er ikke det en lykkelig slutt? SPEAKER 1: Det er altså hvordan internett fungerer. Gjennom oppgavesettet syv vil du bedre å forstå dette og vil du lære litt av HTML, PHP, og mer. Mer om det i beskrivelsen som vil gå ut på fredag. Og vi vil se deg på mandag.