Ang http protocol ay nilikha sa panahon. Maikling paglalarawan ng HTTP protocol

Inihayag ng artikulo ang kakanyahan ng HTTP protocol, at pinag-uusapan din ang iba't ibang mga scheme para sa operasyon nito. Ang partikular na atensyon ay binabayaran sa kakanyahan ng pakikipag-ugnayan sa pagitan ng browser at ng server.

Ang kakanyahan ng kung paano gumagana ang HTTP

Una sa lahat, dapat mong maunawaan ang proseso ng pakikipag-ugnayan sa pagitan ng server at ng browser ng gumagamit. Upang ipakita ang isang pahina ng site sa screen, ang browser ay nagpapadala ng isang signal ng kahilingan sa server, pagkatapos kung saan ang naka-encode na nilalaman ng site ay nagmumula sa server, na na-convert sa karaniwang view ng site. Ang pag-aaral sa prosesong ito para sa isang web developer ay mahalaga dahil sa pamamagitan ng pag-unawa sa kakanyahan ng proseso, maaari mong pabilisin ang pagganap ng iyong mapagkukunan.

Ang pagpapalitan ng data sa pagitan ng server at ng browser ay nangyayari sa pamamagitan ng HTTP protocol. Ang browser mismo, mula sa isang programming point of view, ay HTTP client, dahil ginagamit nito ang protocol na ito kapag nagpapadala ng mga kahilingan at para makatanggap ng data ng tugon.

Ngayon ibunyag natin ang kakanyahan ng konsepto ng HTTP protocol

HTTP (HyperText Transfer Protocol)– ang proseso kung saan ang lahat ng uri ng pagpapalitan ng impormasyon ay isinasagawa sa World Wide Web.

Kami, bilang mga web developer, ay interesado lamang sa proseso ng pagpapalitan at pagpapakita ng impormasyon.

Naka-synchronize na protocol

Ang pagpapalitan ng data ay isinasagawa ayon sa scheme ng "client-server". Sa pamamaraang ito, ang isang kliyente ay isang aparato na nagpapadala ng isang kahilingan upang magbigay ng ilang impormasyon, at ang isang server ay isang sistema na tumatanggap ng isang kahilingan, nagpoproseso nito at nagpapadala ng tugon pabalik sa kliyente. Ang proseso ng pakikipag-ugnayan mismo ay maaaring nahahati sa dalawang yugto: pagpapadala ng kahilingan sa HTTP at pagtanggap ng tugon sa HTTP.

Ang mga kahilingan at tugon ay hindi maaaring ipadala nang sabay-sabay ang pag-synchronize ng proseso ay dapat mapanatili. Iyon ay, ang paghahatid ng tugon ay magsisimula lamang pagkatapos ng pagkumpleto ng pagpapadala ng kahilingan ay imposible. Upang gawing mas malinaw, gumuhit tayo ng isang pagkakatulad sa isang bus: hindi mo ito magagamit hanggang sa makarating ito sa hintuan.

Paano ginawa ang kahilingan?

Ang proseso ng pagpapadala ng kahilingan sa server ay maaaring nahahati sa ilang bahagi:

  1. Una sa lahat, isang kahilingan sa DNS ang ginawa, na dapat i-convert ang address ng site mula sa URI na format sa IP (ang numeric na anyo ng URI address). Ito ang format ng address na ginamit sa World Wide Web.
  2. Pagkatapos matukoy ang IP, isang koneksyon ang naitatag sa pagitan ng server at ng HTTP client.
  3. Pagpasa ng kahilingan.
  4. Ang pagkaantala, na kinabibilangan ng pagpapadala ng impormasyon sa server, pagproseso nito at pagpapadala ng tugon sa kahilingan. Ang mga programmer ay tumatawag sa yugtong ito ng oras na naghihintay ng tugon.
  5. Pagtanggap ng tugon sa isang kahilingan.

Maaari mong subaybayan ang lahat ng mga yugtong ito gamit ang panel ng web developer sa iyong browser.

Sa listahan ng lahat ng mga yugto, ang una ay medyo mahaba. Sa simula ng pagbuo ng protocol HTTP gumamit ng hindi napapanahong pamamaraan sa pagpoproseso ng data, na nagbibigay para sa pagsira ng koneksyon pagkatapos matanggap ang tugon sa kinakailangang kahilingan. Ito ay lubos na nagpabagal sa proseso ng pagtatrabaho sa espasyo sa Internet. Gayunpaman, pagkatapos ng isang bagong standardisasyon ng protocol ay inilabas HTTP bersyon 1.1, naging available ang isang bagong mode ng koneksyon - panatilihing-buhay, ayon sa kung saan ang koneksyon ay naging hindi maihihiwalay. Bilang resulta, pagkatapos iproseso ang unang kahilingan, hindi mo na kailangang dumaan muli sa unang yugto, ngunit agad na lumipat sa pangalawa.

Tandaan

Ang koneksyon ay pinananatili lamang sa loob ng isang mapagkukunan ng web. Kapag lumipat sa isa pang host, ang koneksyon ay nasira at ang unang yugto ay muling nagiging mahalagang bahagi ng proseso ng pagproseso ng kahilingan.

Ang pinakamahabang proseso sa protocol ay naghihintay ng tugon. Sa kasong ito, ang pag-upgrade ng detalye ay walang nagagawa upang mabawasan ang oras ng pagproseso. Gayundin, ang prosesong ito ay hindi apektado sa anumang paraan ng kapangyarihan ng aparato kung saan ang mapagkukunan ay output. Ang mga computer ay pumapasok sa proseso lamang sa huling yugto, kapag ang sagot ay dumating na at kailangang iproseso.

Binabawasan ng ganitong paraan ng trabaho ang mga pagkakataon ng mga site na maging zero sa kumpetisyon sa mga desktop application. Ilalabas nito ang unang paraan upang mapabilis ang website - kailangan mong bawasan ang bilang ng mga tawag sa server na nakasulat sa code.

Parallel HTTP na koneksyon

Upang malutas ang problema ng mahabang latency at pagkagambala sa pakikipag-usap sa host, isang parallel na pamamaraan ng komunikasyon ay nilikha sa pagitan ng kliyente at ng server. Sa madaling salita, maaari kang sabay na magtatag ng isang koneksyon sa ilang mga host. Mga karaniwang developer HTTP 1.1 Inirerekomenda na kumonekta ng hindi hihigit sa 2 mga channel ng koneksyon nang sabay-sabay. Ngunit dapat tandaan na ang detalye ay nagmula sa panahon ng mga sinaunang dinosaur. Ngayon ang mga browser ay madaling sumusuporta sa komunikasyon sa 4 na channel nang sabay-sabay bilang default, at kung huhukay ka sa mga setting ng kliyente, ang figure na ito ay maaaring tumaas sa 8.

Ang bawat channel ay nagpapatakbo ayon sa lumang scheme ng koneksyon, ngunit ang pagtaas sa kanilang bilang ay humantong sa mga makabuluhang pagbabago sa mga tuntunin ng oras ng pag-load ng mapagkukunan.

Pipeline HTTP na koneksyon

