Az IETF (Internet Engineering Task Force) bizottság, amely az internet protokolljainak és architektúrájának fejlesztésével foglalkozik, befejezte a HTTP/3.0 protokoll RFC-jának kidolgozását, és közzétette a kapcsolódó specifikációkat az RFC 9114 (protokoll) és az RFC 9204 (QPAC fejlécek tömörítési technológia a HTTP/3-hoz) azonosítókkal. A HTTP/3.0 specifikáció „Javasolt szabvány” státuszt kapott, ezután megkezdődik az RFC tervezet szabvány (Draft Standard) státuszának megszerzése, ami lényegében a protokoll teljes stabilizálását és minden megjegyzés figyelembevételét jelenti. Ezzel egy időben a HTTP/1.1 (RFC 9112) és HTTP/2.0 (RFC 9113) protokollok frissített specifikációs változatai is megjelentek, valamint dokumentumok, amelyek a HTTP-kérések szemantikáját (RFC 9110) és a gyorsítótárazás kezelésére vonatkozó HTTP-fejléceket (RFC 9111) határozzák meg.
A HTTP/3 protokoll a QUIC (Quick UDP Internet Connections) protokoll használatát határozza meg szállítóként a HTTP/2-höz. A QUIC egy UDP alapú protokoll, amely támogatja több kapcsolat multiplexelését, és olyan titkosítási módszereket biztosít, amelyek megfelelnek a TLS/SSL-nek. A protokollt 2013-ban a Google fejlesztette ki alternatívaként a TCP+TLS kombinációval a web számára, megoldva a TCP kapcsolatok létrehozásának és egyesítési időtartamának problémáit, valamint eltüntetve a csomagvesztés során jelentkező késéseket az adatok átvitele során.

Jelenleg a QUIC és a HTTP/3.0 támogatása már megvalósult minden népszerű webböngészőben (a Chrome, a Firefox és az Edge alapértelmezetten támogatja a HTTP/3-at, míg a Safari esetében a „Speciális > Kísérleti funkciók > HTTP/3” beállítás aktiválása szükséges). A HTTP/3 szerveroldali megvalósításai elérhetők nginx (külön ágon és külön modul formájában), Caddy, IIS és LiteSpeed esetében. A HTTP/3 támogatását a Cloudflare tartalomszolgáltató hálózat is biztosítja.
A QUIC főbb jellemzői:
- Magas biztonság, amely hasonló a TLS-hez (lényegében a QUIC lehetővé teszi a TLS használatát az UDP-n üstökölve);
- A folyam integritásának ellenőrzése, amely megakadályozza a csomagok elvesztését;
- A kapcsolat azonnali létrehozásának lehetősége (0-RTT, körülbelül 75%-ban az adatok azonnal átadhatók a kapcsolati telepítési csomag küldése után) és a kérés elküldése és a válasz megérkezése közötti minimális késleltetések biztosítása (RTT, Round Trip Time);

- A csomagok új seq. számmal való újraküldésének lehetősége, amely lehetővé teszi a megkapott csomagok pontos azonosítását és megszünteti az időtúllépéseket;
- Csomag elvesztése csak az ahhoz kapcsolódó folyamat szállítását befolyásolja, és nem állítja le az adatokat a párhuzamosan átkonvertált folyamatok szállításában;
- Hibaellenőrző eszközök, amelyek minimalizálják a késéseket az elveszett csomagok újraküldése miatt. Speciális hibaellenőrző kódok használata csomagszinten a vesztes csomagok újraküldésének szükségességének csökkentésére.
- A kriptográfiai blokkok határai a QUIC csomagok határaival össze vannak hangolva, ezáltal csökkenti a csomagvesztések hatását a következő csomagok tartalmának dekódolására;
- Nincsenek problémák a TCP sorok blokkolásával;
- Támogatja a kapcsolati azonosítót, amely lehetővé teszi a mobil kliensek számára a visszakapcsolódási idő csökkentését;
- A kapcsolati túlterhelés-ellenőrzési mechanizmusok kiterjesztett lehetőségeinek csatlakoztatása;
- Sávszélesség-előrejelzési technikák használata mindkét irányban a csomagok optimális küldési intenzitásának biztosítása érdekében, elkerülve a túlterheltségi állapotba való kerülést, amely csomagvesztést eredményez;
- Jelentős teljesítménynövekedés és sávszélesség a TCP-hez képest. Videószolgáltatások, mint például a YouTube esetében a QUIC alkalmazása 30%-kal csökkentette a videók megtekintése során a puffereket.
A HTTP/1.1 specifikáció változásai között megemlíthetjük a visszatérő karaktersorozat (CR) önálló használatának tilalmát a tartalom nélküli elemekben, azaz a protokoll elemeiben a CR karakter csak a sor végén lévő új sor karakterrel (CRLF) együtt alkalmazható. A chunked kérések rendezési algoritmusát továbbfejlesztették, hogy megkönnyítsék a csatolt mezők és a fejléc rész szétválasztását. Javaslatok kerültek be a kétes tartalom kezelésére, amelyek célja a „HTTP Request Smuggling” típusú támadások megakadályozása, lehetővé téve más felhasználók kéréseinek tartalmába való beleavatkozást a front-end és a back-end közötti folyamatban.
A HTTP/2.0 specifikáció frissítésében egyértelműen meghatározásra került a TLS 1.3 támogatása. A prioritás meghatározásának rendszere és a hozzá kapcsolódó mezők az elavult kategóriába kerültek. Az HTTP/1.1-gyel való csatlakozási frissítés mechanizmusa, amely nem terjedt el, szintén elavultnak számít. Csökkentették a mezők és értékek nevének ellenőrzésére vonatkozó követelményeket. Néhány korábban fenntartott keret- és paramétertípus használatát javasolják. Pontosabban meghatározták a csatlakozásra vonatkozó tiltható fejlécmezőket.
Forrás: opennet.ru

