Hlavní navigace

Protokol HTTP/2 byl dokončen. Prohlížeče už ho podporují

Roman Bořánek 27. 2. 2015

IPv6 a HTML5 už dobývají web, ale třetí do party zatím chyběl. Až nyní, po patnácti letech od vydání poslední verze standardu, přichází HTTP/2. Díky multiplexování je rychlejší, díky kompresi hlaviček úspornější a díky přístupu prohlížečů dopomůže k bezpečnějšímu webu. Ty totiž budou vyžadovat šifrování.

O protokolu HTTP/2 se zatím moc nemluvilo, a to zejména ze dvou důvodů. Za prvé není tak revoluční jako IPv6 nebo HTML5 a za druhé se pod tímto názvem nevyvíjí tak dlouho. Nedostatky protokolu HTTP si už v roce 2009 začal uvědomovat Google, jehož služby na něm samozřejmě velmi závisí. Odstartoval tak projekt s HTTP kompatibilního protokolu SPDY. Ten postupně nasadil ve svých službách a jeho podporu integrovaly i všechny velké prohlížeče.

Právě na SPDY bylo HTTP/2 za asistence Googlu z velké části postaveno. Tyto dva projekty si tedy v žádném případě nekonkurují, spíše můžeme SPDY označit za otce HTTP/2. Koneckonců Google už oznámil, že podporu SPDY ukončí právě ve prospěch HTTP/2. V polovině února byl schválen finální návrh standardu a nasazení nového protokolu už tedy nic nebrání. Současně organizace Internet Engineering Task Force schválila také návrh standardu HPACK, který definuje formát pro kompresi HTTP hlaviček.

Multiplexováním vstříc rychlosti

Změnám v samotném protokolu se budeme věnovat v samostatném odborném článku, ale i zde zmiňme to nejdůležitější. Zásadní změnou je podpora multiplexování. To znamená, že souběžně může být vyřizováno více požadavků, ne pouze jedna jako v HTTP/1. Pokud se vyskytne problém s vyřízením jednoho požadavku, prohlížeč tak nezůstane viset, ale bude mezi tím pracovat s dalšími. Právě multiplexování by mělo nezanedbatelně zrychlit načítání stránek. Zrychlení se však bude lišit v jednotlivých případech a nelze ho rozumně změřit. Další velkou změnou je fakt, že HTTP/2 bude přenášet data v binárním formátu. Od toho se očekává zejména nižší náchylnost k chybám.

Jak už bylo zmíněno, v HTTP/2 se počítá s kompresí hlaviček požadavků. Důvodem je zkrátka zrychlení a a snížení množství přenášených dat. Původně měl být pro kompresi použit formát gzip, nicméně při jeho použití se SPDY bylo upozorněno na několik možných bezpečnostních problémů, zejména exploit zvaný CRIME. Proto bylo rozhodnuto o vytvoření nového formátu ušitého na míru pro hlavičky HTTP požadavků. Ten dostal jméno a HPACK a prochází schvalovacím procesem spolu s HTTP/2.

Významnou novinkou je také server push. Push v tomto případě znamená něco trochu jiného, než jsme zvyklí. Nová možnost v podstatě umožňuje serveru na jeden požadavek poslat víc odpovědí. Při načítání stránky se typicky načítá HTML a poté CSS, JavaScript a další. V HTML/1 prohlížeč musel postupně žádat o každou z těchto součástí. Díky server push mu je server může poslat hned po prvním požadavku o HTML, pokud si myslí, že je bude potřebovat. Zjednodušeně řečeno mu bez vyžádání pošle zprávu, ve které stojí: posílám vám odpověď na tu a tu potenciální otázku.

Prohlížeče: bezpodmínečné ano šifrování

Přechod na druhou verzi HTTP bude pro běžné uživatele v podstatě nepostřehnutelný. Řešit ho musí pouze provozovatelé webových serverů či aplikací. Jako první s implementací začínají webové prohlížeče. Firefox podporu HTTP/2 zapnul v právě vydané verzi 36, stabilní Chrome už protokol také podporuje, ale je potřeba ho aktivovat pomocí parametru  --enable-spdy4. Jeho zapnutí v základu je pravděpodobně otázkou několika týdnů. Protokol je ve výchozím stavu povolen rovněž v Internet Exploreru 11, ale zatím pouze ve vývojové verzi Windows 10.

