DOUG LLOYD: Om du höll ögonen vår internet primer video, Jag lämnade en bit av en cliffhanger genom att tala om Internet och hur det är ett system med protokoll. Nåväl, låt oss tala om första av dessa protokoll som faktiskt omfattar internet. Och intressant nog, är det kallas Internet Protocol, som vi brukar kallar IP. Så internet, som sagt, är en sammanhängande nätverk, en internet, vilket är egentligen bara flera nätverk vävs samman och enas på något sätt att kommunicera med varandra. Vad är detta något jag pratar om? Nåväl, detta är Internet Protocol. Detta dikterar hur information överförs från punkt A till punkt B. Och detta är en slags tillstånd av ansluter sig till nätverket av internet är överens om att följa denna protokoll när informationsbehov att flyttas från punkt A till punkt B. Så i slutet av denna Internet primer video, Jag visade denna bild av vad internet var. Och i liten skala, är detta faktiskt förmodligen ganska exakt. Detta kan vara hur tre nätverk faktiskt prata med varandra. Men det är lite missvisande. Och anledningen till det är lite vilseledande är because-- om jag bara numrera nätverk för enkelhetens skull här och vi bli av med allt annat och bara fokusera på networks-- det är lite missvisande eftersom det innebär att alla tre nätverk har en anslutning till en annan. One är ansluten till två. Två är ansluten till tre. Och tre är ansluten till en. Och när jag talar om en anslutning här, jag är talar om en fysisk, trådbunden anslutning. Vi har trådlöst. Men det är verkligen opraktiskt för data som skall överföras trådlöst över en stor skala. Och så någon gång, vi verkligen inte lita på tråd technology-- telefonledningar, fiberoptiska kablar, olika tekniker som fysiskt ansluter punkt A till punkt B. Och i liten skala som this-- detta kan vara korrekt, men eftersom bilden får en lite större, låt oss nu föreställa sig att vi har sex olika nätverk. Om det är sant, nu har vi något liknande detta för alla nätverk som skall anslutas till varje annat nätverk. Och om man tittar, varje nätverk har fem pilar anslutna till det. Så allt är ansluten till alla andra nätverk. Vi har bara sex nätverk här, och redan tittar på hur mycket ledningar vi måste anställa, eller hur? Och internet består av mycket mer än sex nätverk. Vi har inte råd att koppla varje nätverk till varandra nätverk, särskilt med tanke på några av dessa nätverk spänner hav, eller hur? Om vi ​​försöker ansluta till ett nätverk i Asien eller Europa, vi kommer att behöva spänner en hel ocean. Vi kommer att behöva Använd ledningar vid något tillfälle, men vi vill minimera antal trådar som vi faktiskt använder. Vi vill inte skicka en miljoner trådar över havet, eftersom de kostar miljontals dollar styck att ligga ner. Och så snabbt, skulle vi inte kunna till bildning internet längre. Så vi måste ha en annan sätt för alla nätverk att tala med alla andra nätverk eller annat vi har delar av internet som är bortkopplade från andra delar av internet. Och det är inte vad vi vill. Men vi vill inte ha dem alla sammankopplade. Och det är där routrar komma tillbaka i spel. Vi kan använda routrar på följande sätt. Tänk om istället för varje nätverk vara fysiskt anslutna till alla andra nätverk, vi hade dessa förmedlande bitar, där näten var anslutna till dessa mellanhänder, som är anslutna till ett par nät. Så istället för att ha en anslutning till två, tre, fyra, fem, sex, kanske en ansluts till en router, vilket kanske ansluter till en eller två av dem nätverk utan även kanske ansluter till andra routrar, som också kommer att ansluta till de andra nät. Och routern jobb är-- den innehåller information kallas en dirigeringstabell som dikterar där göra Jag går om jag ser en viss IP-adress? Om jag ser en IP-adress start med fyra, kommer jag att gå denna väg. Om jag sett IP-adress som börjar med 12, jag kommer att gå den vägen. Vi behöver inte vara ansluten fysiskt nätverk nummer fyra eller nätverksnumret 12 i detta exempel. Vi vet bara allmänt där vi vill gå. Och om man tänker på det, är denna typ av liknande begreppet rekursion att vi pratade om när Vi pratade om det i C. jag inte kommer att ansluta dig exakt där du vill gå. Jag ska bara flytta dig ett steg närmare där du vill gå. Och jag ska låta någon annan ta itu med lösa resten av problemet. Jag ska bara lösa denna lilla bit av problemet och skjuta upp resten av det till någon annan. Så routinginformation är faktiskt slags liknar rekursion. Om det är ett koncept som du förstår Tja, kanske det analogi skulle hjälpa. Så låt oss ta en titt på detta nätverk exempel igen och antar att, återigen, vi kommer att använda de samma sex nätverk, ett till sex. Så låt oss bara säga att varje IP-adress på nätverks en börjar med en punkt något. Och vi kommer att säga att det finns någon annan sak som handlar om hur alla system är anslutna till nätverket en. Vi bryr oss bara om att ansluta alla dessa nätverk tillsammans i en internet. Så varje enhet som är ansluten till nätverket en har en IP-adress som börjar med en prick och sedan tre andra nummer. Detta är en generalisering av hur saker och ting faktiskt fungerar. Det är ganska lite mer exakt än så. Men detta bör ge dig en allmän uppfattning om vad Internet Protokoll faktiskt gör. Så det här var diagrammet vi hade tidigare. Detta var det system som var inte hållbart. Även sex, kan detta vara OK. Men om vi får 10 eller 20 eller 50, vi är kommer att ligga mycket trådar. Och 50 är fortfarande inte heller även toppen av isberg att antalet nätverk vi har. Så här modellen är ohållbar. Vi kan inte hålla fast vid detta. Så låt oss i stället anta denna modell där vi bli av alla kablar mellan nät och vi lägger routrar. Så dessa gula rutor representerar routrar. Och deras uppgift är att flytta informationen i allmänhet närmare där det är tänkt att gå. Och kanske är dessa anslutningar att dessa nätverk har. Och kanske är dessa tabeller som är inbyggda i routrarna. Så om vi börjar bara genom att titta vid nätverk en, till exempel, i princip vad den säger är om Jag någonsin sett en adress som startar inte med en en-- det är vad utropstecken en eller bang en där, inte en-- jag kommer att passera det till en router. Och därifrån, routern kan fatta ett beslut. Routern säger att om jag ser en, jag är kommer att flytta till nätverks nummer ett. Det är den gröna pilen på väg till vänster ur det övre vänstra rutan. Om jag ser en two-- som är pilen slags rubrik till toppen höger mot den lila network-- om jag ser en IP-adress börjar med en två, Jag kommer att gå mot två nätverk. Om jag ser en tre, fyra, fem, eller en six-- det är det röda pilen kommer ut av det övre vänstra router-- Jag är inte ansluten till tre, fyra, fem, eller sex. Men jag vet någon som är eller som är lite närmare till det. Så jag ska bara säga, varje gång jag ser en IP-adress börjar med tre, fyra, fem eller sex, jag är bara kommer att skicka det till den router. Så jag ska flytta den lite närmare där det är tänkt att gå och låt att routern ta itu med problemet. Och som ni kan see-- om du ville pausa här och trace-- du kan komma till varje annan punkt i nätverket från var du än är. Alla sex nätverk kan fortfarande ansluta till alla andra nät men de är inte fysiskt ansluten längre. De är nu dessa mellansteg. Nu, naturligtvis finns det en avvägning av hastighet, eller hur? Om man var direkt ansluten till sex, vi skulle inte måste gå igenom två routrar på vägen. Så vi kanske kan få anslutning lite snabbare. Men kanske det trade-off är värt det, eller hur? Om det kommer att bli så dyrt i fråga om faktiska kostnader, dollar och cent, fysiskt tråd alla dessa nätverk tillsammans, kanske lite av en avmattning i hastighet är OK. Vi kan tolerera det. Så återigen, i detta exempel var vi bara talar om, ingen av nät direkt anslutning till varandra hela. Det kunde ha been-- kanske i det exemplet vi kunde ha gjort det så att Kanske nätverk ett och två var direkt ansluten. Och det skulle vara OK. Vissa nätverk är fysiskt anslutna till andra nätverk. Men de är inte alla förbundna med varandra. De förlitar sig på routers-- i detta särskilda example-- att fördela meddelandet från punkt A till punkt B. På en liten scale-- som vad vi pratar om här-- denna konfiguration faktiskt kanske vara mer ineffektivt än bara med direkta förbindelser. Men i stor skala, kan vi skala systemet mycket bättre. Det är verkligen kommer att minska vår Kostnaden för nätinfrastruktur ha förmedlande routrar vars jobb det är att flytta trafik från avsändaren till mottagaren, från punkt A till punkt B, i motsats till ledningar alla tillsammans. Så låt oss ta en titt på ett exempel på informations reser använda denna Internet Protocol. Låt oss säga att jag är fysiskt beläget på IP 1.208.12.37 så jag existerar någonstans i ett nätverk. Och jag vill skicka ett meddelande till dig. Och du är på fem nätverk vid 5.188.109.14. Din IP-adress gör specifikt inte roll, men i detta speciella exempel vi pratar om denna generalisering om vad Internetprotokollet är alla om. Du är på fem nätverket, och jag är på ett nätverk. Som ni kan se, är vi inte förbundna med varandra alls. Så jag börjar. Och jag vill skicka ett meddelande. Och så på något sätt kommunicera jag det budskapet till routern. Routern är den som faktiskt har IP-adress. Och det ser på där det är tänkt att gå. Vi kommer att fem dot något. Så nu ska jag börja använder my-- eller routern, snarare, kommer att börja använda sina router tabellen för att skicka information tillsammans. Det ser att fem är inte en, så det säger att jag kommer att vidarebefordra den till den här killen. Då den här killen har att fatta ett beslut. Vart ska jag gå? Tja, det är inte en, så jag är inte kommer att flytta till ett nätverk. Och det är inte två. Jag tänker inte flytta till två nät. Det börjar med en fem. Jag är inte ansluten till fem, säger att detta router. Och så jag ska bara passera bort att-- Jag kommer att gå den vägen. Det är där treor och fyror och femmor och sexor går. Och jag ska låta den killen ta itu med det. Jag får det lite närmare där det är tänkt att gå. Jag vet att det är tänkt att gå i den allmänna riktningen. Men kanske att killen kan ta itu med det. OK. Så att killen ser ut. Han säger, OK, denna IP adressen börjar med en fem. Tja, jag är ansluten till tre och sex, så jag kan inte få ut budskapet direkt där det måste gå. Men den andra routern över det, jag vet om jag skickar det fours och femmor, den kan hantera dem. Så det passerar det längs den väg. Och så denna router säger, ja, jag är anslutas till nät fyra och fem. Så, ja, kan jag hjälpa dig. Jag tar din IP-adress som börjar med en fem. Jag ska ge den till fem nätverket. De fem nätverket kommer att göra en del arbete på sitt slut och ge meddelandet till dig. Och nu har vi framgångsrikt sänt ett meddelande från mig till dig med hjälp av Internet Protocol. Igen, mycket generaliserade för ändamål av illustration till vad som händer. Men det är ganska mycket hur Internet Protocol fungerar. Routrarna känner i allmänhet vart du ska skicka det och kommer att skicka det ett steg på sätt att få det närmare och närmare till sin destination tills en router är fysiskt ansluten till nätverket eller adress eller vad i fråga och ger det där. Nu, i allmänhet, med undantag för riktigt, riktigt små, små meddelanden, det kommer inte att skicka det som en stor del av uppgifterna. Om jag skickar dig en email-- en mycket lång e-post, säga-- det kommer inte att ta det hela e-post, bunt upp i en boll eller ett paket eller vad som helst, och skicka det hela sak ner nätverket. Först av allt, att sända information längs nätet är dyrt. Det går ihop. Och ju större bit, den dyrare det är att flytta varje steg på vägen. Och om det finns något sätt en avmattning och sedan Det är det här giant-- ungefär som om du ska köra på motorvägen och det finns denna jätte lastbil typ av blockerar vägen och du kan inte komma runt det på antingen körfält eftersom det är typ av utspridda. Det saktar alla andra ner bakom det. Men små bilar, om de var alla små bilar, de skulle kunna röra sig, om det analogi slags hjälper lite grann. Så ett stort block i systemet kan väldigt långsam alla andra ned. Och så vad IP kommer att göra delas dessa data i paket. Det kommer att ta detta stora e-post eller FTP-överföring eller en filöverföring, eller kanske jag gör en begära att en webbläsare eftersom jag vill ha en bild av katt. Och det kommer att ta det förfrågan eller att e-post eller filen och dela upp den i flera bitar och skicka alla bitar separat. Så i själva verket, jag fyller motorvägen med mycket små bilar, som kan alla Flytta i stället för en stor lastbil som kanske, om något går fel, strypa trafiken för alla andra. En annan bieffekt på detta är om det finns någon form av katastrofal misslyckande och något går fel och paketet blir sjunkit. Något misslyckades och Meddelandet kan inte lämnas. Routern kanske hade för mycket grejer att gå in. Det kunde inte jonglera allt. Och så bara bokstavligen tappade det. Det är typ av analogin, eller hur? Det har fått en hel del saker på gång. Det passerar uppgifter från punkt A till punkt B. Vi är inte de enda två människor på internet, så det har att behandla en hel del trafik. Och om det inte har tillräckligt med händer och det kan inte räkna ut vad det gör, det bara kan släppa något. Så det kan göra något annat. Det blev för mycket på gång. Om vi ​​hade vårt budskap som en enorm blockera och det var vad fick minskade, Nu måste vi skicka meddelandet igen. Och vi är nu möjligt orsakar trafik igen. Och vi riskerar att stort block som släpps igen. Men om datas delats upp i paket och vi tappar en av dem, det är mycket billigare att skicka den paket en gång i motsats till det hela en gång till. Så IP är ansvarig för att få information från punkt A till punkt B och även bryta informationen i små bitar så att nätverket inte är alltför beskattas. IP är också känd som en anslutningslöst protokoll. Det är inte nödvändigtvis en definierad bana från avsändaren till mottagaren eller vice versa. Nu, i det här exemplet vi har pratat om, egentligen finns det bara ett sätt att komma till varje nätverk. Så i detta särskilda Illustration, det faktiskt är en definierad väg från punkt A till punkt B. Men vi kan ändra på det genom att bara göra en ändring av de två routrar till vänster genom att denna tillstånd till router tabeller. Nu märker att från det övre vänstra routern, Det finns faktiskt två sätt att hantera med en fyra eller en fem IP-adress. Det kan gå ner till det nedre vänstra router, eller kan gå till höger, till höger routern. Den har flera alternativ. Och det är faktiskt typ av en bra sak eftersom det gör vår nätverk mer lyhörd. Om för example-- det är ungefär som en GPS. Om du någonsin har varit körning på motorvägen och plötsligt din GPS varnar du att trafiken är framåt, du vill undvika det om du kan. Och så du kan räkna om din rutt. Och en router-nätverk, i Förutom att ha informationen om var paketen skall gå eller där uppgifterna ska gå, det finns också slags denna allmänna puls om läget i det lokala nätverket. Vad kommer att hända om jag skickar ner denna väg kontra denna väg? Och så i ljuset av tung trafik situationer på nätet, kanske det kommer att bli dirigeras en mer ineffektivt sätt eller ett mer generellt ineffektivt sätt, eftersom om vi går den vanliga vägen, det kommer att bli en hel del trafik. Motorvägen är helt fastnat. Så kanske vad vi ska göra är i stället ta sidovägar, som normalt skulle ta en mycket mer tid, men ingen är verkligen använda dessa sidovägar. Och så vi kan skicka våra paket på det sättet. Så inte varje paket av en stor bit av data kan ta samma väg från början till slutet. Och vårt nätverk blir mycket mer mottaglig Om våra router tabeller tillåter det att finnas flera alternativ för var att gå. Vi är inte beroende av att en lastbil flyttar ur vägen. Vi kan få av motorvägen vid nästa avfart och ta en annan väg. Och så Internet Protocol sort av gör lite av det också. Så det är grunderna i Internetprotokollet. Men det finns ytterligare en problem att ta itu med, som är vad som händer om vi tappar ett paket? Hur vet vi att vi kommer att skicka det paketet igen? Höger? Tja, Internet Protocol inte garantera leverans. Vi kommer att beroende på ett annat protokoll att ta itu med det som kallas Transmission Control Protocol, TCP. Och vi kommer att prata om Transmission Control Protokoll i nästa video. Jag är Doug Lloyd. Detta är CS50.