Sa pag-unlad ng teknolohiya, ang proseso ng pakikipag-ugnayan sa pagitan ng server at ng browser ay nagsimulang umunlad nang malaki. Ang isang makabuluhang tagumpay sa bagay na ito ay ang paglikha ng isang pipeline scheme para sa pagpapadala ng mga kahilingan sa server (sa orihinal - HTTP pipelining). Ayon sa pamamaraang ito, naging posible na magpadala ng ilang mga kahilingan sa pamamagitan ng isang channel nang hindi naghihintay ng tugon sa kanila. Sa turn, ang server ay nagsimulang magpadala ng mga tugon sa bawat kahilingan sa pagkakasunud-sunod ng priyoridad.

Salamat sa inobasyong ito, posible ring bawasan ang bilang ng TCP/IP packet. Kaya, maaari kang maglagay ng ilan sa isang naturang pakete Mga kahilingan sa HTTP. Bilang resulta, hindi lamang ang pagpapatakbo ng protocol ay mapapabuti, kundi pati na rin ang kahusayan ng Internet sa kabuuan ay tataas.

Upang buod ito

Sa kasalukuyan ang pagtutukoy HTTP 1.1 ay isang hindi napapanahong hanay ng mga tuntunin sa moral. Ang paggawa sa paggawa ng makabago nito ay nagpapatuloy sa loob ng mahabang panahon HTTP-NG At SPDY. Paunlarin HTTP Posible rin ito sa pamamagitan ng pagpapabuti ng programming language ng website HTML5. Ang lahat ng mga prosesong ito ay magpapabilis sa pagpapatakbo ng protocol, ngunit ang panuntunan ng pagliit ng pag-access sa server, na magpapataas ng bilis ng mapagkukunan, ay palaging may kaugnayan.

Naglabas kami ng bagong libro, Social Media Content Marketing: How to get Inside Your Followers' Heads and Make Them Fall in Love with Your Brand.

Mag-subscribe

Ang HTTP ang nagpapahintulot sa data na mailipat. Sa una, ito ay nilikha para sa pagpapadala at pagtanggap ng mga dokumento na naglalaman ng mga link sa loob upang gawin ang paglipat sa mga mapagkukunan ng third-party.

Ang abbreviation ay may nakasulat na "HyperText Transfer Protocol," na ang ibig sabihin ay "transfer protocol." Ang HTTP ay kabilang sa pangkat ng layer ng application batay sa mga partikular na ginamit ng OSI.

Upang mas maunawaan kung ano ang ibig sabihin ng HTTP, tingnan natin ang isang simpleng pagkakatulad. Isipin natin na nakikipag-usap ka sa isang dayuhan sa isang social network. Pinadalhan ka niya ng isang mensahe sa Ingles, natatanggap mo ito. Ngunit hindi mo maiintindihan ang nilalaman dahil hindi mo mahusay ang wika. Upang maintindihan ang mensahe, gumamit ng diksyunaryo. Ang pagkakaroon ng naiintindihan ang kakanyahan, sagutin mo ang dayuhan sa Russian at ipadala ang sagot. Natanggap ng dayuhan ang sagot at, sa tulong ng isang tagasalin, naiintindihan ang mensahe. Upang gawing simple ang buong mekanismo, ang mga protocol ng Internet na HTTP ay gumaganap ng function ng isang tagasalin. Sa kanilang tulong, maaaring isalin ng browser ang naka-encrypt na nilalaman ng mga web page at maipakita ang kanilang nilalaman.

Para saan ang HTTP?

Ang HTTP protocol ay ginagamit upang makipagpalitan ng impormasyon gamit ang isang modelo ng client-server. Ang kliyente ay bumubuo at nagpapadala ng isang kahilingan sa server, pagkatapos ay pinoproseso at sinusuri ito ng server, pagkatapos nito ay nilikha ang isang tugon at ipinadala sa gumagamit. Sa pagtatapos ng prosesong ito, nag-isyu ang kliyente ng bagong utos, at nauulit ang lahat.

Kaya, pinapayagan ng HTTP protocol ang pagpapalitan ng impormasyon sa pagitan ng iba't ibang mga application ng user at mga espesyal na web server, pati na rin ang pagkonekta sa mga mapagkukunan ng web (karaniwang mga browser). Ngayon, tinitiyak ng inilarawang protocol ang pagpapatakbo ng buong network. Ginagamit din ang HTTP data transfer protocol upang maglipat ng impormasyon sa iba pang mas mababang antas ng mga protocol, halimbawa, WebDAV o SOAP. Sa kasong ito, ang protocol ay isang paraan ng transportasyon. Maraming mga programa din ang umaasa sa HTTP bilang pangunahing tool para sa pagpapalitan ng impormasyon. Ang data ay ipinakita sa iba't ibang mga format, halimbawa, JSON o XML.

Ang HTTP ay isang protocol para sa pagpapalitan ng impormasyon sa isang koneksyon sa IP/TCP. Karaniwan, ang server ay gumagamit ng TCP port 80 para sa layuning ito. Kung ang port ay hindi tinukoy, ang client software ay gagamit ng TCP type port 80 bilang default. Sa ilang mga kaso, maaaring gumamit ng ibang mga port.

Gumagamit ang HTTP protocol ng simetriko na pamamaraan ng pag-encrypt at gumagamit ng simetriko na mga cryptosystem. Kasama sa mga simetriko na cryptosystem ang paggamit ng parehong key upang i-encrypt at i-decrypt ang impormasyon.

Ano ang pagkakaiba sa pagitan ng HTTP at HTTPS

Ang pagkakaiba ay maaaring makita kahit na mula sa pag-decode ng mga pagdadaglat. Ang HTTPS ay nangangahulugang Hypertext Transfer Protocol Security. Kaya, ang HTTP ay isang independiyenteng protocol, at ang HTTPS ay isang extension upang protektahan ito. Ang HTTP ay nagpapadala ng impormasyon nang hindi protektado, habang ang HTTPS ay nagbibigay ng cryptographic na proteksyon. Ito ay totoo lalo na para sa mga mapagkukunang may responsableng awtorisasyon. Ang mga ito ay maaaring mga social network o mga site ng sistema ng pagbabayad.

Ano ang mga panganib ng pagpapadala ng hindi protektadong data? Maaaring ilipat sila ng interceptor program sa mga umaatake anumang oras. Ang HTTPS ay may isang kumplikadong teknikal na organisasyon, na nagbibigay-daan sa iyong mapagkakatiwalaang protektahan ang impormasyon at alisin ang posibilidad ng hindi awtorisadong pag-access dito. Ang pagkakaiba ay nasa mga port. Karaniwang gumagana ang HTTPS sa port 443.

Kaya, ginagamit ang HTTP para sa paglilipat ng data, at pinapayagan ng HTTPS ang ligtas na paglipat ng data gamit ang pag-encrypt at awtorisasyon sa mga mapagkukunang may mataas na antas ng seguridad.

Karagdagang pag-andar

Ang HTTP ay mayaman sa functionality at tugma sa iba't ibang extension. Ang 1.1 na detalye na ginagamit ngayon ay nagbibigay-daan sa Upgrade header na magamit upang lumipat at gumana sa iba pang mga protocol kapag nagpapalitan ng data. Upang gawin ito, dapat magpadala ang user ng kahilingan sa server gamit ang header na ito. Kung kailangan ng server na lumipat sa isang partikular na exchange gamit ang ibang protocol, ibinabalik nito ang isang kahilingan sa kliyente, na nagpapakita ng status na "426 Upgrade Required".

