Speak: Låt oss tala om en annan protocol-- Hypertext Transfer Protokoll eller HTTP. Så vi har pratat om IP och TCP i tidigare filmer. Och de är protokoll att diktera hur information flyttar från maskin till maskin och från program till program eller tjänster att via Internet, via detta nätverk av routrar och maskiner. Men det är oftast inte hela bilden, eller hur? Vanligtvis när vi skickar information programmet itself-- när data är emot, säg, till exempel, i e-post via TCP-port 25 eller webbsida förfrågan via port 80, det finns oftast ett regelsystem där att bearbeta vad jag har just fått. Och HTTP är ett exempel för att bara ett sådant protokoll. HTTP är den enda applikationslagret protokoll att vi kommer att prata om. Men det är en annan uppsättning av regler för hur information som skall sändas och bearbetas via internet. I synnerhet HTTP anger exakt hur man måste göra en begäran om en webbsida och exakt hur en server, en maskin som är värd webbsidor, levererar denna information tillbaka till kunderna. Så detta protokoll inte faktiskt har något att göra med hur information flyttar från punkt A till punkt B. Det är verkligen regelsystemet for-- det är i princip reglerna för engagemang för att arbeta med en webbsida, liknar när någon vågor sin hand på dig, du ska vinka tillbaka. Det är en slags konventionell humant protokoll. HTTP-protokollet bara säger, om du vill begära en bana sida, se till att din format utseende som this-- ungefär som formatering ett affärsbrev, till exempel. Och svaret kommer på samma sätt kommer enligt detta protokoll. Det finns andra applikationslagret protokoll att vi inte kommer att prata om i videor. Men dessa inkluderar saker som File Transfer Protocol, Simple Mail Transfer Protocol för skicka e-post, den Datadistribution Service, Remote Desktop Protokoll, RDP, som används om du vill fjärråtkomst datorn från en annan dator, XMPP, som ofta är känd som Jabber eller chat, så detta är protokollet för att använda chattjänster. Och det finns många, många, många andra. Så varje gång du använder en tjänst, tjänsten förväntar uppgifter som skall received-- en begäran vara received-- i en mycket visst format och är skyldig att returnera information tillbaka i en mycket speciell format också. Så låt oss gå tillbaka till vår illustration vi vill prata med internet. Så vi är glada, och vi vill att gå till cats.com, eller hur? Så om vi bara talar till cats.com, vi kan säga något i stil med hey, kan jag se din hemsida? Och cats.com kommer förmodligen svara, ja, visst. Här får du. Så det är en mänsklig sort av fråga och svar. Vad ser det ut som i HTTP? Tja, det faktiskt ganska översätter ganska rent till ungefär så här. Vi kan säga GET / HTTP / 1.1 från värd cats.com. Så i princip vad jag gör här är ber om webbsidan www.cats.com/. Vi utelämnar vanligtvis snedstreck nuförtiden, men det skulle bara betyda cats.com hemsida. Åh, och förresten, jag kommer att med hjälp av HTTP-versionen 1.1 för att kommunicera med dig. Det är typ av analogt med säger, liksom, förresten, Jag kommer att tala på franska, eller genom det sätt, Jag kommer att tala på engelska. Det är bara formatet av protokollet. Det är också 1,0, vilket är inte vanligt förekommande längre. Så jag talar HTTP 1.1, och Jag skulle vilja www.cats.com/. Vänligen få det för mig. Och sedan finns det andra uppgifter, too-- pricken, prick, pricka dit, som är information om vem du är så cats.com skulle veta var de ska skicka det. Men dessa är de två sorts kritiska delar i början av en HTTP request-- precis som när du startar en bokstav du säger, kära, tomt. Detta är mycket samma anda som det. Och om cats.com kommer att säger, åh, visst, här har du. De kan svara som this-- Jag är också svara. Jag talar också HTTP 1.1. Din ansökan godkänns, 200 OK. Vad du håller på att får är HTML och sedan dot, dot, dot lite extra information. Och längst ner på begäran är faktiskt HTML, märkningsspråket, den halt av cats.com hemsida. Så HTTP / 1.1-- Jag bekräftar din Begäran accepterades via HTTP 1.1. Din ansökan godkändes. Jag kan ge dig vad du vill, 200 OK. Du är på väg att ta emot HTML. Och så här är det HTML som du har begärt. Men ibland våra önskemål inte alltid gå ganska planenligt. Kan jag se din cats.html sidan? Tja, vad händer om de säger, vi inte har en cats.html sida, som verkar typ av orealistiska eftersom de är cats.com. Man skulle kunna tro att de skulle ha cats.html. Men OK. Så det här är typ av konventionell mänsklig interaktion Vi har nu haft med cats.com. Hur det översätta? Detta kan vara något bekant för dig. Vår begäran såg exakt samma, utom i stället för att få snedstreck vi nu får cats.html. Så nu vad som i grunden hela denna begäran säger är snälla ge mig www.cats.com/cats.html. Så värden och mitten en del av den översta raden det ange exakt vilken sida jag ber om. Men cats.com i detta fall inte kommer att kunna reagera positivt. De vet inte att vi pratar om. Och så detta är något du kan ha sett before-- HTTP 1.1 404 Not Found. Jag kunde inte hitta vad du efterfrågar. Förresten, jag kommer att ge dig tillbaka någon HTML, och oftast att HTML är innehållet i några 404-sida. Och i fallet med cats.com, är det förmodligen några gulliga katter i en korg med en sorglig 404 ansikte bredvid dem, eftersom du kommer att bli ledsen när du inte får sida att du letade efter. Det är typ av grunderna för vad ett protokoll, http-protokollet förfrågningar se ut som. De är verkligen liknar hur vi skulle göra en liknande interaktion på bara mänskliga konventioner ber om något och få det tillbaka eller skriva ett brev och förväntar sig ett svar bokstav i ett visst format. Det är ganska mycket vad HTTP bara canonicalizing för alla enheter som vill komma åt webbsidor, hyper överföringar. Så en linje i formuläret, detta metod begäran mål HTTP-versionen, kallas en HTTP-förfrågan linje. Det är oftast det första som är sänds som en del av en HTTP-begäran eller om du ber om HTTP. Det är ungefär som att, som jag sa, säger kära, tomt på toppen ditt brev. De vet att du är skriva ett brev till dem. Så det här är mycket lik att säga, jag vet att de gör en HTTP-begäran och detta är den särskilt format de ber om. HTTP-versionen är förmodligen kommer alltid att vara HTTP / 1/1. 1.0 finns också men är inte verkligen används längre. För ändamålen med CS50, GET är förmodligen alltid vad du kommer att bli att använda när du är faktiskt direktförsäljning HTTP-förfrågningar. Men POST är ett annat alternativ som vi är inte kommer att prata om just nu. Och sedan request-målet är vilken sida på värdens server du vill få. Som jag sa, att värdnamnet är en separat rad, vanligtvis den andra raden av den totala begäran. Och så tillsammans, värd namn och begäran målet ange en specifik resurs söks. I vårt 404 exempelvis en sekund sedan, jag bad igen för www.cats.com, cats.com som är värd. Och i min begäran linje, Jag sa /cats.html. Det var min begäran mål. Så totalt jag ber om innehåll eller resursen belägen vid www.cats.com/cats.html. Och sedan beroende på om resursen finns och om servern kan leverera resursen i enlighet med kundens begäran kan du få olika statuskoder tillbaka. Några av dessa statuskoder du har sett eftersom de är en del av svaret. Några av dem, 200 OK, är förmodligen ganska tyst. Du har förmodligen aldrig sett en sida svarar 200 OK. Du får bara sidan. Det är inte som ett 404-fel, som vanligtvis är ganska tydlig. Du ser oftast att det står 404. Så låt oss tala om vad några av dessa statuskoder kan vara. Återigen, när servern svarar på oss, de är kommer att svara HTTP-versionen status. Vanligtvis HTTP / 1.1. Vilka är dessa statuskoder kommer att bli? Tja, kan vi få en framgång. Så i framgången kategori, vi kan få koden 200 med texten OK. Vad betyder det här? Tja, allt är bra. Du gjorde en giltig begäran. Här är ett giltigt svar. Jag kunde leverera precis vad du ville ha. Ibland kan du få annat att du inte kommer att märka direkt men är något fel. De är kallade omdirigeringar. Det finns två vanligaste här. 301 _KUNENA_MOVED Permanently-- vad detta innebär i grunden är sidan ligger nu på en ny plats. Det kommer att leva där för evigt. Och de flesta webbläsare kommer automatiskt omdirigera dig. Så att du aldrig riktigt se en 301, heller, om du inte är med hjälp av en riktigt out-of-date webbläsare, eventuellt, eftersom 301 svaret är en del av pricken, pricka, punkt av 301 svar. Den berättar också om den nya sidan är. Och så de flesta webbläsare kommer bara omdirigera dig där, förutsatt att du vill gå dit. Ibland får du även 302 hittade. Och här du faktiskt kan fortfarande se ibland. Ibland sidor flyttar tillfälligt. Så det kommer inte att byggas in begäran träffande webbläsaren att permanent ändra helst Det ser begäran om att du göra för att ändra det till något annat. Så du kan se 302 Hittade, som i princip säger den här sidan bor någon annanstans. Men det kommer inte att leva det för evigt. Det kommer så småningom troligen att gå tillbaka till där du tror att det är. Då kommer du att få saker som klient fel. Så dessa är sådana som du har antagligen sett, nu. Du har förmodligen inte sett de 200s eller 300s, men du förmodligen bekant med 400s. Och det är vad vi ska prata om i en sekund, 500s också. Du kan se 401 Obehörig. Vanligtvis innebär att du är försöker komma åt en sida, men du har inte loggat in. Så du försöker och gå till vissa profil eller något på Facebook eller om du försöker och få tillgång till some-- du är på jobbet. Du försöker komma åt något på ditt arbete på internet, men du är inte inloggad. Du kan inte se sidan. Du kan få en 401 obehörig, vilket innebär att vi förmodligen kommer att kunna tillgodose denna begäran, men först måste du logga in för att göra det. Omvänt, kan du få 403 Förbjuden, vilket är det egentligen inte roll om du är inloggad eller inte. Denna begäran är inte tillåtet. Resursen existerar på servern. Men du inte får tillgång till det. Detta är oftast interna filer som lever på servern av olika skäl men är inte avsedda att vara nås från omvärlden, och så de är förbjudna. De bor där. Jag säger inte att jag kan inte hitta den. Men jag säger att jag inte kan ge den till dig. Och det spelar ingen roll om du är inloggad eller inte. Och sedan naturligtvis mycket vanliga 404 Not Found. Filen finns inte på servern. Jag skulle vilja att tillfredsställa din begäran, men jag kan inte. Du kan också ibland se server fel, den vanligaste i allmänhet är 500 Internal Server Error, som faktiskt inte berätta något alls om vad som har gått fel. Men det är faktiskt inte gör du ett fel i din förfrågan. Det är faktiskt servern misslyckas att leverera på begäran på något sätt. Så 500 är generellt svar. Du kommer också att se något som service Otillgänglig, som jag tror är kod 503. Och Gateway Timeout-- förekommande du någonsin haft en sida bara sitta där lastning och lastning och lastning och man vet aldrig om det kommer att belastning och sedan så småningom bara says-- bara ger upp. Det är en 504 Gateway Timeout. Servern ville köra din förfrågan, men något gick fel på servern side-- inte på din side-- till orsaka att för att vara ett problem. Nu kan vi avsluta historien här, men vad jag faktiskt kommer att göra nu är jag ska öppna upp min webbläsare och visa dig hur du skulle kunna se vissa av dessa statuskoder även om du i allmänhet inte ser dem. Och vi kommer att göra det genom att ta En titt på några utvecklingsverktyg. Okej Så här är jag nu i min webbläsarfönster. Och jag vill lära sig lite mer om dessa HTTP-förfrågningar. Hur gör jag vet-- säkert vi veta om en sida goes-- när något går fel, vi får en 404. Vi har alla sett det. Vi behöver inte för att illustrera detta. Men vad är några andra? Och hur skulle vi se dessa ansökningar i aktion? Så första jag tänker göra är att öppna upp Utvecklingsverktyg. Så Developer Tools byggs i de flesta moderna webbläsare och tillåter oss att se saker att vi inte annars see-- lite extra informations sorts överförs under vår hemsida förfrågningar. Jag använder Google Chrome här. Och för att öppna Utvecklingsverktyg i Chrome, bara slå dig F-12, och det kommer att öppna upp på sidan. När jag skriver denna begäran, ska jag zooma in så att vi kan se vad som händer här. Men vad jag ska göra i min webbläsare bar är-- och jag ska zooma in över här-- Jag kommer att göra en förfrågan till www.google.com. Vi har alla förmodligen gjort denna begäran innan. Jag kommer att slå Enter. Nu, över här i min Utvecklare Verktyg, har jag valt fliken Nätverk. Och du märker en hel del saker här. Titta på these-- 200 OK, 200 OK, vissa Dessa statuskoder kommer upp. Jag vet inte varför jag får 302 hittades. Jag insåg inte att jag skulle se den. Men i grund och botten märker det ganska mycket, när det gäller mitt Google request-- Jag gjorde en mycket enkel begäran om Googles sida. Och i processen för leverera min begäran, Google har uppenbarligen gjort en hel del andra förfrågningar på min räkning. Men jag har gjort en get begäran om Googles sida och jag får en hel del 200 OKs. Jag ser 200 OK på min skärm, men jag får en hel del förfrågningar som har gjorts. En mer att jag är ganska säkert kommer att fungera är-- för dem av er som är verkligen old-school, du kanske vet att Facebook var inte alltid på Facebook.com. I sina tidiga dagar var det på wwww.thefacebook.com. De uppenbarligen inte kunde få tillgång till Facebook.com för mycket ett tag. Och så vad jag förväntar här är att få information. Och vi får se om det kokkärl ut. Vad jag förväntar här är att få information att Facebook har flyttat permanent från thefacebook.com till Facebook.com. Så jag väntar någonstans nära toppen av min begäran över i min Utvecklingsverktyg att få en 301 anmälan att Facebook har flyttat permanent. Återigen kommer jag inte 301 på min webbläsare skärmen. Och eftersom det är en 301, Det är en permanent flytta. Min webbläsare, är att Det är en modern webbläsare, är förmodligen kommer att omdirigera mig till Facebook.com ändå. Men låt oss se vad som händer. Och nu ska jag till gå till thefacebook.com. Och japp, det är där rätt överst. Det gick bort, men det var där. Låt mig rulla upp här. Här på toppen. Jag gjorde en förfrågan till thefacebook.com, och jag får ett svar att den här sidan har flyttat permanent. Och sedan 307 här är en intern omdirigering. Och så det här är vad som faktiskt flyttade mig till mycket mer bekant www.facebook.com. Så dessa svarskoder gör fortfarande hända, även om vi inte ser dem. Jag tänker inte illustrera 401, 403, 404, eftersom du har förmodligen sett de som på olika punkter. Och 500, skulle jag bara vara typ of-- vi skulle ha tur om fick en 500, eftersom vi inte vet vad servrar finns för närvarande ned någonstans. Men dessa koder göra existerar, och det finns ett sätt att få tillgång till dem, även om vi inte se dem med egna ögon på våra system. Jag är Doug Lloyd. Detta är CS50.