Az IETF (Internet Engineering Task Force), amely az internetes protokollok és architektúrák fejlesztéséért felelős, befejezte a HTTP/3.0 protokoll RFC kialakítását, és közzétette a kapcsolódó specifikációkat RFC 9114 (protokoll) és RFC 9204 ( QPACK fejléctömörítési technológia HTTP/3-hoz) . A HTTP/3.0 specifikáció megkapta a „Javasolt szabvány” státuszt, ezt követően megkezdődik a munka annak érdekében, hogy az RFC szabványtervezet státuszba kerüljön (Draft Standard), ami tulajdonképpen a protokoll teljes stabilizálását jelenti, és figyelembe véve az összes az elhangzott megjegyzéseket. Ezzel egy időben megjelentek a HTTP/1.1 (RFC 9112) és a HTTP/2.0 (RFC 9113) protokollok specifikációinak frissített változatai, valamint a HTTP kérések szemantikáját meghatározó dokumentumok (RFC 9110) és a HTTP gyorsítótárazási vezérlőfejlécek. (RFC 9111).
A HTTP/3 protokoll a QUIC (Quick UDP Internet Connections) protokoll használatát határozza meg a HTTP/2 átviteleként. A QUIC az UDP protokoll kiterjesztése, amely támogatja több kapcsolat multiplexelését, és a TLS/SSL-lel egyenértékű titkosítási módszereket biztosít. A protokollt 2013-ban a Google hozta létre a webes TCP+TLS kombináció alternatívájaként, amely megoldja a hosszú kapcsolatbeállítási és egyeztetési időket a TCP-ben, és kiküszöböli a késéseket, amikor a csomagok elvesznek az adatátvitel során.
Jelenleg a QUIC és a HTTP/3.0 támogatás már minden népszerű webböngészőben be van építve (a Chrome-ban, Firefoxban és Edge-ben a HTTP/3 támogatás alapértelmezés szerint engedélyezve van, a Safariban pedig a „Speciális > Kísérleti szolgáltatások > HTTP/3” beállítás szükséges engedélyezni kell). Szerver oldalon HTTP/3 implementációk érhetők el nginx-hez (külön ágban és külön modul formájában), Caddy-hez, IIS-hez és LiteSpeed-hez. A HTTP/3 támogatást a Cloudflare tartalomszolgáltató hálózat is biztosítja.
A QUIC főbb jellemzői:
- Magas biztonság, hasonlóan a TLS-hez (valójában a QUIC lehetővé teszi a TLS használatát UDP-n keresztül);
- Az adatfolyam integritásának ellenőrzése a csomagvesztés megelőzése érdekében;
- Azonnali kapcsolat létrehozásának képessége (0-RTT, az esetek körülbelül 75%-ában az adatok a kapcsolatbeállító csomag elküldése után azonnal továbbíthatók), és minimális késleltetést biztosít a kérés elküldése és a válasz fogadása között (RTT, Round Trip Time) ;
- Eltérő sorszám használata egy csomag újraküldésekor, ami elkerüli a kétértelműséget a fogadott csomagok azonosítása során, és megszabadul az időtúllépésektől;
- A csomagvesztés csak a hozzá tartozó adatfolyam kézbesítését érinti, és nem akadályozza meg az adatok kézbesítését az aktuális kapcsolaton keresztül párhuzamosan továbbított folyamokban;
- Hibajavító eszközök, amelyek minimalizálják az elveszett csomagok újraküldése miatti késéseket. Speciális hibajavító kódok használata csomagszinten az elveszett csomagadatok újraküldését igénylő helyzetek csökkentése érdekében.
- A kriptográfiai blokkhatárok igazodnak a QUIC csomaghatárokhoz, ami csökkenti a csomagvesztések hatását a következő csomagok tartalmának dekódolására;
- Nincs probléma a TCP-sor blokkolásával;
- Connection ID támogatás a mobil kliensek újracsatlakozási idejének csökkentése érdekében;
- Speciális mechanizmusok csatlakoztatásának lehetősége a csatlakozás túlterhelés-szabályozására;
- Sávszélesség-előrejelzési technikák alkalmazása minden irányban a csomagok küldésének optimális intenzitásának biztosítására, megakadályozva a torlódásos állapotba gurulást, amelyben a csomagok elvesznek;
- Jelentős teljesítménynövekedés és átviteli sebesség a TCP-hez képest. Az olyan videoszolgáltatások esetében, mint a YouTube, a QUIC 30%-kal csökkenti az újrapufferelési műveleteket videók megtekintése közben.
A HTTP/1.1 specifikáció változásai közül kiemelhető a carriage return (CR) karakter izolált használatának tilalma a törzsön kívül tartalommal, pl. A protokollelemekben a CR karakter csak a soremelés karakterrel (CRLF) együtt használható. A csonkolt kérés elrendezési algoritmusa továbbfejlesztett, hogy leegyszerűsítse a csatolt mezők és a fejlécekkel rendelkező szakaszok szétválasztását. Javaslatok hozzáadva a félreérthető tartalmak kezeléséhez a „HTTP Request Smuggling” támadások blokkolása érdekében, amelyek lehetővé teszik számunkra, hogy beékeljük magunkat más felhasználók kéréseinek tartalmába a frontend és a backend közötti folyamatban.
A HTTP/2.0 specifikáció frissítése kifejezetten meghatározza a TLS 1.3 támogatását. Elavult a prioritási séma és a kapcsolódó fejlécmezők. A HTTP/1.1 kapcsolat frissítésére szolgáló, nem használt mechanizmust elavultnak nyilvánították. Csökkentett követelmények a mezőnevek és értékek ellenőrzéséhez. Néhány korábban lefoglalt kerettípus és paraméter használatára javasolt. A kapcsolathoz kapcsolódó tiltott fejlécmezők pontosabban definiáltak.
Forrás: opennet.ru