Ang tampok na ito ay partikular na nauugnay para sa pagpapalitan ng impormasyon sa pamamagitan ng WebSocket (may RFC 6455 na detalye, na nagbibigay-daan sa iyong makipagpalitan ng data anumang oras, nang walang mga hindi kinakailangang HTTP na kahilingan). Upang lumipat sa WebSocket, nagpapadala ang isang user ng kahilingan kasama ang header ng Pag-upgrade at ang value na "websocket". Susunod, tumugon ang server gamit ang "101 Switching Protocols." Pagkatapos ng sandaling ito, magsisimula ang paglilipat ng impormasyon sa pamamagitan ng WebSocket.

Nagpapakita kami sa iyo ng isang paglalarawan ng mga pangunahing aspeto ng HTTP protocol - isang network protocol na, mula sa unang bahagi ng 90s hanggang sa araw na ito, ay nagbibigay-daan sa iyong browser na mag-load ng mga web page. Ang artikulong ito ay isinulat para sa mga nagsisimula pa lamang magtrabaho sa mga network ng computer at bumuo ng mga aplikasyon sa network, at nahihirapan pa ring basahin ang mga opisyal na detalye nang mag-isa.

HTTP- isang malawakang ginagamit na protocol ng paglilipat ng data, na orihinal na inilaan para sa paglipat ng mga hypertext na dokumento (iyon ay, mga dokumento na maaaring naglalaman ng mga link na nagpapahintulot sa pag-navigate sa iba pang mga dokumento).

Ang abbreviation na HTTP ay nangangahulugang HyperText Transfer Protocol, "hypertext transfer protocol". Ayon sa detalye ng OSI, ang HTTP ay isang application (itaas, ika-7) layer protocol. Ang kasalukuyang bersyon ng protocol, HTTP 1.1, ay inilarawan sa detalye ng RFC 2616.

Ang HTTP protocol ay nagsasangkot ng paggamit ng isang istraktura ng paglilipat ng data ng client-server. Ang application ng kliyente ay bumubuo ng isang kahilingan at ipinapadala ito sa server, pagkatapos nito ay pinoproseso ng software ng server ang kahilingan, bumubuo ng isang tugon at ipinadala ito pabalik sa kliyente. Ang application ng kliyente ay maaaring magpatuloy na magpadala ng iba pang mga kahilingan, na ipoproseso sa parehong paraan.

Ang isang gawain na tradisyonal na nilulutas gamit ang HTTP protocol ay ang pagpapalitan ng data sa pagitan ng isang user application na nag-a-access ng mga mapagkukunan ng web (karaniwang isang web browser) at isang web server. Sa ngayon, salamat sa HTTP protocol na nagpapatakbo ang World Wide Web.

Madalas ding ginagamit ang HTTP bilang transport protocol para sa iba pang protocol ng layer ng application tulad ng SOAP, XML-RPC at WebDAV. Sa kasong ito, ang HTTP protocol ay sinasabing ginagamit bilang isang "transportasyon".

Ang API ng maraming produkto ng software ay nagpapahiwatig din ng paggamit ng HTTP para sa paglilipat ng data - ang data mismo ay maaaring nasa anumang format, halimbawa, XML o JSON.

Karaniwan, ang paglilipat ng data ng HTTP ay isinasagawa sa mga koneksyon ng TCP/IP. Sa kasong ito, kadalasang gumagamit ang software ng server ng TCP port 80 (at, kung hindi tahasang tinukoy ang port, kadalasang ginagamit ng client software ang port 80 bilang default para sa pagbubukas ng mga koneksyon sa HTTP), bagama't maaari itong gumamit ng anupamang isa.

Paano magpadala ng kahilingan sa HTTP?

Ang pinakamadaling paraan upang maunawaan ang HTTP protocol ay ang subukang i-access ang ilang web resource nang manu-mano. Isipin na ikaw ay isang browser at mayroon kang isang gumagamit na talagang gustong magbasa ng mga artikulo ni Anatoly Alizar.

Sabihin nating ipinasok niya ang sumusunod sa address bar:

Http://alizar.habrahabr.ru/

Alinsunod dito, ikaw, bilang isang web browser, ay kailangan na ngayong kumonekta sa web server sa alizar.habrahabr.ru.

Upang gawin ito, maaari mong gamitin ang anumang naaangkop na command line utility. Halimbawa, telnet:

Telnet alizar.habrahabr.ru 80

Hayaan akong linawin kaagad na kung biglang magbago ang iyong isip, pindutin ang Ctrl + “]” at pagkatapos ay ipasok - ito ay magbibigay-daan sa iyong isara ang HTTP na koneksyon. Bilang karagdagan sa telnet, maaari mong subukan ang nc (o ncat) - depende sa iyong panlasa.

Pagkatapos mong kumonekta sa server, kailangan mong magpadala ng kahilingan sa HTTP. Ito, sa pamamagitan ng paraan, ay napakadali - ang mga kahilingan sa HTTP ay maaaring binubuo ng dalawang linya lamang.

Upang makabuo ng kahilingan sa HTTP, kailangan mong bumuo ng panimulang linya, at magtakda din ng kahit isang header - ito ang header ng Host, na sapilitan at dapat na naroroon sa bawat kahilingan. Ang katotohanan ay ang pag-convert ng isang domain name sa isang IP address ay isinasagawa sa panig ng kliyente, at, nang naaayon, kapag binuksan mo ang isang koneksyon sa TCP, ang malayong server ay walang anumang impormasyon tungkol sa kung aling address ang ginamit para sa koneksyon: maaaring ito ay, halimbawa , address alizar.habrahabr.ru, habrahabr.ru o m.habrahabr.ru - at sa lahat ng mga kasong ito ang sagot ay maaaring magkakaiba. Gayunpaman, sa katunayan, sa lahat ng mga kaso ang koneksyon sa network ay binubuksan gamit ang node 212.24.43.44, at kahit na sa simula kapag binuksan ang koneksyon ay hindi ang IP address na ito ang tinukoy, ngunit ang ilang domain name, ang server ay hindi alam tungkol dito sa sa anumang paraan - at iyon ang dahilan kung bakit ang address na ito ay kinakailangang ipasa sa header ng Host.

Ang panimulang (paunang) linya ng kahilingan para sa HTTP 1.1 ay binubuo ayon sa sumusunod na pamamaraan:

Halimbawa (ang ganitong panimulang linya ay maaaring magpahiwatig na ang pangunahing pahina ng site ay hinihiling):

At, siyempre, huwag kalimutan na ang anumang teknolohiya ay nagiging mas simple at mas malinaw kapag sinimulan mo na itong gamitin.

Good luck at mabungang pag-aaral!

Mga Tag: Magdagdag ng mga tag

Kung gusto mong malaman kung paano inililipat ang data sa Internet, ang artikulong ito ay para sa iyo. Sasabihin ko sa iyo ang lahat ng alam ko tungkol sa mga protocol ng HTTP at HTTPS, ipakita ang pagkakaiba at pagkakaiba sa pagitan ng mga ito. Maligayang pagbabasa!

HTTP 1.1 - ano ang protocol na ito?

Ang HTTP (Ingles: “Hypertext Transfer Protocol”) ay isang top-level network protocol para sa pagpapadala ng hypertext at arbitrary na data sa Internet.

Gamit ang HTTP, tumatanggap ang browser ng data mula sa mga web server at maipapakita ito sa isang form na katanggap-tanggap at naiintindihan ng mga user ng Internet. Ang baligtad na proseso ay nangyayari sa eksaktong parehong paraan - ang pagpapadala ng data ng user pabalik sa server (halimbawa, sa panahon ng pagpaparehistro).

