Sissejuhatus
HTTP / 2 on saidi viimane versioon Hüperteksti edastusprotokoll või HTTP [01], mida brauserid kasutavad veebiserveritega suhtlemiseks. Tuletatud vanemast SPDY-st [02] Protokollina on HTTP / 2 HTTP esimene uus versioon pärast HTTP / 1.1 standardimist RFC 2068-s 1997. aastal.
Selle töötas välja Interneti-tehnilise töörühma (IETF) HTTP töörühm httpbis (kus “bis” tähendab “kaks korda”) ja avaldatud kui RFC 7540 [03] mai 2015.
HTTP / 2 vastuvõtmine
Pärast ametlikku avaldamist on töötavad veebisaidid üha enam kasutusele võtnud HTTP / 2. Veebiküsitluste teenus W3Techs [04] märgib, et 2017. aasta septembrist 2018. aasta septembrini tõusis HTTP / 2 tugi 16% -lt 30% -ni kõigist jälgitavatest veebisaitidest.
Lisaks pakuvad peamised brauserid (nt Chrome, Firefox, Edge jne) täielikku tuge HTTP / 2 jaoks [05]. (Mõned arendasid isegi eksperimentaalseid rakendusi, enne kui HTTP / 2 standardiks aktsepteeriti.)
See laialt levinud kasutuselevõtt tähendab, et HTTP / 2-l on potentsiaal saada veebi de facto kommunikatsiooniprotokolliks.
Motivatsioon HTTP / 2 taga
Httpbisharta [06] mainib HTTP / 1.1 mitut komponenti, mida saaks parandada HTTP / 2 motivatsioonina. Grupi esmane eesmärk oli siiski vähendada lõpptarbija tajutavat latentsust.
Selleks httpbis kaaluti ribalaiuse ületamise minimeerimist päise tihendamise ja agressiivsete eelhankimistehnikate (nt serveri tõuke) abil, püüdes samal ajal süstemaatiliselt lahendada teadaolevaid jõudluse probleeme, nagu näiteks ühenduse ummikud ja HoL-i blokeerimise probleem [07].
Veelgi enam, HTTP / 2 pidi olema ühilduv tagurpidi, see tähendab, et see pidi kasutama samu meetodi verbe, olekukoode, URI-sid ja (enamiku) päisevälju, mis leiti HTTP / 1.1-st. HTTP / 2 tuli kavandada ka tavaliste HTTP-kasutamise juhtumite, näiteks töölaua- ja mobiilse veebibrauseri, programmeerimisliideste, puhverserverite ja tulemüüride toetamiseks.
Selle ühilduvuse säilitamiseks töötas töörühm välja protokollide läbirääkimiste mehhanismi, mis võimaldaks klientidel ja serveritel valida HTTP / 1.1, HTTP / 2 või isegi mitte-HTTP-protokollide hulgast.
Mis on uut HTTP / 2-s?
HTTP / 2 kasutab endiselt samu URI skeeme ja pordi numbreid, mida kasutati HTTP / 1.1 (st. Porti 80 jaoks) http URI-d ja port 443 jaoks https URI-d), kuid paljud asjad tehakse kapoti all erinevalt.
Kõige põhimõttelisem muudatus on raamid kui HTTP / 2 põhiandmeüksus.
Traditsiooniliselt kasutab HTTP / 1.1 paketid võrguandmete esitamiseks. Klient konstrueerib päringupaketi koos meetodi verbiga (nt GET or POST), lisades ühenduse kirjeldavate päiste loendi ja keha, mis sisaldab rakenduse andmeid.
Päringupaketi saamisel vastab HTTP / 1.1-server sarnase vastuspaketiga, mis sisaldab nõutud teavet. Seetõttu nõuab iga päringu ja vastuse tsükkel uut ühendust.
Seevastu HTTP / 2 kliendid loovad serveriga ühe võrguühenduse, mida nad kasutavad kõigi järgnevate võrgusuhtluste jaoks. Päised, kasutajaandmed, veateated ja kogu selline teave pakitakse enne võrgu kaudu edastamist eraldi binaarsesse andmestruktuuri, mida nimetatakse kaadriteks.
See näib olevat väike muudatus, kuid sellel on märkimisväärne mõju.
Päise tihendamine
Raamide kasutamise suur eelis on see, et HTTP / 2 päised pakitakse a-kausta HEADER raam, mida saab tihendada tavaliste pakkimismeetodite abil. Päised tuleb enne mis tahes andmete edastamist üle kanda, nii et päiste tihendamine võib vähendada ribalaiuse üldkulusid, mille on määranud HTTP / 2.
Päise tihendamine koos järgneva HTTP / 2 funktsioone parandava jõudlusega võib olla eriti kasulik mobiili- või asjade Interneti (IOT) rakendustes, kus on vaja minimaalset võrgukasutust.
Vood ja multipleksimine
Semantiliselt asjakohaste kaadrite iseseisvat jada nimetatakse a-ks oja. Voodid omistavad neid loonud lõpp-punkt (st klient või server) ainulaadse identifikaatori, et teised lõpp-punktid saaksid neid eristada.
Lõpp-punktid saavad sama HTTP / 2-ühenduse kaudu mitme voo kaadreid põimida, võimaldades ühel võrguühendusel toetada korraga mitut samaaegselt avatud voogu. Seda protsessi nimetatakse multipleksimine [08].
Sama ühenduse taaskasutamine leevendab selliseid probleeme nagu ühenduse ummikud ja eelnevalt mainitud HoL-i probleem ning pakub paremat jõudlust ja sujuvamat kasutajakogemust kui eelmised HTTP-versioonid.
Voo sõltuvus ja prioriteetide seadmine
Mitme samaaegse voo haldamine tähendab, et mõnda voogu töödeldakse enne teisi. HTTP / 2 võimaldab arendajal (või administraatoril) seda käitumist viimistletud funktsiooniga viimistleda ojade sõltuvus.
Voog võib sõltuda teise voo täielikust ülekandmisest enne selle käitlemist. Näiteks saidil, kuhu tuleks enne sarnase sisu soovituste laadimist veebilehe põhisisu laadida, lubab HTTP / 2 luua soovituse voo sõltuvalt peamisest sisuvoogust.
Samuti toetab HTTP / 2 oja prioriteetide seadmine. See tähendab, et igale voogule võib määrata prioriteedi, et soovitada, kui kiiresti peaksid lõpp-punktid eraldama ressursse voo kaadrite käsitsemiseks.
Prioriteetide seadmine ja voogesõltuvus aitavad arendajatel ja veebisaitide omanikel optimeerida oma saidi võrgukasutust, mis võib nende saidi kasutuskogemust märkimisväärselt parandada.
Server Push
Lõpuks saab HTTP / 2 parandada veebisaidi toimivust, pakkudes tõukefunktsiooni. HTTP / 2 veebiserver saab andmetega vastata rohkemate päringute jaoks, kui klient algselt soovis. See võimaldab serveril edastada andmeid, mida veebibrauser peab lehe renderdama, ootamata, kuni brauser esimest vastust uurib, ja seega ilma täiendava taotlustsükli lisakuludeta.
Serveri tõukefunktsioon annab arendajatele täieliku kontrolli taotluste arvu üle, mida brauseril on vaja oma veebisaidi renderdamiseks. Õige kasutamise korral võib see funktsioon vähendada võrgu üldkulusid.
Loomulikult võib tõukefunktsiooni väärkasutamine raisata ka rohkem ribalaiust, kui see tegelikult vajalik on. Sel põhjusel võimaldab HTTP / 2 kliendil ühenduse esmakordsel läbirääkimisel taotleda serveri tõrke keelamist.
HTTP / 2 turvalisus
Kui olete selle hetkeni läbi lugenud, peaks olema selge, et HTTP / 2 arendajad pingutavad tõesti jõudluse parandamise nimel. Siiski tuleb märkida, et HTTP / 2 võib aidata ka brauseri kasutajate turvalisust üldiselt parandada.
Täpsemalt on HTTP / 2 määratletud nii HTTP URI (st ilma krüptimiseta) kui ka HTTPS URI (üle TLS krüptitud kanalid). Ehkki standard ise ei nõua krüptimise kasutamist, on kõik peamised brauseri rakendused (st Firefox [09], Chrome, Safari, Opera, IE, Edge) on otsustanud ainult toetage HTTP / 2 üle TLS.
Tegelikult eristavad brauserid krüptitud selge teksti HTTP / 2 ja HTTP / 2 vahel TLS kahe erineva protokollina. Krüptitud HTTP / 2 kutsutakse h2 ja selge tekst h2c. Selle kirjutise seisuga ei toeta ükski suurem brauser h2c , Mis tähendab, et TLS krüptimine on veebisaidil kohustuslik, et kasutada ära HTTP / 2 muid eeliseid. Seega, kui HTTP / 2-st saab veebivõrgu vaikeprotokoll, saavad pärandsaitide omanikud, kes pole veel SSL-i /TLS, on see kindlalt motiveeritud seda lõpuks tegema.
Järeldus
Laialdane HTTP / 2 kasutuselevõtt loob uue ja täiustatud veebi. See on kiirem, vajab vähem ribalaiust ja aitab veebisaitidel turvalisena püsida. Selle tavapärane kasutuselevõtt muudab kindlasti veebikasutajate kogemuse sujuvamaks ja turvalisemaks.
Hankige tunnistus juba täna ja liituge meiega tulevikus.