Komitét IETF (Internet Engineering Task Force), ktorý sa zaoberá vývojom protokolov a architektúry internetu, dokončil formuláciu RFC pre protokol HTTP/3.0 a publikoval s ním súvisiace špecifikácie pod identifikátormi RFC 9114 (protokol) a RFC 9204 (technológia kompresie hlavičiek QPACK pre HTTP/3). Špecifikácia HTTP/3.0 získala status "Navrhovaného štandardu", po čom začne práca na udelení RFC statusu návrhového štandardu (Draft Standard), čo v podstate znamená úplnú stabilizáciu protokolu a zohľadnenie všetkých vznesených pripomienok. Súčasne boli uverejnené aktualizované verzie špecifikácií pre protokoly HTTP/1.1 (RFC 9112) a HTTP/2.0 (RFC 9113), ako aj dokumenty, ktoré určujú semantiku HTTP požiadaviek (RFC 9110) a HTTP hlavičky správy cache (RFC 9111).
Protokol HTTP/3 určuje využitie protokolu QUIC (Quick UDP Internet Connections) ako transportu pre HTTP/2. QUIC predstavuje nadstavbu nad protokolom UDP, podporujúcu multiplexovanie viacerých spojení a zabezpečujúcu metódy šifrovania, ekvivalentné TLS/SSL. Protokol bol vytvorený v roku 2013 spoločnosťou Google ako alternatíva k spojeniu TCP+TLS pre Web, riešiaci problémy s dlhým časom ustanovenia a vyjednávania spojení v TCP a eliminuje oneskorenia pri strate paketov počas prenosu dát.

V súčasnosti je podpora QUIC a HTTP/3.0 už implementovaná vo všetkých populárnych webových prehliadačoch (v Chrome, Firefox a Edge je podpora HTTP/3 zapnutá predvolene, zatiaľ čo v Safari si vyžaduje povolenie nastavenia „Advanced > Experimental Features > HTTP/3“). Na serverovej strane implementácie HTTP/3 sú dostupné pre nginx (v samostatnej vetve a vo forme samostatného modulu), Caddy, IIS a LiteSpeed. Podporu HTTP/3 tiež zabezpečuje sieť dodávky obsahu Cloudflare.
Hlavné vlastnosti QUIC:
- Vysoká bezpečnosť, podobná TLS (v skutočnosti QUIC poskytuje možnosť použitia TLS nad UDP);
- Kontrola integrity toku, zabraňujúca strate paketov;
- Možnosť okamžite ustanoviť spojenie (0-RTT, približne v 75% prípadoch je možné prenášať dáta hneď po odoslaní paketu na ustanovenie spojenia) a zabezpečiť minimálne oneskorenia medzi odoslaním požiadavky a prijatím odpovede (RTT, Round Trip Time);

- Použitie pri opätovnom prenose пакета s iným poradovým číslom umožňuje vyhnúť sa nejednoznačnosti pri určovaní prijatých balíkov a zbaviť sa timeoutov;
- Strata пакeta ovplyvňuje doručovanie iba súvisiacich prúdov a nezastavuje doručovanie údajov v súbežne prenášaných prúdoch cez aktuálne spojenie;
- Prostriedky na opravu chýb minimalizujúce oneskorenia spôsobené opätovným prenosom stratených balíkov. Použitie špeciálnych kódov na opravu chýb na úrovni пакета na zníženie situácií, ktoré si vyžadujú opätovný prenos údajov strateného пакeta.
- Hranice kryptografických blokov sú vyrovnané s hranicami пакetov QUIC, čo zmenšuje vplyv strát paketov na dekódovanie obsahu nasledujúcich paketov;
- Neexistujú žiadne problémy s blokovaním frontu TCP;
- Podpora identifikátora spojenia, ktorý umožňuje skrátiť čas potrebný na obnovenie spojenia pre mobilných klientov;
- Možnosť pripojenia rozšírených mechanizmov riadenia preťaženia spojenia;
- Použitie techniky predpovedania priepustnosti v každom smere na zabezpečenie optimálnej intenzity odosielania paketov, čím sa zabraňuje prechodu do stavu preťaženia, pri ktorom dochádza k strate paketov;
- Výrazný nárast výkonu a priepustnosti v porovnaní s TCP. Pre video služby, ako je YouTube, použitie QUIC preukázalo 30% zníženie opätovného vyrovnávania pri prehrávaní videa.
Medzi zmenami v špecifikácii HTTP/1.1 možno poznamenať zákaz oddeleného používania znaku návratu vozíka (CR) mimo tela s obsahom, t.j. v prvkoch protokolu sa znak CR môže používať iba spolu so znakom nového riadku (CRLF). Algoritmus rozdelenia chunked-žiadostí bol vylepšený na zjednodušenie oddelenia pripojených polí a sekcie s hlavičkami. Pridané odporúčania na spracovanie nejasného obsahu na blokovanie útokov typu „HTTP Request Smuggling“, ktoré umožňujú vklinenie do obsahu požiadaviek iných používateľov v toku medzi frontendom a backendom.
Aktualizácia špecifikácie HTTP/2.0 jasne definuje podporu TLS 1.3. Schéma určovania priorít a s ňou súvisiace polia v hlavičkách boli prevzaté do kategórie zastaraných. Mechanizmus obnovovania spojenia z HTTP/1.1, ktorý sa neujal, bol vyhlásený za zastaraný. Požiadavky na overovanie názvov polí a hodnôt boli skrátené. Niektoré predtým vyhradené typy rámcov a parametre boli navrhnuté na použitie. Presnejšie sú definované zakázané polia hlavičiek týkajúce sa spojenia.
Zdroj: opennet.ru