Ang nilalamang ipinadala mula at sa server ay maaaring ipakita sa anumang anyo: mga larawan, file, dokumento, link at code - sa anumang kaso, salamat sa HTTP na magagamit ng mga tao ang Internet at mag-load ng daan-daang mga web page sa browser.

Ang kasalukuyang bersyon ng protocol ay 1.1. Ang paglalarawan nito ay nasa detalye ng RFC.

Ginagamit ang HTTP sa imprastraktura ng paglilipat ng data ng client-server. Paano ito gumagana? Ang application sa "kliyente" na bahagi ay bumubuo ng isang kahilingan para sa pagproseso sa "server" na bahagi, pagkatapos nito ang tugon ay ipapadala pabalik sa "kliyente". Ang "kliyente" ay maaaring magsimula ng mga karagdagang kahilingan at makatanggap ng mga bagong tugon. At iba pa.

Ang pinakakaraniwang "client" na application ay isang web browser kung saan naa-access ang mga mapagkukunan ng web. Sa pag-unlad ng mga mobile na teknolohiya, ang mga mobile application ay naidagdag sa mga browser sa iba't ibang mga smartphone at tablet. Bukod dito, ang panig ng server ng mga modernong multidisciplinary na application ay maaaring sabay na magproseso ng data mula sa browser at smartphone. Ang lahat ng ito ay ginagawa sa pamamagitan ng HTTP protocol.

Bukod dito, madalas na gumaganap ang HTTP bilang transport protocol para sa paglilipat ng iba pang mga protocol ng application at ang kanilang mga API: WebDAV, XML-RPC, REST, SOAP. Well, ang data na ipinadala sa pamamagitan ng API ay maaaring magkaroon ng iba't ibang mga format: XML, JSON at iba pa.

Paano ipinapadala ang data na ito? Kadalasan sa isang TCP/IP na koneksyon: ang client application ay gumagamit ng TCP port 80 bilang default, at ang server ay maaaring gumamit ng iba pa, ngunit kadalasan ito ay port 80 din.

Ang HTTP manipulation object ay isang resource na tinukoy sa request URI ng isang client application para matukoy nang tama ang "kung ano talaga ang kailangan." Kadalasan ang mga ito ay mga file, data o mga lohikal na bagay na nakaimbak sa isang server. Sa kasong ito, maaaring eksaktong ipahiwatig ng kahilingan kung paano ipakita ang parehong data: kung aling format, pag-encode, wika ang pipiliin. Ang "tampok" na ito ay nagpapahintulot sa iyo na makipagpalitan ng hindi lamang hypertext, kundi pati na rin ang binary data.

Ang pangalawang tampok ng HTTP ay hindi nito nai-save ang estado sa pagitan ng magkakasunod na mga pares ng kahilingan-tugon. Ngunit hindi ito problema dahil ang mga bahagi ng application sa panig ng kliyente o server ay maaaring mag-imbak ng impormasyon tungkol sa estado ng mga pinakabagong kahilingan at tugon. Sa panig ng kliyente, ang naturang impormasyon ay tinatawag na cookies, sa panig ng server - mga session.

Kasabay nito, hindi problema para sa browser ng kliyente na subaybayan ang pagkaantala ng tugon ng server, at para sa server ay hindi problema ang pag-imbak ng mga header ng pinakabagong mga kahilingan at mga IP address ng kliyente. Ngunit, binibigyang-diin ko muli, ang protocol mismo ay walang alam tungkol dito - nagpapadala lamang ito ng data.

Ang mga tagapamagitan (proxy server) ay maaari ding makilahok sa paglilipat ng data upang makilala ang mga proxy mula sa mga end server (ang tinatawag na "source server").

Magsisimula ang magic kapag ang parehong programa (kliyente o server) ay maaaring gumanap ng mga function ng isang tagapamagitan, isang kliyente, o isang server - depende sa mga gawain.

HTTP/2 - anong uri ng protocol ito?

Ang orihinal na bersyon ng HTTP protocol ay lumabas sa CERN noong 1991. Noong 1992, ang pampublikong bersyon ng HTTP 0.9 at ang detalye nito ay nai-publish, salamat sa kung saan ang mga patakaran ng pakikipag-ugnayan sa pagitan ng mga application ng kliyente at server ay na-streamline, pati na rin ang isang malinaw na delineation ng pag-andar.

Ang HTTP/1.0 ay lumitaw noong 1996, at ang modernong bersyon ng protocol - HTTP/1.1 - noong 1999. Sa pagpasok ng milenyo, natutunan ng HTTP protocol na suportahan ang persistent connection mode, i.e. iwanang bukas ang koneksyon pagkatapos matanggap ang tugon sa isang kahilingan. Ginawa nitong posible na magpadala ng ilang kahilingan nang sabay-sabay sa isang koneksyon, sa halip na buksan at isara ang session sa bawat oras.

Lumipas ang oras at habang umuunlad ang Internet, tumaas ang laki ng mga pahina, dumami ang bilang ng mga kahilingan - kailangan ng higit pang mga mapagkukunan. Ito ay kung paano lumitaw ang pangangailangan para sa isang bagong protocol.

At pagkalipas ng labing-anim na taon, noong 2015, na-publish ang huling bersyon ng draft na detalye para sa susunod na bersyon ng protocol, HTTP/2. Ang binary protocol HTTP/2 ay mas handa para sa mga modernong realidad kaysa sa hinalinhan nitong HTTP 1.1 dahil ang bagong protocol ay nilulutas ang pinakamahalagang problema ng paglilipat ng data sa Internet - maramihang bukas na koneksyon.

At lahat dahil naglo-load ang mga kasalukuyang site ng maraming elemento, parehong mula sa kanilang server at mula sa CDN: JS scripts, CSS styles, fonts at images. Kapag naglilipat ng kumpletong hanay ng mga file gamit ang HTTP 1.1 protocol, maraming koneksyon ang nalilikha. Kung sa hinaharap ay lumipat tayo sa HTTP/2 protocol, ang paglilipat ay magaganap sa loob ng iisang koneksyon sa pagitan ng kliyente at ng server, na makabuluhang magpapabilis at mag-o-optimize sa pag-load ng nilalaman ng site.

Mga pangunahing tampok ng HTTP/2 na magiging kapaki-pakinabang para sa mga website:

  • Pag-aayos at pamamahala ng mga priyoridad ng mga kahilingan/daloy - independyenteng itinatakda ng kliyente ang priyoridad ng mga mapagkukunan at data para sa server
  • HTTP header compression;
  • Humiling ng multiplexing o parallel na pag-load ng ilang elemento ng site sa isang koneksyon sa TCP - maraming mga kahilingan ang ipinadala sa pamamagitan ng isang koneksyon, at ang kliyente ay maaaring makatanggap ng mga tugon sa anumang pagkakasunud-sunod, i.e. hindi na kailangan ng maramihang bukas na koneksyon sa TCP;
  • Availability at suporta mula sa server ng mga proactive na push notification - ang server ay maaaring nakapag-iisa na magpadala ng data sa kliyente na hindi pa hinihiling ng kliyente (halimbawa, batay sa impormasyon tungkol sa kung aling pahina ang bubuksan ng user pagkatapos nito).

