Tagapagsalita: Hayaan ang makipag-usap tungkol sa isa pang protocol-- ang Hypertext Transfer Protocol, o HTTP. Kaya ko na usapan natin ang tungkol IP at TCP sa nakaraang video. At ang mga ito ay mga protocol na magdikta kung paano impormasyon gumagalaw mula sa machine sa machine at mula sa programa sa programa o serbisyo sa serbisyo sa pamamagitan ng internet, sa pamamagitan ng network na ito ng mga router at machine. Ngunit iyon lamang ang karaniwang hindi ang buong larawan, di ba? Karaniwan kapag nagpapadala kami impormasyon, ang programa itself-- kapag ang data ay natanggap, sabihin nating, halimbawa, sa email sa pamamagitan ng TCP port 25 o isang kahilingan sa web page sa pamamagitan ng port 80, mayroong karaniwang isang sistema ng mga patakaran doon upang i-proseso kung ano lang ako natanggap. At HTTP ay isang halimbawa ng lamang tulad ng isang protocol. HTTP ay ang tanging application layer protocol na kami ay pagpunta sa makipag-usap tungkol sa. Ngunit ito ay isa pang hanay ng mga patakaran nagdidikta kung paano impormasyon ay nakukuha sa at na-proseso sa pamamagitan ng internet. Sa partikular, HTTP Tinutukoy ng eksakto kung paano ang isa ay dapat gumawa ng isang kahilingan para sa isang pahina ng web at eksakto kung paano isang server, isang makina na nagho-host ng mga web page, naghahatid ng impormasyon na iyon i-back sa mga kliyente. Kaya ito protocol ay hindi talagang walang anumang bagay kinalaman sa kung paano impormasyon gumagalaw mula sa isang punto sa point B. Ito ay talagang ang sistema ng mga panuntunan for-- ito ay isa lamang sa mga alituntunin ng engagement para sa nagtatrabaho sa isang web page, katulad ng kapag ang isang tao waves kanilang mga kamay sa iyo, ikaw ay dapat na iwagayway likod. Iyon ang mga uri ng isang maginoo protocol ng tao. HTTP protocol lang sabi, kung nais mong humiling ng isang web page, siguraduhin na ang iyong hitsura format tulad this-- uri ng tulad ng pag-format isang negosyo na titik, halimbawa. At ang mga tugon ay katulad dumating ayon sa protocol na ito. May mga iba pang protocol layer application na hindi namin ang pagpunta sa makipag-usap tungkol sa mga video. Ngunit ang mga ito kasama ang mga bagay tulad ng ang File Transfer Protocol, Simple Mail Transfer Protocol para sa pagpapadala ng mga email, ang Distribution Data Service, Remote Desktop Protocol, RDP, na ay ginagamit kung gusto mong malayo access ang iyong computer mula sa isa pang computer, XMPP, na kung saan ay madalas na kilala bilang Jabber o chat, kaya ito ay ang protocol para sa paggamit ng mga serbisyo chat. At maraming, maraming, marami pang iba. Kaya sa tuwing gumagamit ka ng isang serbisyo, ang serbisyo ay umaasa na impormasyon na received-- isang kahilingan upang maging received-- sa isang napaka-partikular na format at ito ay kinakailangan upang ibalik ang impormasyon pabalik sa isang partikular na format pati na rin. Kaya sabihin bumalik sa aming mga ilustrasyon sa atin kulang na makipag-usap sa internet. Kaya kami ay masaya, at gusto naming upang pumunta sa cats.com, di ba? Kaya kung kami ay pakikipag-usap lamang sa cats.com, maaari nating sabihin tulad ng isang bagay hey, Maaari ko bang makita ang iyong home page? At cats.com ay marahil tumugon, oo, sigurado. Ito na. Kaya na ang isang tao na uri ng humingi-at-sagot. Ano ang ibig na hitsura sa HTTP? Well, ito ang tunay na uri ng tina-translate medyo malinis na bagay tulad nito. Maaari naming sabihin GET / HTTP / 1.1 mula sa host cats.com. Kaya talaga ang ginagawa ko dito ay humihingi para sa www.cats.com/ web page. Kami ay karaniwang alisin ang slash sa panahong ito, ngunit na gagawin lamang ibig sabihin homepage cats.com ni. Oh, at sa pamamagitan ng ang paraan, pupuntahan ko upang maging gamit ang HTTP na bersyon 1.1 upang makipag-usap sa iyo. Iyan ay ang uri ng mga kahalintulad sa na nagsasabi, tulad ng, sa daan, Pupunta ako sa nagsasalita sa Pranses, o sa pamamagitan ng ang paraan, Pupunta ako upang maging sa pagsasalita sa Ingles. Iyan na lamang ang format ng protocol. Ito din ay 1.0, na kung saan ay hindi karaniwang ginagamit anymore. Kaya ako nagsasalita ng HTTP 1.1, at Gusto kong www.cats.com/. Mangyaring kumuha na para sa akin. At pagkatapos ay may iba pang mga impormasyon, too-- mga tuldok, tuldok, tuldok doon, na kung saan ay ang impormasyon tungkol sa kung sino ka kaya cats.com alam kung saan upang ipadala ito. Ngunit ito ay ang dalawang uri ng mga kritikal na mga bahagi sa pinakadulo simula ng isang HTTP request-- tulad ng kapag sinimulan mo ang isang sulat sinasabi mo, mahal, blangko. Ito ay halos katulad sa espiritu na iyon. At kung cats.com ay pagpunta sa sabihin, oh, sigurado, dito ka pumunta. Sila ay maaaring tumugon tulad this-- din ako sa pagtugon. Ginagamit ko din HTTP 1.1. Ang iyong kahilingan ay naaprubahan, 200 OK. Ano ikaw ay tungkol sa tumanggap ay HTML at pagkatapos ay tuldok, tuldok, tuldok ng ilang dagdag na impormasyon. At sa pinakadulo ibaba ng request ay talagang ang HTML, ang markup language, ang nilalaman ng homepage cats.com ni. Kaya HTTP / 1.1-- kinikilala ko ang iyong kahilingan ay tinanggap sa pamamagitan ng HTTP 1.1. Ang iyong kahilingan ay naaprubahan. Ako ay maaaring magbigay sa iyo kung ano ang gusto mo, 200 OK. Malapit mo nang makatanggap ng HTML. At pagkatapos ay narito ang HTML na iyong hiniling. Ngunit minsan ang ating mga kahilingan ay hindi laging pumunta pa ayon sa plano. Maaari ko bang makita ang iyong pahina cats.html? Well, kung ano kung ang sinasabi nila, kami hindi magkaroon ng isang pahina cats.html, na kung saan ay tila uri ng mga hindi makatotohanang dahil ang mga ito cats.com. Gusto mong isipin sila ay magkaroon cats.html. Ngunit OK. Kaya ito ay isang uri ng maginoo pantao ugnayan ngayon ay nagkaroon kami ng may cats.com. Paano gumagana ang na i-translate? Ito ay maaaring maging isang bagay na pamilyar sa iyo. Ang aming mga kahilingan ay tumingin eksakto ang parehong, maliban sa halip ng pagkuha ng slash ngayon kami ay nakakakuha cats.html. Kaya ngayon kung ano talaga ang buong request ay sinasabi ay maaring bigyan ako www.cats.com/cats.html. Kaya ang host at ang gitnang bahagi ng na tuktok na linya may ipahiwatig tiyak kung ano ang pahina Ako ay humihingi ng. Ngunit cats.com sa kasong ito ay hindi pagpunta para ma-tumugon positibo. Hindi nila alam kung pinag-uusapan natin ang tungkol sa. At kaya ito ay isang bagay na maaaring mayroon ka nakita before-- HTTP 1.1 404 Not Found. Hindi ko mahanap kung ano ang ikaw ay humihingi ng. Sa pamamagitan ng paraan, ako pagpunta upang bigyan ka ng pabalik ilang HTML, at karaniwan na HTML ay ang nilalaman ng ilang mga 404 na pahina. At sa kaso ng cats.com, ito ay marahil ang ilang mga cute cats sa isang basket na may isang malungkot na 404 mukha sa tabi ng mga ito, dahil ikaw ay magiging malungkot kapag hindi mo makuha ang pahina na kayo ay naghahanap para sa. Iyon uri ng mga pangunahing kaalaman sa kung ano ang isang protocol, ang mga kahilingan ng HTTP protocol kamukha. Ang mga ito ay talagang katulad sa kung paano namin ay gumawa ng isang katulad na pakikipag-ugnayan sa loob lamang ng tao convention humihiling ng isang bagay at pagkuha ng ito pabalik o pagsulat ng isang sulat at umaasa sa isang tugon sulat sa isang partikular na format. Iyan ay medyo magkano kung ano ang HTTP ay lamang canonicalizing para sa lahat ng mga aparato na nais na access pahina ng web, hypertext transfer. Kaya ang isang linya ng mga form, ito ang kahilingan paraan target HTTP na bersyon, ay tinatawag na isang line kahilingan ng HTTP. Ito ay karaniwang ang unang bagay na ipinapadala bilang bahagi ng isang HTTP na kahilingan o kung ikaw ay humihingi ng HTTP. Uri ng ito gusto, tulad ng sinabi ko, na sinasabi mahal, blangko sa tuktok ng iyong sulat. Alam nila na ikaw ay pagsulat ng mga ito ng isang sulat. Kaya ito ay lubos na katulad na nagsasabi, alam ko na sila ay gumawa ng isang HTTP kahilingan at ito ay ang partikular na format sila ay humihingi ng. HTTP na bersyon ay marahil palaging magiging HTTP / 1/1. 1.0 umiiral din ngunit hindi talagang ginagamit anymore. Para sa layunin ng CS50, GET ay marahil palaging kung ano ang iyong magiging gamit na kapag ikaw ay tunay na paggawa ng direktang kahilingan ng HTTP. Ngunit POST ay isa pang pagpipilian na hindi namin hindi pagpunta sa makipag-usap tungkol sa ngayon. At pagkatapos request-target ay kung ano ang pahina sa server ng host nais mong makakuha ng. Tulad ng sinabi ko, na ang host name ay isang hiwalay na linya, kadalasan ang pangalawang linya ng kabuuang kahilingan. At kaya kinuha magkasama, ang host pangalan at ang target na kahilingan tukuyin ang isang tiyak resource na hinahangad. Sa aming 404 halimbawa isang segundo na nakalipas, ako ay humihingi muli para www.cats.com, cats.com pagiging host. At sa aking kahilingan linya, Sinabi ko /cats.html. Iyon ay ang aking kahilingan target. Kaya pangkalahatang ako ay humihingi para sa mga nilalaman o ang mga mapagkukunan na matatagpuan sa www.cats.com/cats.html. At pagkatapos ay batay sa kung ang umiiral ang resource at kung ang mga server ay maaaring maghatid ang mapagkukunan alinsunod sa mga kliyente kahilingan, maaari kang makakuha ng iba't-ibang mga code ng katayuan pabalik. Ang ilan sa mga code ng katayuan na iyong nakita dahil ang mga ito ay bahagi ng tugon. Ang ilan sa kanila, 200 OK, ay malamang na medyo tahimik. Marahil ka na hindi kailanman nakita isang pahina tumugon 200 OK. Makukuha mo lamang ang pahina. Hindi ito tulad ng isang 404 error, na kung saan ay karaniwang medyo malinaw. Karaniwang mo na sinasabi nito na 404. Kaya sabihin makipag-usap tungkol sa kung ano ang ilang mga mga code ng katayuan ay maaaring. Muli, kapag server ang tumugon sa amin, ang mga ito ay pagpunta sa tumugon status bersyon ng HTTP. Karaniwan HTTP / 1.1. Ano ang mga status code ng pagpunta sa maging? Well, maaari naming makakuha ng isang tagumpay. Kaya sa kategorya ng tagumpay, kami ay ay maaaring makakuha ng code 200 na may mga text OK. Ano ang ibig sabihin nito? Well, ang lahat ay mabuti. Nagsagawa ka ng isang wastong kahilingan. Narito ang isang wastong tugon. Ako ay magagawang upang maihatid kung ano mismo ang gusto mo. Kung minsan, maaari kang makakuha ng iba pang mga bagay na hindi mo mapansin kaagad ngunit medyo pagkabigo. Ang mga ito ay tinatawag na redirections. May dalawang karaniwang mga bago dito. 301 Inilipat Permanently-- kung ano talaga ang ibig sabihin nito ay ang pahina ay ngayon sa isang bagong lokasyon. Ito ay nakatira doon magpakailan man. At karamihan sa mga browser ay awtomatikong pag-redirect mo. Kaya hindi mo na talaga makita ng isang 301, alinman, maliban kung ikaw ay gamit ang isang tunay na out-of-date browser, marahil, dahil ang 301 tugon ay bahagi ng mga tuldok, tuldok, tuldok ng 301 tugon. Ito rin ay nagsasabi sa iyo kung saan ang mga bagong pahina ay. At makikita rin karamihan sa mga browser lamang redirect ka doon, sa pag-aakala na gusto mong pumunta doon. Minsan makakakita ka rin ng 302 natagpuan. At ito ang isa ka talagang maaari pa rin makita paminsan-minsan. Minsan pahina ilipat pansamantala. Kaya ito ay hindi pagpunta sa ay binuo sa ang kahilingan nagsasabi ng browser upang permanenteng baguhin anumang oras nakikita ito sa kahilingan na kayo gumawa na baguhin ito sa ibang bagay. Kaya maaari mong makita ang 302 Natagpuan, na talaga sabi pahinang ito nakatira sa ibang lugar. Ngunit hindi ito ay pagpunta sa nakatira doon magpakailan man. Kalaunan Ito ay maaaring pumunta bumalik sa kung saan sa tingin mo ito ay. Pagkatapos makakakuha ka ng mga bagay-bagay tulad ng mga error client. Kaya ang mga ito ay iyan na sa iyo marahil nakita, ngayon. Hindi mo marahil ay may nakita ang 200s o 300s, ngunit ikaw ay malamang na pamilyar sa 400s. At na kung ano ang makikita namin makipag-usap tungkol sa isang segundo, 500s pati na rin. Maaari kang makakita ng 401 Unauthorized. Kadalasan ito ay nangangahulugan na ikaw ay sinusubukang i-access ang isang pahina, ngunit hindi ka pa naka-log in. Kaya mong subukan at pumunta sa ilang profile o isang bagay na sa Facebook o subukan mo at pag-access some-- ikaw ay nasa trabaho. Sinusubukan mong ma-access ang isang bagay sa internet ang iyong trabaho, ang ngunit hindi ka nakalagda. Hindi mo maaaring makita ang pahina. Maaari kang makakuha ng isang 401 di-awtorisadong, na nangangahulugan na kami ay marahil ay maaaring masiyahan ang hiling na ito, ngunit kailangan mo munang mag-log in upang gawin ito. Sa kabaligtaran, maaari kang makakuha ng 403 Ipinagbabawal, na ito ay hindi tunay mahalaga kung ikaw ay naka-log in o hindi. Ang kahilingang ito ay hindi pinahihintulutan. Ang resource na umiiral sa server. Ngunit ikaw ay hindi pinapayagan na ma-access ito. Ito ay karaniwang panloob na mga file na nakatira sa server para sa iba't ibang dahilan ngunit ito ay hindi inilaan upang maging access mula sa labas ng mundo, at kaya sila ay ipinagbabawal. Sila nakatira doon. Hindi ko sinasabi na hindi ko mahanap ito. Ngunit ko sinasabi na hindi ko ma-ibigay ito sa iyo. At ito ay hindi mahalaga kung ka naka-log in o hindi. At pagkatapos ng kurso, ang napaka-pangkaraniwan 404 Not Found. Ang file ay hindi umiiral sa server. Gusto kong bigyang-kasiyahan ang iyong kahilingan, ngunit ako ay hindi. Minsan mo ring makita ang server mga error, ang pinaka-karaniwang pangkalahatan pagiging 500 Internal Server Error, na ay hindi aktwal na sabihin sa iyo ang anumang bagay sa lahat ng tungkol sa kung ano ang maling naganap. Ngunit ito ay hindi tunay na ikaw ang paggawa ng isang pagkakamali sa iyong kahilingan. Ito ay talagang ang server hindi pagtupad upang iligtas sa kahilingan sa anumang paraan. Kaya 500 ay ang pangkalahatang tugon. Makikita mo rin ang isang bagay tulad Unavailable Service, na sa tingin ko ay code 503. At Gateway Timeout-- kung nagkaroon ka na ba ng isang pahina lamang umupo doon loading at naglo-load at naglo-load at hindi mo alam kung ito ay pagpunta sa pag-load at pagkatapos ay sa wakas says-- lang ito lamang ay nagbibigay sa up. Iyan ay isang 504 Gateway Timeout. Pinaghahanap ang server na isakatuparan ang iyong kahilingan, pero may nangyaring mali sa side-- server hindi sa iyong side-- sa maging sanhi na maging isang problema. Ngayon, maaari naming tapusin ang kuwento dito, ngunit kung ano ang talagang ako pagpunta sa gawin ngayon ay ako pagpunta upang buksan up ipakita sa iyo ang aking browser at kung paano mo maaaring magagawang makita ang ilan sa mga code ng katayuan kahit na hindi mo karaniwang makita ang mga ito. At kami ay pagpunta upang gawin iyon sa pamamagitan ng pagkuha isang tumingin sa ilang mga tool ng developer. Lahat ng mga karapatan Kaya dito ako ngayon sa aking browser window. At gusto kong malaman ng isang maliit na piraso nalalaman tungkol sa mga kahilingan ng HTTP. Paano ko know-- tiyak alam namin kung ang isang goes-- page kapag ang isang bagay napupunta mali, makakakuha tayo ng isang 404. Lahat kami nakita iyon. Hindi namin kailangan upang ilarawan na. Ngunit ano ang ilan sa iba pang mga? At kung paano namin makita mga kahilingan na ito sa aksyon? Kaya unang bagay ako ng pagpunta sa gawin ay buksan ang Mga Tool ng Developer. Kaya Tool ng Developer ay binuo sa karamihan sa mga modernong browser at daan sa amin upang makita ang mga bagay-bagay na hindi namin kung hindi man see-- ilang dagdag na impormasyon uri ng na nakukuha sa ilalim ng aming web kahilingan. Gumagamit ako ng Google Chrome dito. At upang buksan Tool ng Developer sa Chrome, pindutin mo lang F-12, at ito ay pagpunta upang buksan ito hanggang sa gilid. Kapag nagta-type ako ng kahilingan, kailangan ko mag-zoom in upang maaari naming makita kung ano ang nangyayari sa dito. Ngunit kung ano ako pagpunta sa gawin sa aking browser bar is-- at kukunin ko na mag-zoom in sa paglipas here-- Ako ay gumawa ng isang kahilingan sa www.google.com. Na namin ang lahat marahil na ginawa namin ang hiling na ito dati. Pupunta ako sa pindutin ang Enter. Ngayon, sa paglipas dito sa aking Developer Tools, Pinili ko ang tab na Network. At napansin mo ang isang pulutong ng mga bagay-bagay dito. Hanapin sa these-- 200 OK, 200 OK, ang ilang mga mga code ng katayuan pagdating up. Hindi ko alam kung bakit ako nakakakuha ng 302 Natagpuan. Hindi ko mapagtanto gusto ko makita ang isa. Ngunit mapansin talaga na medyo marami, sa mga tuntunin ng aking Google request-- Ako na ginawa ng isang napaka-simpleng kahilingan para sa pahina ng Google. At sa proseso ng paghahatid ng aking kahilingan, Ay tila ginawa ng Google ng maraming ng iba pang mga kahilingan para sa akin. Pero ginawa ko ang isang kahilingan get para sa Google pahina at nakakakuha ako ng isang pulutong ng mga 200 OKs. Hindi ko na nakikita 200 OK sa aking screen, ngunit nakakakuha ako ng isang pulutong ng mga kahilingan na ito ay ginawa. Isa pa na medyo ako sigurado ay pagpunta sa trabaho is-- para sa mga mo na ang talagang old-school, maaari mong malaman na Facebook ay hindi palaging sa Facebook.com. Sa kanyang unang bahagi ng araw na ito ay sa wwww.thefacebook.com. Sila ay tila hindi maaaring makakuha ng access sa Facebook.com para sa tunay sandali. At kaya kung ano ako umaasa dito ay upang makakuha ng impormasyon. At kami na makita kung ito pans out. Ano ako umaasa dito ay upang makakuha ng impormasyon na ang Facebook ay inilipat permanente mula thefacebook.com sa Facebook.com. Kaya ako umaasa sa tabi-tabi malapit sa tuktok ng aking mga kahilingan sa ibabaw sa aking Tool ng Developer upang makakuha ng isang 301 notification na Facebook ay permanenteng lumipat. Muli, hindi ko makikita ang 301 sa aking screen browser. At dahil ito ay isang 301, ito ay isang permanenteng paglipat. Aking browser, pagiging na ito ay isang modernong browser, ay marahil pagpunta sa pag-redirect ako sa Facebook.com pa rin. Ngunit sabihin makita kung ano ang mangyayari. At ngayon ako pagpunta sa pumunta sa thefacebook.com. And yep, may ito ay sa kanan sa itaas. Ito umalis, ngunit ito ay doon. Hayaan akong mag-scroll up dito. Kanan dito sa itaas. Ako na ginawa ng isang kahilingan sa thefacebook.com, at Nakakakuha ako ng isang tugon na ang pahinang ito ay permanenteng lumipat. At pagkatapos ay 307 dito ay isang panloob na pag-redirect. At kaya ito ay kung ano ay talagang inilipat ako sa mas pamilyar www.facebook.com. Kaya ang mga code na tugon pa rin gawin mangyari, kahit na hindi namin makita ang mga ito. Hindi ako pupunta sa ilarawan 401, 403, 404, dahil marahil na nakita mo mga iyon sa iba't ibang mga punto. At 500, nais kong maging lamang uri of-- nais naming makakuha ng masuwerteng kung nakuha ng isang 500 dahil hindi namin alam kung ano server ay kasalukuyang down kahit saan. Ngunit ang mga code na gawin umiiral, at may isang paraan upang ma-access ang mga ito kahit na gawin namin hindi makita ang mga ito mismo sa aming mga system. Ako Doug Lloyd. Ito ay CS50.