Vad är HTTP / 2 och hur påverkar det Internet: s framtid?
Annons
Du kanske inte har hört talas om HTTP / 2 än, men det är den senaste uppdateringen till HTTP. Den nya protokollstandarden introducerar några nya koncept och gör kommunikationen mellan servrar och applikationer snabbare och effektivare.
Vad är HTTP / 2?
HyperText Transfer Protocol Version 2, eller HTTP / 2, är den första stora uppdateringen till HTTP på 15 år.
Den tidigare protokollstandarden, HTTP / 1.1, har använts sedan 1997 och använder en blandning av klumpiga lösningar för att förbättra HTTP: s begränsningar.
Det är baserat på SPDY (“snabb”), ett open source-experiment som startades av Google för att ta itu med några problem och begränsningar i HTTP / 1.1
Internet Engineering Task Force (IETF) specificerar förändringarna som denna i Hypertext Transfer Protocol version 2, utkast 17:
“HTTP / 2 möjliggör en mer effektiv användning av nätverksresurser och en minskad latensuppfattning genom att införa huvudfältkomprimering och tillåta flera samtidiga utbyten på samma anslutning […]
"Det tillåter också prioritering av förfrågningar, låter fler viktiga förfrågningar slutföra snabbare, vilket ytterligare förbättrar prestanda."
"HTTP / 2 möjliggör också effektivare behandling av meddelanden med hjälp av binär meddelanden inramning."
”Denna specifikation är ett alternativ till, men föråldras inte, HTTP / 1.1-syntaxen. HTTP: s befintliga semantik förblir oförändrad. ”
HTTP / 2 är baserad på SPDY
År 2012 har de flesta moderna webbläsare och många populära webbplatser (Google, Twitter, Facebook etc.) redan stöttat SPDY. Eftersom SPDYs popularitet ökade började HTTP Working Group (HTTP-WG) arbeta med att uppdatera HTTP-standarden.
Från denna tidpunkt blev SPDY grunden och experimentgrenen för nya funktioner i HTTP / 2. Vid den tiden undersökte vi hur SPDY kan förbättra surfningen. Vad är SPDY och hur kan det maximera din surfupplevelse? Vad är SPDY och hur kan det maximera din surfupplevelse? Läs mer . Sedan dess har version 2-standarden utformats, godkänts och publicerats.
Många av funktionerna från SPDY införlivades i HTTP / 2, och Google slutade slutligen stödja detta protokoll i början av 2016.
De flesta webbläsare slutade slutligen stödja SPDY, och eftersom det inte finns några alternativ blir HTTP / 2 de facto-standarden.
Även om HTTP / 2-protokollstandarden inte är strikt bakåtkompatibel med HTTP / 1, kan kompatibilitet uppnås via översättning. En enskild HTTP / 1.1-klient kommer inte att förstå en HTTP / 2-server bara och tvärtom, varför den nya protokollversionen är HTTP / 2 och inte HTTP / 1.2.
Som sagt, en viktig del av det arbete som tillhandahålls av HTTP-WG, är att se till att HTTP / 1 och HTTP / 2 kan översättas fram och tillbaka utan att förlora information.
Alla nya mekanismer eller funktioner som införs kommer också att vara versionoberoende och bakåtkompatibla med den befintliga webben.
HTTP / 2 är egentligen inte något som en användare kan implementera, men det finns saker vi kan göra för att påverka vår surfhastighet. Tror du att någon av dessa vanliga myter för att påskynda din internethastighet? 5 myter om att öka internethastigheten och varför de inte fungerar 5 myter om att öka internethastigheten och varför de inte fungerar Internethastighet är en kritisk mätning under 2000-talet. Men det finns mycket felinformation online om hur du gör din anslutning snabbare. Här är fem myter som du inte bör tro. Läs mer
Fördelarna och funktionerna med HTTP / 2
HTTP / 2 kommer med några fantastiska uppdateringar av HTTP-standarden. Några av de viktigare är binär inramning, multiplexering, strömprioritering, flödeskontroll och server push.
Binär inramning
Efter uppdateringen till HTTP2 / delas HTTP-protokollkommunikationen upp i ett utbyte av binärkodade ramar. Dessa ramar är mappade till meddelanden som tillhör en viss ström. Strömmarna multiplexeras sedan (vävas i en mening) i en enda TCP-anslutning.
Det nya binära inramningsskiktet introducerar en del ny terminologi; Strömmar, meddelanden och ramar.
- Strömmar är dubbelriktade flöden av byte som innehåller ett eller flera meddelanden.
- Var och en av dessa strömmar har en unik identifierare och kan bära dubbelriktade meddelanden med valfri prioritetsinformation.
- Ramar är den minsta kommunikationsenheten i HTTP / 2 som innehåller specifika uppsättningar av data (HTTP-rubriker, nyttolaster meddelanden etc.). Rubriken identifierar som minimum strömmen som ramen tillhör.
- Meddelanden är en komplett uppsättning ramar som kartläggs till en logisk begäran eller svarmeddelande.
- Varje meddelande är ett logiskt HTTP-meddelande, som en begäran eller svar, som består av en eller flera ramar.
Detta gör att vi kan använda en enda TCP-anslutning, för vad som tidigare krävde flera.
Multiplexing
HTTP / 1.1 säkerställer att endast ett svar kan levereras i taget per anslutning. Och webbläsaren öppnar ytterligare TCP-anslutningar om klienten vill göra flera parallella förfrågningar.
HTTP / 2 tar bort denna begränsning av HTTP / 1.1 och möjliggör fullständiga förfrågningar och svarsmultiplexering. Detta innebär att klienten och servern kan dela upp ett HTTP-meddelande i oberoende ramar, som sedan sammanflätas och återmonteras i andra änden.
Sammantaget är detta den viktigaste förbättringen av HTTP / 2, eftersom det delvis kommer att eliminera behovet av flera anslutningar. Detta kommer i sin tur att introducera många prestandafördelar över alla webbtekniker.
Det minskade antalet anslutningar innebär färre handskakningar för Transport Layer Security (TLS), bättre återanvändning av sessionen och en övergripande minskning av klient- och serverresursbehov. Detta gör applikationer snabbare, enklare och billigare att distribuera.
Webbplatser med många externa tillgångar (bilder eller skript) ser de största resultatvinsterna från HTTP / 2-multiplexering.
Strömprioritering och beroende
Ytterligare förbättringar av de multiplexerade strömmarna görs med vikt och strömberoende. HTTP / 2 tillåter oss att ge varje ström en vikt (ett värde mellan 1 och 256) och göra det uttryckligen beroende av en annan ström.
Denna beroende och viktkombination leder till att det skapas ett prioriteringsträd, som säger servern hur klienten föredrar att få svar.
Servern kommer att använda informationen i prioriteringsträdet för att kontrollera fördelningen av CPU, minne och andra resurser, liksom allokering av bandbredd för att säkerställa att klienten får optimal leverans av högprioriterade svar.
Flödeskontroll
Problem med flödeskontroll i HTTP / 2 liknar HTTP / 1.1. Men eftersom HTTP / 2-strömmar multiplexeras inom en enda TCP-anslutning, är flödeskontrollen i HTTP / 1.1 inte längre effektiv.
Kort sagt krävs flödeskontroll för att stoppa strömmar som stör varandra för att orsaka blockering. Detta möjliggör multiplexering. HTTP / 2 gör det möjligt att använda olika flödeskontrollalgoritmer utan att kräva protokolländringar.
Ingen algoritm för flödeskontroll anges i HTTP / 2. Istället har en uppsättning byggstenar tillhandahållits för att hjälpa kunder och servrar att tillämpa sin egen flödeskontroll.
Du kan hitta detaljerna för dessa byggstenar i avsnittet "Flow Control" i HTTP / 2-internetutkastet.
Server Push
Din webbläsare kommer normalt att begära och ta emot ett HTML-dokument från en server när du först besöker en sida. Servern måste sedan vänta på att webbläsaren analyserar HTML-dokumentet och skickar en begäran om de inbäddade tillgångarna (CSS, JavaScript, bilder, etc.).
I HTTP / 1.1 kan servern inte skicka dessa tillgångar förrän webbläsaren begär dem, och varje tillgång kräver en separat begäran (dvs. flera handskakningar och anslutningar).
Server push kommer att minska latensen genom att låta servern skicka dessa resurser utan prompt, eftersom den redan vet att klienten kommer att kräva dem. Så i exemplet ovan kommer servern att driva CSS, JavaScript (ett vanligt skriptspråk Vad är JavaScript och hur fungerar det? Vad är JavaScript och hur fungerar det? Vad är Javascript? Det är ett programmeringsspråk som används för att förbättra webbsidor. Det inkluderar dynamisk uppdatering av webbsidor, användargränssnitt och mer. Låt oss dyka in i vad Javascript handlar om. Läs mer på webbsidor) och bilder till webbläsaren för att visa sidan snabbare.
I princip tillåter server push en server att skicka flera svar för en enda klientbegäran.
Men manuellt är det den effekten vi för närvarande får genom att föra in CSS eller JS i våra HTML-dokument - vi driver den inlinade resursen till klienten utan att vänta på att klienten ska begära det.
Detta är ett stort steg bort från den nuvarande HTTP-standarden för strikt en-till-en-arbetsflöde på begäran.
Begränsningarna av HTTP / 2
SPDY hade en något striktare säkerhetspolicy och krävde SSL-kryptering för alla anslutningar. HTTPS / 2 kräver inte kryptering men många tjänster kommer inte att servera HTTP / 2 utan SSL.
Alla stora webbläsare stöder HTTP / 2, men ingen av dem stöder det utan kryptering. CanIUs webbplats har en bra tabellöversikt över det nuvarande webbläsarsupportet för HTTP / 2, som ses ovan.
Bakåtkompatibiliteten och översättningarna mellan HTTP / 1.1 och HTTP / 2 kommer att bromsa sidhastigheten.
Det finns inget verkligt skäl till att kryptering inte borde vara en standard eller obligatorisk installation nu. Om du redan har ett SSL-certifikat på din webbplats kan du förbättra säkerheten på din HTTPS-webbplats genom att aktivera HSTS.
Är HTTP / 2 nästa stora sak?
HTTP / 2 föreslogs som standard i mitten av 2015, och de flesta webbläsare har lagt till stöd för det i slutet av det året. HTTP / 2 påverkar redan hur Internet fungerar och hur applikationer och servrar pratar tillsammans.
Det finns inga krav för att tvinga användningen av HTTP / 2, men hittills har det bara fördelar och inga nackdelar. Det är också en ganska mindre förändring ur ett användarperspektiv, en som människor inte riktigt kommer att märka.
Enligt W3Tech stöder för närvarande 31, 7% av de 10 miljoner webbplatserna för närvarande HTTP / 2. Det snabbaste sättet för de flesta av er att aktivera HTTP / 2 på din webbplats är att använda Cloudflares CDN.
Nästa föreslagna standard (HTTP / 3) finns redan i arbeten och baseras på QUIC, ett annat experimentprojekt av Google. I oktober i år begärde IETFs HTTP-WG och QUIC Working Group officiellt QUIC att bli den nya världsomspännande standarden och byta namn på den HTTP / 3.
Om du är nyfiken har Akamai.com ett snabbt verktyg för att kontrollera om din webbläsare stöder HTTP / 2. Om det inte gör det kan du kanske överväga att byta webbläsare. 5 Google Chrome-alternativ för en bättre webbläsare på skrivbordet eller mobil. Men det har fortfarande problem. Kan dessa alternativa webbläsare vara ett bättre val? Läs mer .
Utforska mer om: Datornätverk, HTTP / 2, SPDY.