Siyempre, ang pangunahing bagay dito ay ang stream multiplexing. Ang prinsipyo ng operasyon ay madaling ipaliwanag: Ang mga packet ng koneksyon ng TCP/IP ay pinaghalo sa loob ng isang koneksyon. Kaya, sa mixed mode, maraming "data cars" ang konektado sa isang "tren", na pinaghihiwalay "sa pagdating". Noong nakaraan, ang mga "kotse" ay pinilit na maglakbay nang mas mahaba at hiwalay, ngunit ngayon sila ay maglakbay nang magkasama at mas mabilis.

Ang mga bentahe sa itaas ng HTTP/2 protocol ay magbibigay-daan sa mga web developer na huminga ng malalim at iwanan ang mga "saklay" gaya ng:

  • Paggamit ng mas malaking bilang ng mga kaugnay na domain upang matiyak ang pagtatatag ng malaking bilang ng mga koneksyon sa TCP/IP (para sa pag-download ng mga file);
  • Mga sprite ng imahe - kapag pinagsama ang mga imahe sa isang file upang bawasan ang bilang ng mga kahilingan sa web server (at ang file mismo ay "namumula" dahil mas maraming mga imahe ang nakasulat dito);
  • Pinagsasama-sama ang mga file ng CSS at JS, na ginawa din upang bawasan ang mga kahilingan.

Ang huling halatang bentahe ay hindi mo na kailangang gumawa ng anumang karagdagang bagay sa mismong site (upang paganahin ang HTTP/2) - lahat ng gawain ay isinasagawa sa server sa halos "1 click", at para sa mga kliyente ng shared at VPS hosting ito ay karaniwang hindi mapapansin.

Sa madaling salita, mabubuhay tayo!

Ang HTTP/2 ay nilikha at binuo batay sa draft na SPDY/3 protocol (Google) at nalampasan ito - kinilala ng Google ang mga pakinabang ng HTTP/2 bilang mas promising at aabandonahin ang suporta para sa SPDY/2 sa hinaharap.

Ang hinulaang acceleration ng tugon ng server sa pamamagitan ng HTTP/2 protocol ay magiging humigit-kumulang 30% - ang mga tunay na pagsubok ay nagpakita na ng bilis ng 19-23% na mas mataas at hindi ito ang limitasyon.

Ayon sa mga resulta ng mga pagsubok ng Airi.rf, ang pagtaas ng bilis mula sa pagpapagana lamang ng HTTP/2 protocol ay 13-18% (nang walang pag-optimize). Bakit ito mahalaga?

Sa kabila ng katotohanan na ang suporta ng isang site para sa HTTP/2 protocol ay kasalukuyang hindi direktang nakakaapekto sa pagraranggo ng mga site sa Google at Yandex, ang mga posisyon sa mga resulta ng paghahanap ay apektado ng bilis ng paglo-load. At dahil ang protocol ay nagpapakita ng isang mas mataas na bilis ng pag-download (na isang medyo makabuluhang kadahilanan), ito ay hindi direktang nakakaapekto sa ranggo.

Pangunahin dahil sa mga salik sa pag-uugali. Ang pagpapabilis ng paglo-load ay nagbibigay-daan sa mga user na hindi gaanong pagod at mas nakatuon sa paggalugad sa site: tumitingin ng higit pang mga pahina at hindi umaalis sa site dahil sa mahabang oras ng pag-load (nababawasan ang mga bounce).

Karamihan sa mga modernong browser ay sumusuporta na sa HTTP/2 - ~70% ng trapiko sa Internet ay dumadaan sa kanila:

  • Chrome 41-52 at Chrome 46+ sa Android;
  • Firefox 36-48 at Firefox 41+ sa Android;
  • Opera 28-34 at Opera 30+ sa Android;
  • Safari 9 at Safari sa iOS 9.1;
  • IE 11 sa Windows 10 at Edge browser 12, 13.

Hindi pa malinaw kung kailan magaganap ang isang ganap na paglipat sa HTTP/2 - malamang sa malapit na hinaharap. Ang pangunahing bagay ay walang sinuman ang magmadaling abandunahin ang HTTP/1.x. Tulad ng sinasabi nila: "Kung gumagana ito, huwag hawakan ito."

Ano ang ibig sabihin ng HTTPS protocol at saan ito ginagamit?

Well, alam mo na ang lahat tungkol sa pagpapalitan ng data gamit ang HTTP protocol: ang anumang paglilipat ng data ay isinasagawa sa pamamagitan ng mga kahilingan gamit ang transport protocol na ito. Bakit kailangan natin ng HTTPS at ano ito? Tapos, namuhay kami ng normal na wala siya?

Ang problema ay ang data sa pamamagitan ng HTTP ay hindi protektado at ipinapadala sa malinaw na teksto. Ang Internet ay isang pandaigdigang ipinamamahaging network ng mga node. At kung nagpapadala ka ng bukas na data sa pamamagitan ng isang hindi protektadong protocol (ang Wi-Fi sa isang shopping center ay nalalapat din dito), kung gayon ang isa sa mga node na ito ay maaaring humarang dito.

Hindi sinasadya, siyempre, maaari lamang itong pag-hack ng mga kriminal. Ginawa ang HTTPS upang matiyak na secure ang koneksyon, at ipinapadala ang data sa naka-encrypt na form gamit ang SSL/TLS cryptographic protocol. Ito ay isang espesyal na "wrapper" sa ibabaw ng HTTP na nag-e-encrypt ng data, na ginagawang hindi naa-access ng mga nanghihimasok at hindi awtorisadong tao.

HTTPS - Ingles "Secure Hypertext Transfer Protocol".

Kaya't hindi tulad ng default na port 80 sa HTTP, ang HTTPS ay gumagamit ng TCP port 443 at mayroong isang encryption key. Ang susi ay maaaring 40, 56, 128 o 256 bit ang haba;

Ngayon ang lahat ng mga browser ay sumusuporta sa HTTPS - ito ay awtomatikong naka-on kapag posible at ang server ay nangangailangan nito.

Mahalagang gumamit ng HTTPS sa mga sumusunod na serbisyo:

  • Mga elektronikong sistema ng pagbabayad (mga bangko, elektronikong pera, atbp.);
  • Mga serbisyong tumatanggap at nagpapadala ng pribadong impormasyon at personal na data, halimbawa, ang Yandex ay mayroong: Pasaporte, Taxi, Direkta, Metrica, Mail, Pera, Webmaster at iba pa;
  • Mga social network at personal na account sa mga serbisyo sa Internet;
  • Mga search engine.

Ang HTTPS ay gumagana nang simple. Ipapaliwanag ko sa isang halimbawa.

Naglalagay ka ng mahalagang impormasyon (pag-login, password, mga detalye ng card, personal na data) sa isang cell, "i-lock ito gamit ang isang susi": ini-encrypt ng cell ang iyong data gamit ang key na ito.

Ngayon ipadala ito sa pamamagitan ng koreo sa addressee. Natanggap ng addressee ang parcel cell, ngunit hindi ito mabuksan - wala siyang susi. Pagkatapos ay ini-lock niya (i-encrypt) ang cell gamit ang pangalawang lock at ibinalik sa iyo ang parsela. Makakatanggap ka ng isang pakete na may dalawang lock, ngunit mayroon kang susi sa isa. Maaari mo na ngayong i-unlock ang iyong lock (i-decrypt ang data) at ipadala muli ang package sa orihinal na tatanggap.

