DOUG LLOYD: Om du har varit att titta på dessa filmer i den ordning som vi rekommenderar, Vi håller på att genomgå bit av en kultur skift. För nu, kommer vi att börja talar om internet och webb teknik. Så fram till nu, vi har verkligen gjort en hel del C. Och när vi har varit kör våra program, Vi har varit igång dem från kommandoraden. Det är ganska mycket hur användarna har har interagera med program att vi skriver. De plockar något att uppmana, något händer i terminalfönstret, och sedan är det gjort. Ibland kanske du har ihållande data som återstår efteråt. Men det är ganska mycket det. Det är på kommandoraden. Det är det enda sättet att användaren kan interagera. Från denna punkt framåt, Vi ska börja övergår så att användarna kan interagera med våra webbplatser. Så vi kommer att skriva webbplatser, som inte är skrivna i C, men är skrivna på en rad andra programmeringsspråk, inklusive PHP, och det är typ av hjälpar språk HTML, CSS, och liknande. Så vi kommer att börja talar om dessa saker. Innan vi går in webb programmering själv, Jag tror det är förmodligen en bra idé att ta ett steg tillbaka och prata om hur datorer och människor interagerar över webben. Så här videon är verkligen en primer, en grundläggande guide, till internet. Nu är förbehållet här CS50 är inte en nätverksklass. Så vad vi ska tala om här är ganska hög nivå. Vi kommer inte att komma in i någon låg nivå information om hur allt det här fungerar. Om du är intresserad i det, Jag skulle starkt rekommendera att ta en klass på datornätverk. Och vi kan även tala vit lögn eller två bara i syfte att göra den allmän förståelse klar. Så med det sagt, låt oss tala om hur vi interagerar med internet. Så här är vi. Här är vi. Vi är ganska ser fram emot att komma ut på Internet, som som vi alla vet, är full av katter. Nu ska vi bara ansluta till Internet så här? Tja, förmodligen inte. Intuitivt, du vet att säga till exempel, när du ändrar din Wi-Fi nätverk på din dator, du ser inte en som kallas internet såvida inte bara så händer att vara namnet på din lokala Wi-Fi. Höger? Det är oftast något som hemma. Eller om du är på jobbet, kanske det vara namnet på ditt företag. Det är inte bara en alternativ som kallas internet. Och så något eller några saker finns däremellan när vi vill ansluta till Internet. Vad är några av dessa saker? Tja, vi kommer att prata om det. Vi kommer även att tala om några av de viktigaste sakerna vi behöver för att kunna för att ansluta till internet. Och den första av dessa saker är en IP-adress. Så du har säkert hört termen IP-adressen innan. Vad betyder det? Tja, är en IP-adress i grunden en unik identifierare din dator i ett nätverk. Precis som varje hem eller Kontoret har en unik adress som man kan skicka ett mail. På samma sätt, varje dator om det vill ta emot data eller skicka data, måste ha en unik adress. Så att när information skickas eller tas emot, det skickas från eller tas emot till rätt plats. Detta adresserings, som jag sade, kallas IP-adressering. IP är står för Internet Protocol, som vi kommer att prata om igen inom kort. Nu, vad IP-adressering ser ut? Tja, ordningen i princip var, när den först genomförs, att ge varje dator en unik 32-bitars adress. Det är en hel del bitar. Det är 4 miljarder adresser. Och i allmänhet, istället för att använda hexadecimala notation, som vi har använt tidigare i samband med pekare i C att prata om adresser, Vi representerar vanligtvis IP adresser i en lite mer av en human vänlig sätt, vilket motsvarar dem som fyra grupper av 8 bitar representerade som decimaltal. Eftersom människor inte ofta talar hexadecimal, såvida du programmera. Men människor som använder internet är inte nödvändigtvis programmerare. Och så gör det enkelt och tillgängliga för dem att kunna tala om vad deras IP-adressen är om de kanske behöver ringa upp någon att felsöka något, det är bättre att göra det i det mer gemensamma konventionella decimaltal formatet. Och så en IP-adress bara ser ganska mycket så här, w.x.y.z, där var och en av dessa skrivelser representerar ett icke-negativt värde inom området från 0 till 255. Minns att en 8-bitars tal kan hålla 256 distinkta värden. Och så det är därför vårt sortiment är 0 till 255. Och vi har fyra kluster av 8 bitar för en slutsumma på 32 bitar. Och så en IP-adress kanske se ut så här. Detta är en slags generisk standard IP-adress, 123.45.67.89. Alla är i intervallet 0 till 255, så det är en giltig IP-adress. Här vid Harvard University, alla våra IP-adresser börjar med 140,247. Det är bara så att IP- adresser i detta geografiska område har tilldelats. Och så detta kan vara en IP-adress som kan finnas här på Harvard. Så som sagt, om varje IP-adress är 32 bitar, vi har cirka 4 miljarder att ge ut, lite mer än 4 miljarder. Men vi kan typ av se ett problem, eller hur? Vad är världens befolkning just nu? Tja, det är någonstans norr om 7 miljarder människor. Och i västvärlden Åtminstone de flesta människor har mer än en enhet kan Internet-anslutning. Jag har en rätt här. Och jag har en annan i min ficka. Och jag har en tillbaka på mitt kontor. Och så det är tre. Och som inte ens räkna de som jag har hemma, alltför. Och så det är typ av ett problem, eller hur? Vi har åtminstone 7 miljarder människor och endast fyra miljarder adresser. Och varje enhet är tänkt att identifieras. Vi har utvecklat några lösningar att ta itu med detta problem, något som kallas en privat IP-adress, som vi inte kommer att komma in i den här videon. Men i grund och botten, gör det möjligt främja webb, internet, till typ av falska en liten bit att du har en unik adress genom att ha privata adresser och sedan kanalisera dem genom en enda adress, som delas av många olika datorer. Men det är egentligen inte en långsiktig lösning. Även det fast inte kommer att vara för evigt. Och så måste vi ha en annan sätt att hantera detta. Så som sagt, vi hade cirka 4 miljarder. Men det kommer inte att vara tillräckligt bra, eller hur? Och så sätt att den har beslutats där vi är kommer att ta itu med detta är att göra längre IP-adresser. I stället för 32-bitarsadresser, vi är kommer att ha 128-bitars adresser. Så i stället för 4 miljarder adresser, kommer vi ha det stort antal adresser, vilket är 340 miljarder miljarder miljarder miljarder, så en hel del IP-adresser. Och detta nya system kallas IPv6 är ofta hur det avses. Det gamla systemet är IPv4. Det är lite av ett problem i att detta problem har varit känt för en riktigt lång tid. Och du ser här en hel del i samband med datorer och datorer. Vi är bra på att förutse problem. Men vi är dåliga på att hantera dem även om vi vet om dem. Så IPv6 har funnits ett tag. Och bara i de senaste år har vi faktiskt började fasa i dessa IPv6-adresser att fasa ut IPv4-adresser. Men vissa platser har dem. Och de ser liknande till en vanlig IP-adress. Men de är mycket längre. Så istället för att nu ha fyra kluster av 8 byte för din adress, Vi har nu åtta kluster av 16 byte. Och 8 gånger 16 är 128. Och vi företräder dessa i mindre konventionell hexadecimal form. Eftersom att ha 16-bitars tal innebär att istället för att vara ett område av 0 till 255, Vi skulle ha en intervallet 0 till 65535. Och så har ett gäng av dem som fastnat tillsammans skulle vara mycket svårt att läsa. Och så vi brukar använda hex bara av bekvämlighet. Och så en typisk IPv6-adress kan se ut så här. Det är verkligen en mycket längre än IPv4-adressen som vi har sett förut. Men detta skulle vara en giltig IPv6-adress. Detta handlar också om IPv6-adress. Detta råkar tillhöra Google. Och märker att det finns en gäng nollor där. Ibland dessa adresser kan få så länge. Och eftersom vi är fortfarande ganska tidigt i IPv6, Ibland kan det finnas stora bitar av nollor i det att vi inte behöver. Om du läser denna högt, Det är 2001.4860.4860.0.0.0.0.8844. Det är lite av en hel del, eller hur? Så om du ser ett gäng nollor, kanske du ibland se en IPv6-adress som denna, där de utelämna noll och använda en dubbel kolon i stället. Detta är OK, men. Eftersom vi vet att det finns ska vara åtta olika bitar. Och så underförstått, ser vi fyra. Så vi vet att det måste finnas fyra uppsättningar av nollor som detta, fyller att det i. Så ibland kan du se en IPv6-adress som inte har åtta åtskilda bitar som vi gör här. Du kan se det ser ut så här. Och det betyder bara att allt du inte ser i mellan var att dubbel kolon är bara nollpunkts separeras. Så okej. Vi vet lite mer om IP-adresser nu. Men hur ska vi få dem? Vi kan inte bara plocka det vi vill ha. Om vi ​​gjorde det, skulle vi hamna striderna någon för samma IP-adress. Eller någon kan ha valt det tidigare. Om vi ​​försöker ta det, vi kommer att köra in en bit av ett problem. Och så att vi inte kan bara plocka IP-adressen som vi vill ha. Så det sätt som vi får en IP-adressen är någonstans mellan vår dator och internet, den stora internet där ute, det finns något som kallas en DHCP-server, en Dynamic Host Configuration Protocol servern. Det är en stor munfull text. Men egentligen allt den gör är det delar du en IP-adress. DHCP-servern har en lista över adresser som det med framgång kan tilldela. Och det ger dig en. Det är ganska mycket allt som finns till den. Nu innan DHCP, denna uppgift att tilldela adresser föll till en systemadministratör. Så en verklig person skulle ha att manuellt tilldela din dator och adress när du ansluten till ett nätverk. Så DHCP bara sorts automatiserar detta process för att ge dig en IP-adress. Men det är hur du får det. Det är bara ett program körs någonstans mellan dig och internet som har en bank av IP-adresser som det kan ge ut. Och när du ansluter till nätverk, det ger dig en. Så låt oss återkomma till detta diagram. Någonstans mellan dig och internet, det finns en DHCP-server. OK. Så det är bra. Nu, låt oss tala om DNS. Så vi har pratat även Dessa IP-adresser. Och vi vet att om vi är kommer att identifiera en enhet på internet, det måste ha en unik adress. Och vi kan besöka det adress om vi ville. Men du har antagligen aldrig skrivit i något som 192.168.1.0 i din webbläsare, eller hur? Du behöver inte skriva in siffror i din webbläsare. Du skriver vanligtvis i läsbara namn liknande google.com eller cs50.harvard.edu, höger? De är inte IP-adresser, men. Så finns den här tjänsten kallas Domain Name System, DNS, som översätter IP adresser till humana begripliga ord eller fraser som är mycket mer minnesvärd än att minnas en grupp om fyra siffror eller, snart, en uppsättning av åtta hexadecimala tal. Det skulle vara riktigt utmanande, eller hur? Tänk på innan dagar av mobiltelefoner. Du hade din memorera ditt väns telefonnummer. Det kunde ha blivit tufft Efter en liten stund. Och på samma sätt, om du vill att besöka en massa hemsidor, du förmodligen inte vill minns en massa siffror. Du hellre minns en massa ord. Så här kartläggning, detta översätta, av uppsättningar siffror till läsbara namn typ av gör DNS det gula sidorna av banan. Och du kan tänka på det som om det bara en enorm lista som löper från 0.0.0.0 alla vägen ner till 255.255.255.255, vilket skulle vara den högsta possible-- som är hela skalan från 0: or till 255s av alla 4 miljarder ish IPv4-adresser. Jag gjorde upp de på toppen och botten. Men en i mitten finns är faktiskt en IP-adress. Så om vi besökte 74.125.202.138, tydligen som översätter till webbplatsen där io-- vad sjutton är det? Tja, är inte varje namn som mappar faktiskt klart vad det är, eller hur? Så ibland någon som äger en IP-adress kan namnge sin värd något att de är faktiskt inte. Till exempel att IP-adressen om du åkte dit, är egentligen bara google.com. Men Google har en hel del olika servrar. Och de kan inte kalla dem alla google.com. Så de har sina egna internt system för att översätta google.com till vilken server faktiskt är ansluten till den IP-adressen. Och så finns det en annan system som finns mellan att översätta det rappakalja här för att google.com. Men vi kommer inte gå in på det. Och på liknande sätt för IPv6s, vi kommer också att ha en gula sidorna som kommer att vara mycket större. Och på liknande sätt, i mitten there-- det var svårt att hitta en IPv6 adress som var legitim. Men jag hittade en för Google. Men det är Googles irländska hemsida. Men om du gick till den IPv6-adress, Om din webbläsare var IPv6 kapabel, som skulle ta dig till Googles irländska hemsida. Så där du går. Men detta är inte helt sant, eller hur? Detta system verkar besvärligt, eller hur? Om det finns en enorm lista över 4 miljard saker att behöva se upp, det är ganska stor. Det finns inga gula sidorna av världen, eller hur? Om du fortfarande får den gula sidor levereras till dig-- I got mine häromdagen, och jag bara återanvändas det. Men om du får den gula sidor levereras till dig, du inte får en bok som är varje telefonnummer som finns på planeten, höger? Du får en lista över lokala telefonnummer, de du är mest troligt att ringa. Och det är faktiskt vad DNS är. Om du tänker på det, är DNS verkligen de lokala gula sidorna. Och stora DNS-servrar liknande google.coms, de är faktiskt bara mer som bibliotek som har en kopia av alla de lokala gula sidor eller alla lokala DNS-poster. Så det finns egentligen ingen slutförvar av hela DNS av Internet, precis som det finns ingen gula sidorna av världen. Det finns alla dessa lokala små skala DNSS som finns där ute. Och det finns tjänster som aggregera ihop dem. Men de är beroende av dem mindre DNS-system uppdatera sin information, så att de har den mest korrekta informationen. Så återigen, denna analogi är stor aggregerande DNS-system är som bibliotek som har en kopia av varje gula sidorna av världen. De gör inte själva uppdatera dessa böcker. De beror på böcker som kommer in, så att de kan uppdatera informationen om de behöver det. Så DNS-systemet är inte ett jätte-block. Det är decentraliserad över många, många servrar. Så nu vet vi att någonstans mellan oss och internet det finns en DNS-server samt en DHCP-server. Nu, accesspunkter, vad våra accesspunkter? Tja, accesspunkter du förmodligen ganska bekant med från faktiskt att ansluta till Internet. Det är det nätverk som du väljer, hemmet eller ditt arbetsnätverk eller vad har du. Och jag generaliserar begreppet en åtkomstpunkt här för tillämpningen av denna video. Men det finns faktiskt en massa saker som kan rullas upp i åtkomstpunkter. Det finns begrepp routrar, som är en slags allmän term som vi använder. Men det finns också växlar och saker och ting faktiskt kallas accesspunkter som är skilda från denna allmänna begreppet en tillgång punkt. Men i princip vad händer är med IPv4, jag sa att vi har detta begrepp av privata adresser, eller hur? Och i stället för varje maskin som har en unik IP-adress, som Vi har tagit slut, eftersom Vi är över 4 miljarder enheter försöker ansluta till internet, vad vi gör istället tilldela en IP-adress till en router. Denna router eller åtkomstpunkt bara i ditt hem, till exempel. Och routerns jobb som till sorts fungera som en trafikpolis, vilket gör att alla som är ansluten till att routern att använda samma IP adress att komma ut. Betyder det vettigt? Så att alla i ditt hem har en privat IP-adress. De kan inte ansluta till internet eller internet snarare kan inte tala med dem, genom att privata adress. De kan bara tala till dem genom adressen i routern. Och det är det routerns jobb att ta informationen att du skickar routern och styra den till rätt plats och information som är kommande i routern för routern att skicka den till dig. Så routrar är verkligen anordningar här-- särskilt en router i ditt hem, den vanligaste sortens Användnings fallet för de flesta people-- som har den offentliga IP-adressen. Det är den enhet som är ansluten till Internet. Och du ansluter till routern att informationsflödet genom det på din räkning. Som jag sa, ett modernt hem nätverk, router och switch och åtkomstpunkten är alla typer av buntade upp till en enda anordning. Ibland kan en modem är buntas i där också. Det är oftast bara kallas en router. Men det är verkligen alla dessa saker tillsammans. Storskaliga företagsnätverk eller så kallade Wide Area Networks, WAN, faktiskt hålla dessa enheter separat. De har en omkopplare. De har routrar. De har flera åtkomstpunkter. Till exempel vid en universitet ser du saker som ser ut så kallade routrar monterade är runt campus. De är alla kopplingspunkter som flödar i routrar, switchar, et cetera, att passera information tillsammans. Eftersom dessa nätverk är så stor att en enda åtkomstpunkt kan inte täcka sina stort område. Och så dessa stora nätverk, företagsnätverk, et cetera, dela dessa i separata enheter, så nätverket och omfattning och växa vid behov. Så återigen, någonstans mellan oss och Internet, har vi en åtkomstpunkt. Och det är vad vi ansluta till. Och genom det, vi kan få till internet. Som jag sade i i början av den här videon, Detta är inte en kurs i nätverk. Så detta är inte hela historien. Och jag har typ av slätade över det. Och kanske jag har lämnat dig även lite förvirrad vad några av dessa saker är. Men det är OK. Vi behöver inte hela historien. Det är tillräckligt för oss att veta rörliga framåt bara i princip lite om hur internet fungerar. Så vad vi vet är att vi har dessa privata nätverk på vårt hus. Och vi ansluter till en router. Och att routern är ansluten till Internet i stort. Men vad är internet i stort? Jag fortsätter att säga detta, men vad är det? Tja, det är egentligen bara alla dessa enskilda nätverk på mitt hus, och i ditt hus, och på alla andra hus, som är sammankopplade. Det är ett sammankopplat nätverk, en inter-net. Så istället för att tänka om internet eftersom denna jätte moln, denna eteriska sak som finns där ute, det är egentligen bara en anslutning bland alla dessa nätverk. Så nu kör vi. Vi har vårt lokala nätverk. Och vi är inte den enda personen förmodligen på vår lokala nätverk försöker använda internet. Det finns förmodligen flera vi försöker att komma in. Och vi är inte den enda nätverk som finns i världen, eller hur? Det finns andra nätverk också att försöker ansluta till Internet. Men internet är inte igen, en separat enhet. Det är bara en uppsättning regler som tillåter dessa nätverk, dessa små nätverk, blå, lila, och den röda nätverks här, för att kommunicera med varandra. Så det finns ingen sak de är alla ansluter till. De är alla bara ansluten till varandra, eller hur? Och så någonstans på dessa nät finns tjänster att vi verkligen vill. Så kanske i det blå nätet är där Google bor. Och i den lila nätet är där Facebook bor. Och i den röda nätet, ja, kanske det är där alla dessa katter. Och så om vi vill få information om katter, vi bara passera denna kedja av nätverk att få den information vi vill ha. Och här, har jag representerat nätverket som alla att kunna tala med varandra. Och vi kan bara tala till nätverket. Men nätverket kan inte prata tillbaka till oss. Men det är inte sant heller, eller hur? Detta är allt en tvåvägskommunikation. Information kan strömma genom nätverk och tillbaka. Hur gör den det? Tja, internet är verkligen ett system av protokoll. Och vi kommer att börja prata om vad dessa protokoll är i kommande filmer. Men återigen, internet är inte en separat sak. Det är en uppsättning regler som definierar hur nätverk kommunicerar, dessa små nätverk, dessa lokala nätverk som vi är vana vid, människorna i vårt hus, folk på vår skola, människor på vårt jobb, alla delar ett nätverk. Och hur dessa nätverk samtrafik och prata med varandra, det är faktiskt vad Internets handlar om. Så låt oss, i en framtida video, tala om några av de protokoll som innefattar Internet för att förhoppningsvis ge dig lite mer av en väl avrundad förståelse. Jag är Doug Lloyd. Detta är CS50.