Hlavní navigace

HTTP/3 nebude postavené na TCP, základem bude QUIC používající UDP

14. 11. 2018
Doba čtení: 3 minuty

Sdílet

Připravovaný protokol HTTP/3 přinese významnou změnu pohledu na komunikační protokol, na kterém stojí web. Využije zkušeností s experimentálním protokolem QUIC postaveným nad UDP, který vyvinul a používá Google.

Současné verze HTTP (1.0, 1.1 a 2.0) používají transportní protokol TCP, který je součástí protokolu rodiny IP. Zaručuje spolehlivý komunikační kanál, ve kterém pakety doputují do cíle bez chyb a ve správném pořadí. Pokud dojde k problémům během přenosu, je protokol schopen chyby detekovat a sám zajistit jejich nápravu. To se týká ztracených paketů, chybně přenesených dat či špatného pořadí doručení paketů. Z hlediska aplikace jsou tedy data vždy doručena správně.

Tento univerzální protokol ale nemusí vyhovovat všem scénářům použití a pro moderní web je například až příliš robustní. Při navazování každého spojení je potřeba si vyměnit mnoho paketů, což se ještě stupňuje při nasazení HTTPS, které je dnes už na webu naprosto běžné. Proto se vývojáři Google už před časem rozhodli vytvořit úplně nový protokol šitý na míru rychlému webovému provozu.

QUIC na to jde jinak

Google se už v roce 2012 rozhodl vyvinout vlastní transportní protokol, který pak byl jako experiment představen o rok později. Jmenuje se QUIC: Quick UDP Internet Connections. Opouští těžkopádný TCP a místo toho staví nad UDP. To je protokol s úplně opačným přístupem: nezaručuje prakticky nic – pořadí paketů ani jejich samotné doručení. Na druhou stranu je velmi jednoduchý a všechno nechává na aplikační vrstvě, která se má postarat o spolehlivost sama.

QUIC tedy staví na velmi tenkém základě, na kterém je schopen postavit vlastní aplikační protokol s podobnými vlastnostmi, jaké má TCP, ale bez „vedlejších účinků“ v podobě obrovské komunikační zátěže. Konkrétní příklad: když se klient znovu připojuje ke stejnému serveru, může hned v prvním paketu poslat všechna kryptograficky důležitá data a server okamžitě naváže na předchozí komunikaci s využitím dříve dohodnutých klíčů. Není potřeba si znovu několikrát podávat ruce.

Internet Engineering Task Force (IETF), skupina vytvářející internetové protokoly, připravuje standardizovanou variantu protokolu QUIC, který se liší od toho, co si navrhl a používá Google. Ten podal žádost o standardizaci už v roce 2015, ale už od června 2016 se pracuje na přepsání HTTP pro provoz nad protokolem QUIC.

IETF chce vytvořit novou verzi HTTP, která bude používat protokol QUIC, tedy to, co bylo dříve označováno jako HTTP-over-QUIC nebo HTTP/QUIC. Nejedná se ovšem o pouhé zabalení HTTP/2 do QUIC, ale o úplně novou verzi HTTP vytvořenou pro použití s QUIC. Podpora HTTP-over-QUIC je už součástí Chrome od verze 29 a Opera jej uměla od verze 16.

HTTP/3 je na cestě

Je to už podruhé, co Google do této oblasti významně přispěl. Jeho experimentální protokol SPDY byl standardizován jako HTTP/2 a rychle se rozšířil. Nově připravovaný protokol HTTP-over-QUIC přepisuje standard HTTP tak, aby používal pro přenos zmíněný QUIC. Nový protokol by měl nabídnout kombinaci vlastností HTTP/2, TCP, UDP, TLS a dalších.

Google se snaží na svých službách nasadit QUIC jako náhradu za TCP i UDP a považuje ho za výhodnější protokol pro přenos binárních dat. Ne nadarmo jej už několik let používá například na YouTube. Současný návrh protokolu přímo počítá se zabudovaným zabezpečením a integruje velmi čerstvý standard TLS 1.3.

root_podpora

Mark Nottingham, předseda pracovních skupin HTTP a QUIC při IETF, navrhl protokol přejmenovat na HTTP/3 a návrh je přijímán velmi pozitivně. Příští verze HTTP tak bude mít jako základ QUIC. Můžeme se těšit na to, že HTTP/3 bude používat moderní síťový protokol.

Standardizace je v tomto případě naprosto klíčová, protože podle statistik W3Techs je protokol HTTP/2 nasazen už na 31,2 % webů, kdežto QUIC potkáte jen v 1,2 %.

Zdroje

Byl pro vás článek přínosný?

Autor článku

Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. Studoval počítače a média, takže je rozpolcen mezi dva obory. Snaží se dělat obojí, jak nejlépe umí.