Kasabay nito, ang data ay nananatiling protektado - pagkatapos ng lahat, ito ay hindi tiningnan o binago ng sinuman at hanggang sa ito ay natanggap ng tatanggap, ito ay protektado ng isang naka-encrypt na susi. Natanggap ng addressee ang parsela, na mayroon nang isang lock, i-decrypt ito at pinoproseso ang iyong data. Halimbawa, isinasagawa nito ang iyong transaksyon.

Iyon lang - ganyan kung paano gumagana ang HTTPS.

Ang trick dito ay na sa unang ganoong palitan, ang encryption key ay ipinagpapalit upang ito ay kilala sa parehong mga huling tatanggap, ngunit hindi alam ng alinman sa mga node sa kahabaan ng ruta ng data. Pagkatapos makipagpalitan ng cipher, maaari kang malayang makipagpalitan ng mga mensahe (naka-encrypt) nang walang takot sa pagharang ng data na ito, dahil kung wala ang cipher key ay hindi posible na buksan at basahin ito.

Ang tanging caveat dito ay kailangan mong malaman na ipinapadala mo ang data nang eksakto kung saan ito kinakailangan. At ang huling punto ay ang patutunguhan. Ngunit kailangan mong kumpirmahin at tiyaking alam na ang huling destinasyon ay umiiral at kinokontrol ng mismong server kung saan ipinapadala ang data.

Upang gawin ito, ang mga server ay tumatanggap ng mga espesyal na sertipiko ng seguridad ng HTTPS mula sa mga sentro ng sertipikasyon, na nagpapatunay sa "finality" ng patutunguhan (na ang site ay hindi isang node na nagpapadala ng data nang higit pa) at ang paggana ng SSL/TLS encryption technology, i.e. seguridad ng koneksyon.

At narito ang hitsura ng sertipiko mismo:

Sa kasalukuyan, ang HTTPS ay binuo sa lahat ng modernong browser at ang kailangan lang mula sa user upang mapanatili ang seguridad ng pagpapadala ng data sa pamamagitan ng HTTPS ay ang regular na pag-update ng software para sa pag-surf, pagtanggap at pagpapadala ng mahalagang data sa Internet.

Sa pamamagitan ng pagsasagawa ng pakikipag-ugnayan ng client-server sa pamamagitan ng HTTPS protocol, hindi mo kailangang mag-alala tungkol sa kaligtasan ng iyong data - mapagkakatiwalaan kang protektado mula sa pag-eavesdrop sa iyong koneksyon sa network: sniffer attacks at man-in-the-middle attacks.

Ano ang ibig sabihin ng na-cross out na icon ng HTTPS at ng berdeng icon ng HTTPS, ano ang pagkakaiba? Ligtas. Ang berde ay ligtas, ang pula at ang ekis ay hindi ligtas.

At napakaginhawa na ang na-cross out na icon ng HTTPS ay nangangahulugan na sa kabila ng paggamit ng protocol na ito, hindi secure ang koneksyon. Nangyayari ito kapag hindi na-load ang mga elemento ng site sa pamamagitan ng HTTPS o nag-expire na ang certificate. Nakikita kaagad ng user - oo, hindi ito ligtas. At maaari siyang umalis sa site, o ipagsapalaran ang kanyang data.

Alin ang mas mahusay na HTTP 1.1, HTTP/2 o HTTPS?

Upang buod, hawakan ko ang paksa ng mas mainam na paggamit ng mga protocol.

Malinaw na sa ngayon ang HTTP 1.1 ang pinakakaraniwang protocol at ginagamit bilang default. Ang oras ng HTTP/2 ay hindi pa dumarating, ngunit sa lalong madaling panahon karamihan sa trapiko sa Internet ay dadaan sa pangalawang bersyon ng HTTP protocol. Gagawin nitong mas madali ang buhay para sa mga user dahil mas mabilis maglo-load ang mga site. Magiging masaya din ang mga administrator ng server at website, dahil pinapayagan ka ng bagong protocol na i-optimize ang mga website sa bagong paraan, na nagpapabilis sa paglo-load at pag-upload ng data.

Kasabay nito, halos hindi posible na ang lahat ng mga site ay lumipat sa HTTPS, dahil para sa layunin ng pagkonsumo ng nilalaman ng entertainment, ang pag-encrypt ay walang silbi. Oo, ngayon 10% ng mga site ay gumagamit ng HTTPS sa Alexa ranking ng mga pinakabinibisitang mapagkukunan ng web. Ngunit ito ay sampung porsyento lamang, kabilang ang mga higanteng tulad ng Google, PayPal, Amazon, Aliexpress at iba pa. Ibig sabihin, maraming mga site kung saan ang hindi paggamit ng HTTPS ay nangangahulugan ng paglabag sa karapatan ng gumagamit ng Internet sa seguridad at integridad ng data.

Ngunit ang mga ordinaryong site tulad ng blog ng pitong blogger ay hindi nangangailangan ng HTTPS - walang pagtanggap ng personal o data ng pagbabayad, walang pagpaparehistro at walang pagpapadala ng mahahalagang mensahe.

Kaya sa malapit na hinaharap ay unti-unti tayong lalayo sa HTTP 1.1 pabor sa HTTP/2 at HTTPS.

Ang HTTP Hypertext Transfer Protocol (RFC 1945, 2068) ay idinisenyo upang ilipat ang mga hypertext na dokumento mula sa isang server patungo sa isang kliyente. Ang HTTP protocol ay isang application layer protocol. Ayon sa RFC, ang transport protocol nito ay dapat na isang connection-oriented protocol na naglilipat ng data nang mapagkakatiwalaan at hindi nagpapanatili ng mga hangganan sa pagitan ng mga mensahe.

Sa mga termino sa Web, lahat ng bagay na maaaring ma-access ng isang user - mga dokumento, mga imahe, mga programa - ay tinatawag na mga mapagkukunan.

Ang bawat mapagkukunan ay may natatanging address para sa Web, na tinatawag na unibersal na mapagkukunang pantukoy (URI - Universal Resource Identifier).

Sa pinaka-pangkalahatang kaso, ganito ang hitsura ng URI:

protocol://user:password@host:port/path/file?paremeters#fragment

Ang mga indibidwal na field ng URI ay may sumusunod na kahulugan:

protocol - protocol ng aplikasyon kung saan naa-access ang mapagkukunan;

user - ang user kung kanino na-access ang resource o ang user mismo bilang resource;

password - password ng gumagamit para sa pagpapatunay kapag ina-access ang mapagkukunan;

host - IP address o pangalan ng server kung saan matatagpuan ang mapagkukunan;

port - numero ng port kung saan tumatakbo ang server, na nagbibigay ng access sa mapagkukunan;

landas - landas sa file na naglalaman ng mapagkukunan;

file - file na naglalaman ng mapagkukunan;

mga parameter - mga parameter para sa pagproseso ng mapagkukunan-program;

fragment - ang punto sa file simula kung saan dapat ipakita ang mapagkukunan.

Ang pakikipag-ugnayan sa pagitan ng kliyente at ng Web server ay isinasagawa sa pamamagitan ng pagpapalitan ng mga mensahe.

Ang mga mensahe ng HTTP ay nahahati sa mga kahilingan ng kliyente sa server at mga tugon ng server sa kliyente.

Ang mga mensahe ng kahilingan at pagtugon ay may karaniwang format.

