>> 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.