IETF (Internet Engineering Task Force), která je odpovědná za vývoj internetových protokolů a architektury, dokončila vytvoření RFC pro protokol HTTP/3.0 a zveřejnila související specifikace pod identifikátory RFC 9114 (protokol) a RFC 9204 ( Technologie komprese hlaviček QPACK pro HTTP/3) . Specifikace HTTP/3.0 získala status „Proposed Standard“, načež se začnou pracovat na tom, aby RFC získal status návrhu standardu (Draft Standard), což vlastně znamená kompletní stabilizaci protokolu a zohlednění všech vznesené komentáře. Zároveň byly zveřejněny aktualizované verze specifikací pro protokoly HTTP/1.1 (RFC 9112) a HTTP/2.0 (RFC 9113) a dokumenty definující sémantiku HTTP požadavků (RFC 9110) a hlavičky řízení mezipaměti HTTP (RFC 9111).
Protokol HTTP/3 definuje použití protokolu QUIC (Quick UDP Internet Connections) jako přenos pro HTTP/2. QUIC je rozšíření protokolu UDP, které podporuje multiplexování více připojení a poskytuje metody šifrování ekvivalentní TLS/SSL. Protokol byl vytvořen v roce 2013 společností Google jako alternativa ke kombinaci TCP+TLS pro web, řeší problémy s dlouhým nastavováním připojení a dobami vyjednávání v TCP a odstraňuje zpoždění při ztrátě paketů během přenosu dat.
V současné době je podpora QUIC a HTTP/3.0 již implementována ve všech oblíbených webových prohlížečích (v Chrome, Firefoxu a Edge je podpora HTTP/3 ve výchozím nastavení povolena a v Safari vyžaduje nastavení „Pokročilé > Experimentální funkce > HTTP/3“ být povolen). Na straně serveru jsou k dispozici implementace HTTP/3 pro nginx (v samostatné větvi a ve formě samostatného modulu), Caddy, IIS a LiteSpeed. Podporu HTTP/3 poskytuje také síť pro doručování obsahu Cloudflare.
Klíčové vlastnosti QUIC:
- Vysoká bezpečnost podobná TLS (v podstatě QUIC poskytuje možnost používat TLS přes UDP);
- Řízení integrity toku, zabraňující ztrátě paketů;
- Schopnost okamžitě navázat spojení (0-RTT, v přibližně 75 % případů lze data přenést ihned po odeslání paketu nastavení spojení) a poskytnout minimální prodlevy mezi odesláním požadavku a přijetím odpovědi (RTT, Round Trip Time);
- Použití jiného sekvenčního čísla při opakovaném přenosu paketu, což zabrání nejednoznačnosti při identifikaci přijatých paketů a zbaví se časových limitů;
- Ztráta paketu ovlivní pouze doručení s ním spojeného proudu a nezastaví doručování dat v paralelních proudech přenášených prostřednictvím aktuálního připojení;
- Funkce opravy chyb, které minimalizují zpoždění kvůli opakovanému přenosu ztracených paketů. Použití speciálních kódů pro opravu chyb na úrovni paketů ke snížení situací vyžadujících opakovaný přenos ztracených paketových dat.
- Hranice kryptografických bloků jsou zarovnány s hranicemi paketů QUIC, což snižuje dopad ztrát paketů na dekódování obsahu následujících paketů;
- Žádné problémy s blokováním fronty TCP;
- Podpora pro identifikátor připojení, který zkracuje dobu potřebnou k vytvoření opětovného připojení pro mobilní klienty;
- Možnost připojení pokročilých mechanismů řízení přetížení připojení;
- Využívá techniky předpovědi propustnosti v jednotlivých směrech, aby zajistil, že pakety budou odesílány optimální rychlostí, čímž se zabrání jejich zahlcení a ztrátě paketů;
- Výrazné zvýšení výkonu a propustnosti ve srovnání s TCP. U video služeb, jako je YouTube, bylo prokázáno, že QUIC snižuje operace opětovného vyrovnávací paměti při sledování videí o 30 %.
Mezi změnami ve specifikaci HTTP/1.1 lze zaznamenat zákaz izolovaného použití znaku pro návrat vozíku (CR) mimo tělo s obsahem, tzn. V prvcích protokolu lze znak CR použít pouze ve spojení se znakem odřádkování (CRLF). Algoritmus rozvržení chunked request byl vylepšen, aby se zjednodušilo oddělení připojených polí a sekcí se záhlavími. Přidána doporučení pro zpracování nejednoznačného obsahu pro blokování útoků „HTTP Request Smuggling“, což nám umožňuje vklínit se do obsahu požadavků jiných uživatelů v toku mezi frontendem a backendem.
Aktualizace specifikace HTTP/2.0 explicitně definuje podporu pro TLS 1.3. Zastaralé schéma priority a související pole záhlaví. Nepoužívaný mechanismus pro aktualizaci spojení s HTTP/1.1 byl prohlášen za zastaralý. Snížené požadavky na kontrolu názvů polí a hodnot. K použití jsou navrženy některé dříve vyhrazené typy a parametry rámců. Zakázaná pole záhlaví související s připojením jsou přesněji definována.
Zdroj: opennet.ru