Ang parehong uri ng mga mensahe ay ganito ang hitsura: una ay may isang panimulang linya, pagkatapos ay posibleng isa o higit pang mga field ng header, na tinatawag ding simpleng mga header, pagkatapos ay isang walang laman na linya (iyon ay, isang linya na binubuo ng mga character na CR at LF), na nagpapahiwatig ng dulo ng mga field ng header at pagkatapos ay posibleng ang katawan ng mensahe:

panimulang linya

field ng header 1

field ng header 2

field ng header N

katawan ng mensahe

Ang mga format ng paunang linya ng kliyente at server ay magkakaiba at tatalakayin sa ibaba.

May apat na uri ng heading:

pangkalahatang mga header, na maaaring naroroon sa parehong kahilingan at tugon;

mga header ng kahilingan, na maaari lamang naroroon sa kahilingan;

mga header ng tugon, na maaari lamang naroroon sa tugon;

entity header, na tumutukoy sa katawan ng mensahe at naglalarawan sa mga nilalaman nito.

Ang bawat header ay binubuo ng isang pamagat, isang colon na ":" na character, at isang halaga. Ang pinakamahalagang heading ay ibinibigay sa talahanayan. 1.

Talahanayan 1

Mga header ng HTTP protocol

Ang paraan ng pag-encode ng katawan ng mensahe, halimbawa upang bawasan ang laki

Haba ng mensahe sa bytes

Uri ng nilalaman at posibleng ilang parameter

Isang natatanging tag ng mapagkukunan sa server na nagbibigay-daan sa iyong paghambingin ang mga mapagkukunan

Ang petsa at oras kung kailan magbabago ang mapagkukunan sa server at kailangang kunin muli

Petsa at oras na huling binago ang nilalaman

Mga header ng tugon

Bilang ng mga segundo pagkatapos kung saan ang kahilingan ay dapat na ulitin upang makakuha ng bagong nilalaman

Ang URI ng mapagkukunan upang ma-access upang makuha ang nilalaman

Petsa at oras o bilang ng mga segundo pagkatapos kung saan ang kahilingan ay dapat na ulitin upang makakuha ng matagumpay na tugon

Pangalan ng software ng server na nagpadala ng tugon

Humiling ng mga header

Mga uri ng nilalaman na "naiintindihan" ng kliyente at maaaring i-play

Mga pag-encode ng character kung saan maaaring tumanggap ng text content ang kliyente

Ang paraan ng server ay maaaring i-encode ang mensahe

Host at numero ng port kung saan hinihiling ang dokumento

Kung-Binago-Since

Kung-Hindi Binago-Mula

Humiling ng mga header para sa conditional resource access

Humiling ng bahagi ng isang dokumento

Pangalan ng software ng kliyente

Pangkalahatang Pamagat

Isinasaad ng server na isasara o panatilihing buhay ang session

Petsa at oras na nabuo ang mensahe

Ang isang detalyadong paglalarawan ng mga header ng HTTP/1.0 ay matatagpuan sa RFC 2068.

Ang katawan ng mensahe ay naglalaman ng aktwal na impormasyong ipinapadala—ang kargamento ng mensahe. Ang katawan ng mensahe ay isang sequence ng octets (bytes). Maaaring i-encode ang katawan ng mensahe, halimbawa, upang bawasan ang dami ng impormasyong ipinadala, at ang paraan ng pag-encode ay ipinahiwatig sa header ng object ng Content-Encoding.

Ang isang mensahe ng kahilingan mula sa isang kliyente patungo sa isang server ay binubuo ng isang linya ng kahilingan, mga header (pangkalahatan, mga kahilingan, bagay), at posibleng isang katawan ng mensahe. Nagsisimula ang linya ng kahilingan sa pamamaraan, na sinusundan ng identifier ng hinihiling na mapagkukunan, ang bersyon ng protocol, at ang mga sumusunod na character sa dulo ng linya:

<Метод> <Идентификатор> <Версия HTTP>

Ang pamamaraan ay tumutukoy sa isang HTTP protocol command na ilalapat sa hiniling na mapagkukunan. Halimbawa, ang GET na paraan ay nagpapahiwatig na ang kliyente ay gustong kunin ang mga nilalaman ng isang mapagkukunan. Tinutukoy ng identifier ang hinihiling na mapagkukunan. Ang bersyon ng HTTP ay ipinahiwatig ng isang linya tulad nito:

HTTP/<версия>.<подверсия>

Ipinakilala ng RFC 2068 ang HTTP/1.1 protocol.

Tingnan natin ang mga pangunahing pamamaraan ng HTTP protocol.

Ang paraan ng OPTIONS ay humihiling ng impormasyon tungkol sa mga opsyon sa koneksyon (hal., mga pamamaraan, mga uri ng dokumento, mga pag-encode) na sinusuportahan ng server para sa hiniling na mapagkukunan. Ang pamamaraang ito ay nagbibigay-daan sa isang kliyente na tukuyin ang mga opsyon at/o mga kinakailangan na nauugnay sa isang mapagkukunan o mga kakayahan ng server nang hindi nagsasagawa ng anumang aksyon sa mapagkukunan o nagiging sanhi upang ma-load ito.

Kung ang tugon ng server ay hindi isang mensahe ng error, kung gayon ang mga header ng object ay naglalaman ng impormasyon na maaaring ituring na mga opsyon sa koneksyon. Halimbawa, ang Allow header ay naglilista ng lahat ng mga pamamaraan na sinusuportahan ng server para sa isang ibinigay na mapagkukunan.

Kung ang hiniling na resource identifier ay isang asterisk (“*”), kung gayon ang kahilingan ng OPTIONS ay nilalayon na tugunan ang server sa kabuuan.

Kung ang hiniling na resource ID ay hindi isang asterisk, ang kahilingan ng OPTIONS ay nalalapat sa mga opsyon na available kapag kumokonekta sa tinukoy na mapagkukunan.

Ang pamamaraang GET ay nagbibigay-daan sa iyo na makakuha ng anumang impormasyong nauugnay sa hiniling na mapagkukunan. Sa karamihan ng mga kaso, kung ang hiniling na resource ID ay tumuturo sa isang dokumento (hal., HTML na dokumento, tekstong dokumento, graphic, video), pagkatapos ay ibabalik ng server ang mga nilalaman ng dokumentong iyon (nilalaman ng file). Kung ang hiniling na mapagkukunan ay isang application (program) na bumubuo ng ilang data sa panahon ng operasyon nito, ibinabalik ang data na ito sa katawan ng mensahe ng tugon, at hindi isang binary na imahe ng executable na file. Ito ay ginagamit, halimbawa, kapag gumagawa ng mga CGI application.

Ang isang variation ng paraan ng GET ay "conditional GET", kung saan kasama sa mensahe ng kahilingan ang If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match, o If-Range request header .

Ang kondisyong GET na pamamaraan ay humihiling lamang ng paglipat ng isang bagay kung ito ay nakakatugon sa mga kundisyong inilarawan sa mga ibinigay na header. Halimbawa, kung ang If-Modified-Since na header ay naroroon, ang mga nilalaman ng hiniling na mapagkukunan ay kukunin lamang kung ang mga ito ay hindi nagbago mula sa punto ng oras na tinukoy bilang ang halaga ng header na ito. Ang conditional GET method ay nilalayon na bawasan ang hindi kinakailangang network load, dahil iniiwasan nito ang pag-reload ng data na na-save na ng kliyente.

