HTTP/3.0 obdržel navržený standardní stav

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.

HTTP/3.0 obdržel navržený standardní stav

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);
    HTTP/3.0 obdržel navržený standardní stav
  • 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

Přidat komentář