Při tvorbě standardu se vedly dlouhé diskuse o tom, zda má HTTP/2 vyžadovat šifrované spojení (TLS). Nakonec bylo rozhodnuto, že nebude podmínkou. V praxi se ale s HTTP/2 bez šifrování zřejmě setkáme jen sporadicky. Webové prohlížeče, všechny zmíněné v předchozím odstavci, totiž využily svého vlivu a řekly: HTTP/2 jedině přes TLS. Druhá generace HTTP tak nezanedbatelně může dopomoci i k rozvoji šifrovaného spojení. A šifrované spojení přes HTTP/2 není o nic pomalejší než nešifrované přes HTTP/1. Naopak. Ověřit si to můžete sami v testu na stránce HTTP vs HTTPS.

Apache je k HTTP/2 zatím chladný

Aby bylo možné HTTP/2 použít, je samozřejmě nutná podpora také z druhé strany – tedy zejména webových serverů. Vývojáři nejpopulárnějšího webserver Apache se k nasazení HTTP/2 zatím nijak oficiálně nevyjádřili, dá se říct, že razí konzervativnější strategii. Už dlouho je pro Apache k dispozici modul pro podporu SPDY mod_spdy, který vyvinul přímo Google a před několika měsíci ho předal do rukou nadace Apache. Od té doby se ale v podstatě nic neudálo a modul se stále nestal součástí výchozí instalace a ani se prakticky nevyvíjí. Těžko říct, kde je problém, z technického hlediska už by podpora HTTP/2 neměla být nijak obtížná. Tak doufejme, že po finalizaci standardu už se práce na podpoře HTTP/2 rozbíhají na plné obrátky.

U konkurenčního serveru nginx je situace lepší. Modul pro experimentální podporu SPDY obsahuje už skoro dva roky od verze 1.3.15. Ani zde však není aktivní ve výchozím stavu, je třeba ho zkompilovat a poté povolit, více viz dokumentace. Je pravděpodobné, že plné podpory HTTP/2 se v nginxu dočkáme dřív než u Apache. Na podporu HTTP/2 se připravuje také IIS ve Windows. Ve vývojové verzi Windows 10 (technical preview) už je obsažena, ale pro aktivaci je potřeba úprava registrů.

Podpora ze strany webových serverů a prohlížečů je nejdůležitější, ale např. pro tvorbu aplikací komunikujících přes HTTP/2 je potřeba také implementace do různých programovacích jazyků či frameworků. Na GitHubu HTTP/2 naleznete podrobný přehled známých implementací. Zmiňme např. ty pro Perl, Node.js, Ruby, Python, Haskell a další. Obvykle jsou sice označeny jako alfaverze, ale to je dáno spíš tím, že standard HTTP/2 byl finalizován teprve před nedávnem. Jinak jsou ve vývoji už relativně dlouho a dá se očekávat, že brzy budou velmi slušně použitelné.

Odkazy

Našli jste v článku chybu?

28. 2. 2015 19:02

. (neregistrovaný)

Co příspěvek to perla. Doufám, že jen trolíš a takový hňup se nikde volně nepohybuje.

27. 2. 2015 10:15

Ano, to jste přesně popsal důvod, proč je HTTP/2 binární protokol, protože pokud nadefinujete formát, který je binární, tak nenechává prostor pro vlastní kreativitu.

Nejasnost v \r\n vs \n vs ... budete mít v textovém formátu vždy, protože vám budou lidi řvát, že to zrovna jejich oblíbeným telnetem nejde udělat...

Obecně je formát, který není potřeba parsovat kvůli delimiterům (ať už to jsou djb netstrings, Google protobuf nebo cokoli jiného, kde není potřeba hledat ve stringu CRLF) lepší pro …

Podnikatel.cz: Udávání a účtenková loterie, hloupá komedie

Udávání a účtenková loterie, hloupá komedie

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka

Podnikatel.cz: Babiše přesvědčila 89letá podnikatelka?!

Babiše přesvědčila 89letá podnikatelka?!

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Vitalia.cz: Říká amoleta - a myslí palačinka

Říká amoleta - a myslí palačinka

Vitalia.cz: Na pečení je nejlepší medovicový med

Na pečení je nejlepší medovicový med

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Vitalia.cz: Znáte „černý detox“? Ani to nezkoušejte

Znáte „černý detox“? Ani to nezkoušejte

DigiZone.cz: Flix TV má set-top box s HEVC

Flix TV má set-top box s HEVC

Root.cz: Certifikáty zadarmo jsou horší než za peníze?

Certifikáty zadarmo jsou horší než za peníze?

Podnikatel.cz: Babiš: E-shopy z EET možná vyjmeme

Babiš: E-shopy z EET možná vyjmeme

Měšec.cz: Jak levně odeslat balík přímo z domu?

Jak levně odeslat balík přímo z domu?

DigiZone.cz: Rádio Šlágr má licenci pro digi vysílání

Rádio Šlágr má licenci pro digi vysílání

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Vitalia.cz: Dáte si jahody s plísní?

Dáte si jahody s plísní?