När HTTP/2 lanserades 2015 som en officiell IETF-standard innebar det en stor förbättring jämfört med det tidigare protokollet HTTP/1.1 som använts ända sedan 1990-talet. Hos Seravo aktiverade vi HTTP/2 för alla våra kunder år 2016 och följer med intresse vad som händer kring nästa stora steg i utvecklingen av HTTP, den kommande standarden HTTP/3.
HTTP betyder Hypertext Transfer Protocol (protokoll för överföring av hypertext) och utformades ursprungligen för överföring av HTML-sidor från server till webbläsare. Under de senaste 30 åren har användningen av HTTP expanderat till att användas för nästan alla typer av överföringar på internet, inte bara webbtrafik, utan även API:er, enheter i sakernas internet (IoT), filöverföringar m.m. Alla förbättringar av HTTP-protokollet påverkar i princip hela internet.
HTTP/2 var för webbläsare, HTTP/3 är för växlar/routers och för brandväggar/firewalls
HTTP/2 införde en rad optimeringar i sättet hur webbläsare laddar webbsidor, och kom att till stor del göra många tidigare tekniska lösningar, såsom filsammanslagning och minifering onödiga. I HTTP/3 handlar den huvudsakliga optimeringen om en övergång i transportskiktet från TCP till det enklare UDP-protokollet och att bygga in TCP-protokollets funktioner på HTTP-nivån, såsom paketsortering och omsändning av förlorade datapaket.
Effekterna av detta blir ett snabbare HTTP för webbläsare och all annan programvara som använder HTTP. Men till skillnad från HTTP/2 innehåller den kommande standarden HTTP/3 färre ”nya funktioner” i webbläsaren för webbutvecklare att använda. Fördelarna i HTTP/3 märks mer på transportskiktets nivå och är mycket omfattande för nätverksroutrar och växlar.
Det innebär samtidigt den största tekniska utmaningen. Utvecklarna av HTTP/3 behöver ta hänsyn till uppgraderingsvägen från HTTP/2 till HTTP/3 för hur alla nätverksroutrar, brandväggar och andra enheter på internet kommer att uppträda. För det första är det inte troligt att alla nätverksägare kommer att uppdatera sin hårdvara inom den närmaste tiden. Det innebär att bakåtkompatibilitet i hög grad måste implementeras ensidigt från HTTP/3. Dessutom finns det enormt många olika optimeringar inbyggda i routrar och brandväggar, vilka alla gör olika antaganden om vad som är normal HTTP-trafik (blockering eller filtrering av ovanlig HTTP-trafik) så HTTP/3 behöver använda många speciallösningar för att kunna lyckas i verkliga livet.
Detta påverkar också kraftigt operativsystemen eftersom deras nätverksstackar hittills har varit kraftigt optimerade för TCP och HTTP. När nu användningen av UDP kommer att öka behöver programkoden för UDP i operativsystemens kärnor ses över och optimeras för att UDP ska bli snabbare än i TCP i realiteten.
Framgångarna med HTTP/2 berodde delvis på användningen av kryptering. Alla routrar och brandväggar ute på nätet ignorerade redan HTTPS-trafik (eftersom de inte kom åt att analysera trafikens innehåll) och det förekom inte så många specialoptimeringar för filtrering och dirigering av HTTPS, också på grund av krypteringen. Därmed var det möjligt att introducera alla nyheter i HTTP/2 utan att några ändringar krävdes i hårdvara och programvara, eftersom allt det nya låg inkapslade inuti krypterad nyttlolast. Detta leder även helt naturligt till att praktiskt taget all HTTP-trafik kommer att vara krypterad i framtiden, eftersom det är det enda sättet HTTP/2 faktiskt kan användas på. Kryptering kommer att spela en central roll även för HTTP/3. Faktum är att HTTP/3 kommer att ha TLS 1.3 inbäddat i protokollet.
Är det tillräckligt QUIC?
HTTP/3 är delvis baserat på QUIC, ett protokoll för transportskiktet som ursprungligen utvecklades av Google där kapacitetsreglering på användarnivån används över UDP (User Datagram Protocol). Det är grundidén, som fortfarande stämmer. Men i HTTP/3 är implementationen av QUIC något helt annat än det ursprungliga QUIC-protokollet från Google. HTTP/3 är inte bara QUIC och faktiskt var det första arbetsnamnet på HTTP/3 ”HTTP-over-QUIC”.
Genom användningen av UDP och QUIC kommer HTTP/3 att bli snabbare, tack vare:
- Snabbare handskakning
- Tidigare ankomst av användbara data (man behöver inte längre vänta på att TCP-sessionen ska få upp hastigheten)
- Oberoende dataströmmar (mer data kan skickas parallellt utan att behöva vänta på föregående överföringar ska avslutas)
Standarden har för närvarande statusen ”fungerande utkast”. En av medlemmarna i IETF-arbetsgruppen, Daniel Stenberg (som skapade curl), har kommenterat att den slutliga versionen kommer att bli klar till sommaren år 2020.
Än så länge är mycket få jämförande mätningar tillgängliga. Faktum är att det ännu inte finns något officiellt stöd för HTTP/3 i någon av de större HTTP-servrarna, såsom Apache och Nginx.
I början av år 2020 saknar fortfarande alla större webbläsare stöd för HTTP/3 i sina standardversioner.
Ovanstående tabell visar att webbutvecklare ännu ett tag inte kommer att kunna dra nytta av det nya protokollet. På grund av bristande optimering av UDP i olika operativsystem kommer vi troligen att behöva vänta på nya versioner av Linux-kärnan innan fördelarna med HTTP/3 kan användas i realiteten.
Räkna med HTTP/3 under andra hälften av 2020
Men eftersom optimeringen sker på nätverksnivån är den goda nyheten för webbutvecklare att ingen kod behöver ändras på några webbplatser. Se bara till att ditt webbhotell följer med i utvecklingen och uppgraderar till HTTP/3 när tekniken har mognat.
Vi på Seravo introducerade HTTP/2 år 2016, och som kund hos Seravo kan du räkna med att vi kommer att göra HTTP/3 tillgängligt när det blir möjligt, så att du och dina webbplatsbesökare kan dra nytta av det, utan att du själv behöver göra något!