HTTP/3
HTTP/3 je třetí „velká“ verze protokolu HTTP používaného službou World Wide Web pro přenos dat, doplňující rozšířené protokoly HTTP/1.1 a HTTP/2. Zatímco předchozí verze používaly transportní protokol TCP publikovaný v roce 1974,[1] HTTP/3 používá protokol QUIC oficiálně představený v roce 2021,[2] multiplexovaný transportní protokol využívající UDP.[3]
HTTP/3 používá podobnou sémantiku jako dřívější revize protokolu, včetně stejných metod, stavových kódů a polí zprávy, ale jejich kódování a udržování stavu relace je odlišné. Díky použití protokolu QUIC by HTTP/3 mělo mít nižší latence a při skutečném použití přenášet data rychleji než předchozí verze: v některých případech více než čtyřikrát rychleji než HTTP/1.1 (který je na mnoha webových serverech jedinou dostupnou verzí HTTP).[4][5]
V září 2024 bylo HTTP/3 podporováno více než 95 % hlavních používaných WWW prohlížečů[6] a 34% z nejpoužívanějších 10 milionů webových serverů.[7] HTTP/3 je od dubna 2020 podporované projektem Chromium (a odvozenými projekty včetně Google Chrome, Microsoft Edge, Samsung Internet a Opera)[8] a od května 2021 prohlížečem Mozilla Firefox.[6][9] Safari 14 HTTP/3 implementuje, ale implicitně je zakázané.[10]
Historie
[editovat | editovat zdroj]
HTTP/3 vychází z internetového draftu přijatého pracovní skupinou QUIC. Původní návrh se jmenoval „HTTP/2 Semantics Using The QUIC Transport Protocol“,[11] a později byl přejmenován na „Hypertext Transfer Protocol (HTTP) over QUIC“.[12]
Předseda pracovních skupin HTTP a QUIC IETF Mark Nottingham vznesl 28. října 2018 v diskusi v elektronické konferenci oficiální žádost na přejmenování protokolu HTTP-over-QUIC na HTTP/3, aby byl „jasně identifikován jako další způsob navázání HTTP sémantiky na protokoly nižších vrstev ... aby lidé porozuměli jeho oddělení od QUIC“ a po dokončení a publikování pracovní verze přechod jeho vývoje z pracovní skupiny QUIC do pracovní skupiny HTTP[13]. V následující diskuzi, která trvala několik dní, byl Nottinghamův návrh přijat jeho kolegy v IETF, kteří v listopadu 2018 dali své oficiální schválení, aby se HTTP-over-QUIC stal HTTP/3.[14]
Do Google Chrome byla podpora HTTP/3 přidána v září 2019 (build Canary) a později byla doplněna i do stabilních buildů, ale byla zakázána konfigurační volbou. Implicitně byla povolena v dubnu 2020.[8] Firefox přidal podporu HTTP/3 v listopadu 2019 také zapínanou konfigurační volbou,[6][15][16] která byla implicitně povolena v dubnu 2021 ve Firefoxu 88.[6][9] Experimentální podpora HTTP/3 byla přidána do Safari Technology Preview 8. dubna 2020[17] a byla obsažena v Safari 14 dodávaným s IOS 14 a macOS 11,[10][18] ale i ve verzi Safari 16 pro macOS i iOS je stále implicitně zakázaná.[zdroj?]
6. června 2022 IETF publikoval HTTP/3 jako Navržený standard v IETF RFC9114.[19]
Porovnání s HTTP/1.1 a HTTP/2
[editovat | editovat zdroj]Sémantika HTTP je ve všech verzích zachována: ve všech verzích jsou použitelné stejné metody, stavové kódy a pole zprávy. Jsou však rozdíly ve zobrazení této sémantiky do podkladové transportní vrstvy. HTTP/1.1 a HTTP/2 používají transportní protokol TCP, zatímco HTTP/3 používá QUIC, protokol transportní vrstvy, ve kterém je ochrana proti zahlcení implementována v uživatelském prostoru nad User Datagram Protocol (UDP). Přechod na QUIC se snaží odstranit velký problém HTTP/2 nazývaný „blokování čela fronty“: protože souběžné multiplexování v HTTP/2 není viditelné pro mechanismy zotavení ze ztráty dat protokolu TCP, takže ztracený nebo přehozený paket způsobí pozastavení všech aktivních transakcí bez ohledu na to, zda byla transakce ovlivněna ztraceným paketem. Protože QUIC poskytuje nativní multiplexování, ztracené pakety ovlivní pouze proudy, v nichž došlo ke ztrátě dat.
Navrhované DNS záznamy SVCB (vazba služby) a HTTPS má umožnit spojení bez předchozího přijetí hlavičky Alt-Svc s použitím předchozích verzí HTTP, což ušetří 1 kolo TCP handshakingu.[20][21] WWW klienti podporují HTTPS záznamy od verze Firefox 92, iOS 14, je oznámená podpora v Safari 14; Chromum je podporuje pokud jsou povoleny v konfiguraci.[22][23][24]
Implementace
[editovat | editovat zdroj]Klienti
[editovat | editovat zdroj]Prohlížeč | Implementováno (implicitně zakázano) | Dodáváno (implicitně povoleno) | Komentář | ||
---|---|---|---|---|---|
Chrome | Stabilní build (79) | prosinec 2019 | 87[6] | duben 2020[25] | Dřívější verze implementovaly jiné drafty QUIC |
Microsoft Edge | Stabilní build (79) | prosinec 2019 | 87 | duben 2020 | Edge 79 byla první verze založená na Chromiu |
Mozilla Firefox | Stabilní build (72.0.1) | leden 2020 | 88[9] | duben 2021[26] | |
Safari | Stabilní build (14.0) | září 2020 | 16.4 | březen 2023 | Apple testuje podporu HTTP/3 pro některé uživatele Safari od Safari 16.4[27] |
Knihovny
[editovat | editovat zdroj]Knihovny s otevřeným zdrojovým textem implementující logiku QUIC a HTTP/3 klienta nebo serveru:[28]
Servery
[editovat | editovat zdroj]- LiteSpeed Web Server (a OpenLiteSpeed) 6.0.2 vydaný 7. června 2021 se stal první verzí, která implicitně povoluje HTTP/3.[34]
- Caddy web server v2.6.0 (vydaný 20. září 2022) má HTTP/3 povoleno implicitně.[35]
- Nginx podporuje HTTP/3 od 1.25.0 (vydané 23. května 2023). Technologický preview nginx s podporou HTTP/3 byl vydán v červnu 2020.[36] Binární balíčky nginx s podporou HTTP/3 byly vydány v únoru 2023.[37]
- Cloudflare distribuuje záplatu pro nginx, která integruje knihovnu HTTP/3.[38]
- Microsoft IIS povolil podporu HTTP/3 nativně ve Windows Server 2022/Windows 11.[39]
- HAProxy podporuje HTTP/3 nad QUIC od verze 2.6 vydané 31. května 2022.[40][41]
- Nimble Streamer podporuje HTTP/3 pro protokoly vycházející z HTTP od verze 4.1.8-1.[42]
Odkazy
[editovat | editovat zdroj]Reference
[editovat | editovat zdroj]V tomto článku byl použit překlad textu z článku HTTP/3 na anglické Wikipedii.
- ↑ CERF, V.; DALAL, Y.; SUNSHINE, C. RFC0675: SPECIFICATION OF INTERNET TRANSMISSION CONTROL PROGRAM [online]. Network Working Group, prosinec 1974. Obsolete. Obsoleted by RFC 7805. NIC 2. INWG 72. doi:10.17487/RFC0675. RFC 675.
- ↑ IYENGAR, J.; THOMSON, M. RFC9000: QUIC: A UDP-Based Multiplexed and Secure Transport. Proposed Standard [online]. Internet Engineering Task Force, květen 2021. doi:10.17487/RFC9000.
- ↑ What is HTTP/3? [online]. [cit. 2022-07-12]. Dostupné v archivu pořízeném z originálu dne 2022-07-04.
- ↑ PERNA, Gianluca; TREVISAN, Martino; GIORDANO, Danilo; DRAGO, Idilio. A first look at HTTP/3 adoption and performance. Computer Communications. 2022-04-01, roč. 187, s. 115–124. Dostupné online. ISSN 0140-3664. doi:10.1016/j.comcom.2022.02.005. S2CID 246936473. (anglicky)
- ↑ HTTP/3 is Fast [online]. [cit. 2022-07-01]. Dostupné online. (anglicky)
- ↑ a b c d e "HTTP/3"|Can I use... Support tables for HTML5, CSS3, etc [online]. [cit. 2024-08-11]. Dostupné online.
- ↑ Usage of HTTP/3 for websites [online]. W3Techs [cit. 2024-08-11]. Dostupné online.
- ↑ a b Enabling QUIC in tip-of-tree [online]. [cit. 2021-04-08]. Dostupné online.
- ↑ a b c DAMJANOVIC, Dragana. QUIC and HTTP/3 Support now in Firefox Nightly and Beta [online]. 2021-04-16 [cit. 2021-04-17]. Dostupné online. (anglicky)
- ↑ a b Safari 14 Release Notes [online]. [cit. 2020-12-04]. Dostupné online.
- ↑ SHADE, Robbie. HTTP/2 Semantics Using The QUIC Transport Protocol. [s.l.]: IETF, 2016-07-08.
- ↑ CIMPANU, Catalin. HTTP-over-QUIC to be renamed HTTP/3. www.zdnet.com. 2018-11-12. Dostupné online [cit. 2018-11-12]. (anglicky)
- ↑ NOTTINGHAM, Mark. Identifying our deliverable. IETF Mail Archive. 2018-10-28. Dostupné online.
- ↑ CIMPANU, Catalin. HTTP-over-QUIC to be renamed HTTP/3. www.zdnet.com. 2018-11-12. Dostupné online [cit. 2018-11-12]. (anglicky)
- ↑ DANIEL, Stenberg. Daniel Stenberg announces HTTP/3 support in Firefox Nightly [online]. [cit. 2019-11-05]. Dostupné online.
- ↑ CIMPANU, Catalin. Cloudflare, Google Chrome, and Firefox add HTTP/3 support [online]. 26 Sep 2019 [cit. 2019-09-27]. Dostupné online.
- ↑ Release Notes for Safari Technology Preview 104 [online]. 2020-04-08 [cit. 2020-08-07]. Dostupné online.
- ↑ NG, Gary. Apple's Safari Adds Support for HTTP3 in iOS 14 and macOS 11 [online]. 2020-06-23 [cit. 2021-06-25]. Dostupné online.
- ↑ BISHOP, M. RFC9114: HTTP/3. Proposed Standard [online]. Internet Engineering Task Force, červen 2022. doi:10.17487/RFC9114.
- ↑ HTTPS RR [online]. Mozilla [cit. 2022-10-25]. Dostupné online.
- ↑ SCHWARTZ, Benjamin M.; BISHOP, Mike; NYGREN, Erik. Service binding and parameter specification via the DNS. [s.l.]: IETF, 2020-06-12.
- ↑ Firefox 92 for developers [online]. Mozilla Corporation, 2021-09-07 [cit. 2022-10-25]. Dostupné online.
- ↑ Feature: HTTP->HTTPS redirect for HTTPS DNS records [online]. Google Inc. [cit. 2022-10-25]. Dostupné online.
- ↑ Patrick Mevzek. What's the use case of SVCB (type 65, service binding) RR [online]. Zásobník Vyměňuje/ústředna Inc., 2021-08-24 [cit. 2022-10-25]. Dostupné online.
- ↑ Enabling QUIC in tip-of-tree [online]. [cit. 2021-04-09]. Dostupné online.
- ↑ Firefox Release Owners - MozillaWiki [online]. [cit. 2021-04-09]. Dostupné online.
- ↑ Jen Simmons. HTTP/3 support shipped in Safari 14.0 [online]. 2023-04-04 [cit. 2023-04-07]. Dostupné online.
- ↑ QUIC Implementations [online]. [cit. 2021-04-08]. Dostupné online. (anglicky)
- ↑ First HTTP/3 with curl [online]. Daniel Stenberg, 2019-08-05 [cit. 2019-10-02]. Dostupné online.
- ↑ HTTP3 (and QUIC) [online]. Daniel Stenberg, 2023-08-23 [cit. 2023-08-27]. Dostupné online.
- ↑ MsQuic is Open Source [online]. 2020-04-28 [cit. 2020-04-28]. Dostupné online.
- ↑ HTTP/3 support in .NET 6 [online]. 2021-09-17 [cit. 2021-09-17]. Dostupné online.
- ↑ HTTP/3 support in .NET 6 [online]. 2021-09-17 [cit. 2022-01-12]. Dostupné online. (anglicky)
- ↑ LiteSpeed Web Server Release Log - LiteSpeed Technologies [online]. [cit. 2022-02-12]. Povolí HTTP/3 v1 implicitně.. Dostupné online.
- ↑ Release 2.6.0 · caddyserver/caddy [online]. 2022-09-22 [cit. 2022-09-20]. Dostupné online. (anglicky)
- ↑ Introducing a Technology Preview of NGINX Support for QUIC and HTTP/3 [online]. 2020-06-10 [cit. 2020-06-11]. Dostupné online. (anglicky)
- ↑ Binary Packages Now Available for the Preview NGINX QUIC+HTTP/3 Implementation [online]. 2023-02-08 [cit. 2023-03-30]. Dostupné online. (anglicky)
- ↑ Experiment with HTTP/3 using NGINX and quiche [online]. 2019-10-17 [cit. 2019-11-09]. Dostupné online. (anglicky)
- ↑ TRATCHER. Use ASP.NET Core with HTTP/3 on IIS [online]. [cit. 2022-04-29]. Dostupné online. (anglicky)
- ↑ Announcing HAProxy 2.6 [online]. 2022-05-31. Dostupné online.
- ↑ QUIC Implementation in HAProxy [online]. 2023-01-25. Dostupné online.
- ↑ HTTP/3 and QUIC support in Nimble Streamer [online]. 2025-02-14 [cit. 2025-02-17]. Dostupné online. (anglicky)
Související články
[editovat | editovat zdroj]Literatura
[editovat | editovat zdroj]- KRČMÁŘ, Petr. HTTP/3 nebude postavené na TCP, základem bude QUIC používající UDP [online]. 2018-11-14 [cit. 2018-11-16]. Dostupné online.
- ČÍŽEK, Jakub. Blíží se HTTP/3: Web bude rychlejší a bude používat úplně jinou technologii [online]. 2018-11-13 [cit. 2018-11-16]. Dostupné online.
Externí odkazy
[editovat | editovat zdroj]Obrázky, zvuky či videa k tématu HTTP/3 na Wikimedia Commons
- Oficiální stránky