Ang pamamaraan ng HEAD ay kapareho ng GET, maliban na hindi ibinalik ng server ang katawan ng mensahe sa tugon. Ang impormasyong nilalaman sa mga header ng tugon ng HTTP sa isang kahilingan sa HEAD ay kapareho ng impormasyong ibinigay bilang tugon sa isang kahilingan sa GET para sa parehong mapagkukunan.

Maaaring gamitin ang paraang ito upang makakuha ng impormasyon tungkol sa isang bagay na hinihiling nang hindi direktang dumadaan sa katawan ng bagay. Ang HEAD method ay maaaring gamitin upang subukan ang hypertext links.

Ginagamit ang paraan ng POST para sa isang kahilingan kung saan tinatanggap ng naka-address na server ang data na kasama sa katawan ng mensahe ng kahilingan (object) at ipinapadala ito sa application na tinukoy bilang hiniling na mapagkukunan para sa pagproseso. Ang POST ay idinisenyo upang ipatupad ang mga sumusunod na function sa pangkalahatang paraan:

anotasyon ng mga kasalukuyang mapagkukunan;

pag-post ng mensahe sa isang bulletin board system (BBS), newsgroup, mailing list o katulad na grupo ng mga artikulo;

paglilipat ng isang bloke ng data, halimbawa ang resulta ng isang input sa isang form, sa isang proseso ng pagproseso;

pagpapatupad ng mga query sa mga database;

Sa katunayan, ang pagpapaandar na isinagawa ng pamamaraang POST ay tinutukoy ng application na itinuro ng hiniling na resource ID. Kasama ang GET method, ang POST method ay ginagamit kapag gumagawa ng CGI applications.

Ang browser ay maaaring mag-isyu ng mga kahilingan gamit ang POST method kapag nagsusumite ng mga form. Upang gawin ito, ang elemento ng FORM ng HTML na dokumento na naglalaman ng form ay dapat na may katangiang pamamaraan na may value na POST.

Ang isang application na pinasimulan ng POST ay maaaring magsagawa ng isang aksyon sa server at hindi magbalik ng anumang nilalaman bilang isang resulta. Depende sa kung ang tugon ay may kasamang katawan ng mensahe na naglalarawan sa resulta o hindi, ang status code sa tugon ay maaaring 200 (OK) o 204 (Walang Nilalaman).

Ang pagkakaiba sa pagitan ng mga pamamaraan ng POST at PUT ay ang magkaibang halaga ng ID ng hiniling na mapagkukunan. Tinutukoy ng URI sa kahilingan ng POST ang mapagkukunan na nagpoproseso ng bagay na kasama sa katawan ng mensahe. Ang mapagkukunang ito ay maaaring ang application na tumatanggap ng data. Sa kabaligtaran, kinikilala ng URI sa isang kahilingan sa PUT ang entity na kasama sa kahilingan bilang katawan ng mensahe, ibig sabihin, itinatalaga ng user agent ang ibinigay na URI sa kasamang mapagkukunan.

Ang paraan ng DELETE ay humihiling sa server na tanggalin ang isang mapagkukunan na mayroong hiniling na ID. Ang isang kahilingan na may ganitong paraan ay maaaring tanggihan ng server kung ang user ay walang karapatan na tanggalin ang hiniling na mapagkukunan.

Ang paraan ng TRACE ay ginagamit upang ibalik ang ipinadalang kahilingan sa antas ng HTTP protocol.

Ang tatanggap ng kahilingan (ang Web server) ay nagpapadala ng natanggap na mensahe pabalik sa kliyente bilang katawan ng isang tugon na mensahe na may 200 (OK) na status code. Ang kahilingan sa TRACE ay hindi dapat maglaman ng katawan ng mensahe.

Binibigyang-daan ng TRACE ang kliyente na makita kung ano ang natatanggap ng server sa kabilang dulo at gamitin ang data na ito para sa pagsubok o diagnostics.

Kung matagumpay ang kahilingan, naglalaman ang tugon ng buong mensahe ng kahilingan sa katawan ng mensahe ng tugon, at ang header ng object na Uri ng Nilalaman ay "mensahe/http".

Ang detalyadong impormasyon tungkol sa mga pamamaraan ng protocol ng HTTP/1.1 ay matatagpuan sa RFC 2068.

Pagkatapos matanggap at bigyang-kahulugan ang mensahe ng kahilingan, tumugon ang server gamit ang isang mensahe ng tugon ng HTTP.

<Версия HTTP> <Код состояния> <Поясняющая фраза>

Ang unang linya ng tugon ay ang Status-Line.

Binubuo ito ng bersyon ng protocol, isang numeric na code ng katayuan, isang paliwanag na parirala, na pinaghihiwalay ng mga puwang, at sumusunod na mga end-of-line na character:

Ang bersyon ng protocol ay may parehong kahulugan tulad ng sa kahilingan.

Ang elemento ng Status-Code ay isang integer na tatlong-digit (tatlong-digit) na code para sa resulta ng pag-unawa at pagbibigay-kasiyahan sa kahilingan. Ang Reason-Phrase ay isang maikling paglalarawan ng teksto ng status code. Ang status code ay nilayon na maproseso ng software, at ang paliwanag na parirala ay inilaan para sa mga user.

Tinutukoy ng unang digit ng status code ang klase ng tugon. Ang huling dalawang digit ay walang partikular na papel sa pag-uuri.

Mayroong 5 kahulugan para sa unang digit:

4xx: Mga error code ng kliyente - ang kahilingan ay may syntax error o hindi makumpleto.

5xx: Mga Code ng Error sa Server - Hindi nakumpleto ng server ang isang wastong kahilingan.

Ang mga paliwanag na parirala para sa bawat code ng katayuan ay nakalista sa RFC 2068 at inirerekomenda, ngunit maaaring palitan ng mga katumbas na walang mga paghihigpit sa protocol.

Halimbawa, sa mga naka-localize na bersyon ng mga HTTP server sa wikang Ruso, ang mga pariralang ito ay pinapalitan ng mga Ruso.

Sa mesa 2 ay nagpapakita ng HTTP server response codes.

Talahanayan 2

Mga code ng tugon ng HTTP server

Pariralang nagpapaliwanag ayon sa

1xx: Mga code ng impormasyon

Magpatuloy

2xx: Mga matagumpay na code

Walang nilalaman

I-reset ang Mga Nilalaman

Bahagyang Nilalaman

Bahagyang nilalaman

3xx: Mga code sa pag-redirect

Pansamantalang Inilipat

Pansamantalang inilipat

Hindi binago

4xx: Mga error code ng kliyente

Masamang kahilingan

Hindi awtorisado

Hindi nahanap

Hindi Pinahihintulutan ang Paraan

Hindi pinapayagan ang pamamaraan

Humiling ng Timeout

Nag-time out ang kahilingan

Salungatan

Kinakailangan ang Haba

Kinakailangan ang haba

Humiling ng Entity Masyadong Malaki

Talahanayan 2

Masyadong malaki ang object ng kahilingan

Dulo ng mesa. 2

Katumbas na paliwanag na parirala sa Russian

5xx: Mga error code ng server

Panloob na Server Error

Panloob na Server Error

Hindi Naipatupad

Hindi ipinatupad

Hindi Available ang Serbisyo

Hindi available ang serbisyo

Hindi Sinusuportahan ang Bersyon ng HTTP

Hindi sinusuportahang bersyon ng HTTP

Ang detalyadong impormasyon tungkol sa mga response code at mga header na kasama ng mga tugon na ito ay makikita sa RFC 2068.