Komitét IETF (Internet Engineering Task Force), zabývající se rozvojem protokolů a architektury internetu, dokončil tvorbu RFC pro protokol HTTP/3.0 a zveřejnil s ním spojené 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 „Návrhového standardu“, poté začne práce na udělení RFC statusu návrhu standardu (Draft Standard), což v podstatě znamená plnou stabilizaci protokolu a zohlednění všech vznesených připomínek. Současně byly publikovány aktualizované verze specifikací pro protokoly HTTP/1.1 (RFC 9112) a HTTP/2.0 (RFC 9113), stejně jako dokumenty definující sémantiku HTTP požadavků (RFC 9110) a HTTP hlavičky pro řízení mezipaměti (RFC 9111).
Protokol HTTP/3 definuje použití protokolu QUIC (Quick UDP Internet Connections) jako transportu pro HTTP/2. QUIC představuje nadstavbu nad protokolem UDP, která podporuje multiplexování několika spojení a zajišťuje metody šifrování, ekvivalentní TLS/SSL. Protokol byl vytvořen v roce 2013 společností Google jako alternativa k propojení TCP+TLS pro web, řešící problémy s velkým časem pro nastavení a sjednávání spojení v TCP a odstraňující zpoždění při ztrátě paketů během přenosu dat.

V současnosti je podpora QUIC a HTTP/3.0 již implementována ve všech populárních webových prohlížečích (v Chrome, Firefox a Edge je podpora HTTP/3 aktivována ve výchozím nastavení, zatímco v Safari vyžaduje aktivaci nastavení „Advanced > Experimental Features > HTTP/3“). Na serverové straně jsou implementace HTTP/3 dostupné pro nginx (v samostatné větvi a jako samostatný modul), Caddy, IIS a LiteSpeed. Podporu HTTP/3 také zajišťuje síť pro doručování obsahu Cloudflare.
Hlavní vlastnosti QUIC:
- Vysoká bezpečnost, srovnatelná s TLS (v podstatě QUIC poskytuje možnost použití TLS nad UDP);
- Kontrola integrity toku, která zabraňuje ztrátě paketů;
- Možnost okamžitého navázání připojení (0-RTT, v přibližně 75 % případů lze data odesílat ihned po odeslání balíčku pro navázání připojení) a zajištění minimálních zpoždění mezi odesláním žádosti a příjmem odpovědi (RTT, Round Trip Time);

- Použití při opětovném přenosu paketu jiného pořadového čísla, což umožňuje vyhnout se nejasnostem při určení přijatých paketů a zbavit se časových limitů;
- Ztráta paketu ovlivňuje doručení pouze souvisejícího toku a nezastavuje doručení dat v paralelně přenášených tocích přes aktuální spojení;
- Nástroje pro opravu chyb, které minimalizují zpoždění způsobené opětovným přenosem ztracených paketů. Využití speciálních chybových kódů na úrovni paketů pro snížení situací, které vyžadují opětovný přenos dat ztraceného paketu.
- Hranice kryptografických bloků jsou sladěny s hranicemi paketů QUIC, což snižuje dopad ztráty paketů na dekódování obsahu následujících paketů;
- Žádné problémy s blokováním front TCP;
- Podpora identifikátoru spojení, která snižuje čas potřebný k opětovnému navázání spojení pro mobilní klienty;
- Možnost připojení rozšířených mechanismů řízení přetížení spojení;
- Použití techniky predikce šířky pásma v každém směru pro zajištění optimální intenzity odesílání paketů, což zabraňuje přechodu do stavu přetížení, ve kterém dochází ke ztrátě paketů;
- Výrazný nárůst výkonu a propustnosti ve srovnání s TCP. Pro video služby, jako je YouTube, použití QUIC ukázalo snížení operací opětovného buffrování při sledování videa o 30%.
Změny ve specifikaci HTTP/1.1 zahrnují zákaz samostatného použití znaku návratu karu (CR) mimo tělo s obsahem, tj. v prvcích protokolu může být symbol CR použit pouze spolu se symbolem nového řádku (CRLF). Algoritmus pro zpracování chunked požadavků byl vylepšen pro zjednodušení separace připojených polí a sekce s hlavičkami. Byly přidány doporučení pro zpracování nejednoznačného obsahu, aby se zablokovaly útoky třídy „HTTP Request Smuggling“, které umožňují vnikání do obsahu požadavků jiných uživatelů v toku mezi frontendem a backendem.
Ve specifikaci aktualizace HTTP/2.0 je jasně stanovena podpora TLS 1.3. Byla převedena do kategorie zastaralých schémata stanovení priorit a související pole v hlavičkách. Mechanismus pro obnovu spojení s HTTP/1.1, který se neujal, byl prohlášen za zastaralý. Byly zjednodušeny požadavky na kontrolu názvů polí a hodnot. Některé dříve rezervované typy rámců a parametry byly navrženy k použití. Přesněji byly určené zakázané hlavičky související se spojením.
Zdroj: opennet.ru

