Siirry sisÀltöön

HTTP/3

Wikipediasta

HTTP/3 on HTTP:n kolmas pÀÀversio, jota kÀytetÀÀn tiedonsiirtoon WWW-jÀrjestelmÀssÀ ja joka tÀydentÀÀ laajalti aikaisempia versioita HTTP/1.1 ja HTTP/2. Toisin kuin aiemmat versiot, jotka luottavat vakiintuneeseen vuonna 1974 julkaistuun TCP-protokollaan,[1] HTTP/3 kÀyttÀÀ uutta UDPn pÀÀlle rakennettua multipleksoitua siirtoprotokollaa QUIC:ia.[2] IETF julkaisi 6. kesÀkuuta 2022 HTTP/3:n ehdotettuna standardina dokumentissa RFC 9114.[3]

Version muutokset keskittyvÀt pÀÀasiassa tiedon siirtoon. Pyyntöjen semantiikka pysyy siis samanlaisena: pyyntömetodit, tilakoodit ja otsakekentÀt ovat samat kuin aiemmissa versioissa. HTTP/3:lla on alhaisempi viive, joten sen sivut latautuvat nopeammin aiempiin versioihin verrattuna: joissakin tapauksissa jopa neljÀ kertaa nopeammin kuin HTTP/1.1:llÀ (joka on vielÀ monilla verkkosivustoilla ainoa kÀytössÀ oleva HTTP-versio).[4][5]

HTTP/3:a tukee (ainakin osittain) 97 prosenttia kaikista seuratuista verkkoselainasennuksista[6] ja 29 prosenttia kymmenestÀ miljoonasta suosituimmasta verkkosivustosta.[7] Versiota on tukenut Chromium (ja johdetut projektit, kuten Google Chrome, Microsoft Edge, Samsung Internet ja Opera)[8] huhtikuusta 2020 lÀhtien ja Mozilla Firefox toukokuusta 2021 lÀhtien.[6][9] Safari 14 lisÀsi tuen versiolle, mutta se pysyy oletusarvoisesti poissa kÀytöstÀ.[10]

HTTP/1.1Transport Layer SecurityTransmission Control ProtocolHTTP/2TLS 1.2Transmission Control ProtocolHTTP/3TLS 1.3QUICUser Datagram ProtocolInternet Protocol
HTTP/3:n protokollapino verrattuna HTTP/1.1:een ja HTTP/2:een

HTTP/3 on perÀisin QUIC-työryhmÀn hyvÀksymÀstÀ Internet-luonnoksesta. AlkuperÀinen ehdotus nimettiin "HTTP/2 Semantics Using The QUIC Transport Protocol" (suom. HTTP/2 semantiikka kÀyttÀen QUIC-kuljetusprotokollaa) ja myöhemmin "Hypertext Transfer Protocol (HTTP) over QUIC" (suom. hypertekstin siirtoprotokolla QUIC:in yli).[11]

IETF:n HTTP- ja QUIC-työryhmien puheenjohtaja Mark Nottingham ehdotti sÀhköpostilistakeskustelussa 28. lokakuuta 2018 HTTP-over-QUIC:n uudelleennimeÀmistÀ HTTP/3:ksi, jotta "se olisi selkeÀsti toinen HTTP-semantiikan sitominen siirtoprotokollaan, jotta ihmiset ymmÀrtÀvÀt sen eron QUIC:sta."[12] Muut IETF:n jÀsenet hyvÀksyivÀt Nottinghamin ehdotuksen muutamaa pÀivÀÀ myöhemmin. HTTP-työryhmÀ valtuutettiin auttamaan QUIC-työryhmÀÀ HTTP/3:n suunnittelussa ja sen yllÀpidosta vastaamisesta julkaisun jÀlkeen.[13]

HTTP/3-tuki lisÀttiin Chromen canary-testiversioon syyskuussa 2019. Se saavutti lopulta vakaan toiminnan, mutta se otettiin oletusarvoisesti pois kÀytöstÀ. HTTP/3 otettiin takaisin kÀyttöön huhtikuussa 2020.[14] Firefox lisÀsi HTTP/3-tuen marraskuussa 2019 ominaisuuslipulla[6][15][16] ja otti sen oletusarvoisesti kÀyttöön huhtikuussa 2021 Firefox 88:ssa[6][9] HTTP/3:n kokeellinen tuki lisÀttiin Safari Technology Previewiin 8. huhtikuuta 2020[17] ja se sisÀltyi Safari 14:ÀÀn, joka toimitetaan iOS 14:n ja macOS 11:n kanssa[10][18], mutta se on edelleen oletuksena pois kÀytöstÀ Safarista 16. lÀhtien, sekÀ macOS:ssÀ ettÀ iOS:ssÀ.

Vertailu HTTP/1.1:een ja HTTP/2:een

[muokkaa | muokkaa wikitekstiÀ]

HTTP-semantiikka on sama kaikissa versioissa: samat pyyntömenetelmÀt, tilakoodit ja otsakekentÀt ovat kÀytettÀvissÀ kaikissa versioissa. Erot ovat nÀiden semantiikan yhdistÀmisessÀ taustalla olevaan tiedon siirtoon verkon vÀlityksellÀ. SekÀ HTTP/1.1 ettÀ HTTP/2 kÀyttÀvÀt TCP:tÀ siirtoprotokollana. HTTP/3 sen sijaan kÀyttÀÀ QUIC- protokollaa, siirtokerroksen verkkoprotokollaa, joka hoitaa kÀyttÀjÀtilan ruuhkanhallintaa UDP-siirtoprotokollan yli. Vaihto QUICiin pyrkii korjaamaan HTTP/2:n suuren ongelman, jota kutsutaan "jonon tukkeutumiseksi". Koska HTTP/2:n multipleksoinnin rinnakkaisluonne ei nÀy TCP:n virhetilannemekanismeille, kadonnut tai uudelleenjÀrjestelty paketti aiheuttaa kaikkien aktiivisten tapahtumien ja tiedon siirtojen keskeytymisen riippumatta siitÀ, vaikuttiko kadonnut paketti kyseiseen tapahtumaan. Koska QUIC-protokolla tarjoaa multipleksoinnin suoraan siirtoprotokollatasolla, kadonneet paketit vaikuttavat vain niihin tietovirtoihin, joissa tietoja on kadonnut.

Ehdotetut DNS-resurssitietueet SVCB (palvelusidonta) ja HTTPS mahdollistaisivat yhteyden muodostamisen suoraan HTTP/3-versiolla vastaanottamatta ensin Alt-Svc-otsaketietoa palvelimelta aikaisempien HTTP-versioiden avulla, mikÀ poistaisi yhden viestin TCP:n kÀttelyprosessista.[19] HTTPS-resurssitietueille on tuki Firefoxissa versiosta 92 eteenpÀin, Safarissa versiosta 14 eteenpÀin, ja Chromium tukee sitÀ ohjelmistolipun takaa.[20][21][22]

Selaintuki HTTP/3:lle
Selain Versio, jossa lisÀtty (oletuksena pois kÀytöstÀ) Versio, jossa lisÀtty (oletuksena kÀytössÀ) Kommentti
Chromium Vakaa (79) joulukuu 2019 87[6] huhtikuu 2020[23] Aiemmissa versioissa on otettu kÀyttöön muita QUIC-luonnoksia
Edge Vakaa (79) joulukuu 2019 87 huhtikuu 2020 Edge 79 oli ensimmÀinen Chromiumiin perustuva versio
Firefox Vakaa (72.0.1) tammikuu 2020 88[9] huhtikuu 2021[24]
Safari Vakaa (14.0) syyskuu 2020 16.4 maaliskuu 2023 Apple kokeili HTTP/3-tukea joillakin Safari-kÀyttÀjillÀ Safari 16.4:stÀ alkaen.[25]

Avoimen lÀhdekoodin kirjastot, jotka toteuttavat asiakas- tai palvelinlogiikan QUIC:lle ja HTTP/3:lle, ovat muun muassa: [26]

Nimi Asiakas Palvelin Ohjelmointikieli KehittÀjÀorganisaatio
lsquic KyllÀ KyllÀ C LiteSpeed
nghttp3 KyllÀ KyllÀ C
h2o Ei KyllÀ C
libcurl[27][28] KyllÀ Ei C
MsQuic[29] KyllÀ KyllÀ C Microsoft
proxygen KyllÀ KyllÀ C++ Facebook
Cronet KyllÀ KyllÀ C++ Google
.NET[30] KyllÀ KyllÀ C# (kÀyttÀÀ MsQuic) Microsoft
quic-go KyllÀ KyllÀ Go
http3 KyllÀ KyllÀ Haskell
Kwik KyllÀ KyllÀ Java
Flupke KyllÀ KyllÀ Java
aioquic KyllÀ KyllÀ Python
quiche KyllÀ KyllÀ Rust Cloudflare
neqo KyllÀ KyllÀ Rust Mozilla
quinn KyllÀ KyllÀ Rust
s2n-quic KyllÀ KyllÀ Rust AWS

Palvelinohjelmisto

[muokkaa | muokkaa wikitekstiÀ]
  • 7. kesĂ€kuuta 2021 LiteSpeed Web Server (ja OpenLiteSpeed) 6.0.2 julkaistiin, ja siitĂ€ tuli ensimmĂ€inen palvelinohjelmisto, joka otti HTTP/3:n oletusarvoisesti kĂ€yttöön. [31]
  • Caddy-palvelinohjelmiston versio 2.6.0 (julkaistu 20. syyskuuta 2022) otti HTTP/3:n oletuksena kĂ€yttöön.[32]
  • Nginx on tukenut HTTP/3:a versiosta 1.25.0 lĂ€htien (julkaistu 23.5.2023). Tekninen esikatselu nginxistĂ€ HTTP/3-tuella julkaistiin kesĂ€kuussa 2020. [33] Nginxin valmiiksi kÀÀnnetyt versiot HTTP/3-tuella julkaistiin helmikuussa 2023. [34]
  • Cloudflare on luonut korjauksen nginxille, joka lisÀÀ sen kehittĂ€mĂ€n HTTP/3-kirjasto Quichen siihen. [35]
  • Microsoft IIS:n tuki HTTP/3:lle lisĂ€ttiin Windows Server 2022:ssa ja Windows 11:ssa.[36]
  • HAProxy tukee HTTP/3:a versiosta 2.6 lĂ€htien (julkaistu 31. toukokuuta 2022) [37] [38]
  1. ↑ Cerf, Vinton Yogen, Dalal Sunshine, Carl: SPECIFICATION OF INTERNET TRANSMISSION CONTROL PROGRAM datatracker.ietf.org. joulukuu 1974. Viitattu 28.2.2024.
  2. ↑ What is HTTP/3? Cloudflare. Arkistoitu 4 July 2022. Viitattu 12 July 2022.
  3. ↑ HTTP/3 datatracker.ietf.org. 6 June 2022. Viitattu 6.6.2022. (englanniksi)
  4. ↑ Gianluca Perna, Martino Trevisan, Danilo Giordano, Idilio Drago: A first look at HTTP/3 adoption and performance. Computer Communications, 1.4.2022, 187. vsk, s. 115–124. doi:10.1016/j.comcom.2022.02.005 ISSN 0140-3664 Artikkelin verkkoversio.
  5. ↑ HTTP/3 is Fast Request Metrics. Viitattu 1.7.2022. (englanniksi)
  6. 1 2 3 4 5 "HTTP/3" | Can I use... Support tables for HTML5, CSS3, etc canIuse.com. Viitattu 7.1.2024.
  7. ↑ Usage of HTTP/3 for websites World Wide Web Technology Surveys. W3Techs. Viitattu 2 February 2024.
  8. ↑ Enabling QUIC in tip-of-tree groups.google.com. Viitattu 8.4.2021.
  9. 1 2 3 Damjanovic: QUIC and HTTP/3 Support now in Firefox Nightly and Beta Mozilla Hacks – the Web developer blog. 16 April 2021. Viitattu 17.4.2021. (englanniksi)
  10. 1 2 Safari 14 Release Notes developer.apple.com. Viitattu 4 December 2020.
  11. ↑ HTTP-over-QUIC to be renamed HTTP/3 | ZDNet. MÀÀritĂ€ julkaisu!12 November 2018. Artikkelin verkkoversio. (englanniksi)
  12. ↑ Identifying our deliverables mailarchive.ietf.org. Viitattu 28.2.2024.
  13. ↑ Hypertext Transfer Protocol Charter ietf.org. Viitattu 2.9.2020.
  14. ↑ Enabling QUIC in tip-of-tree groups.google.com. Viitattu 8.4.2021.
  15. ↑ Daniel: Daniel Stenberg announces HTTP/3 support in Firefox Nightly Twitter. Viitattu 5 November 2019.
  16. ↑ Cimpanu: Cloudflare, Google Chrome, and Firefox add HTTP/3 support ZDNet. 26 Sep 2019. Viitattu 27 Sep 2019.
  17. ↑ Release Notes for Safari Technology Preview 104 webkit.org. 8 April 2020. Viitattu 7 August 2020.
  18. ↑ Ng: Apple's Safari Adds Support for HTTP3 in iOS 14 and macOS 11 iphoneincanada.ca. 23 June 2020. Viitattu 25 June 2021.
  19. ↑ HTTPS RR MDN. Mozilla. Viitattu 25.10.2022.
  20. ↑ Firefox 92 for developers 7 September 2021. Mozilla Corporation. Viitattu 25.10.2022.
  21. ↑ Feature: HTTP->HTTPS redirect for HTTPS DNS records Google Inc.. Viitattu 25.10.2022.
  22. ↑ Patrick Mevzek: What's the use case of SVCB (type 65, service binding) RR 24 August 2021. Stack Exchange Inc.. Viitattu 25.10.2022.
  23. ↑ Enabling QUIC in tip-of-tree groups.google.com. Viitattu 9.4.2021.
  24. ↑ Firefox Release Owners - MozillaWiki wiki.mozilla.org. Viitattu 9.4.2021.
  25. ↑ Jen Simmons: HTTP/3 support shipped in Safari 14.0 GitHub. 4.4.2023. Viitattu 7.4.2023.
  26. ↑ QUIC Implementations GitHub. Viitattu 8.4.2021. (englanniksi)
  27. ↑ First HTTP/3 with curl | daniel.haxx.se daniel.haxx.se. 5.8.2019. Viitattu 28.2.2024. (englanniksi)
  28. ↑ curl/docs/HTTP3.md at master · curl/curl GitHub. Viitattu 28.2.2024. (englanniksi)
  29. ↑ MsQuic is Open Source TECHCOMMUNITY.MICROSOFT.COM. Viitattu 28.2.2024. (englanniksi)
  30. ↑ Sam Spencer: HTTP/3 support in .NET 6 .NET Blog. 17.9.2021. Viitattu 28.2.2024. (englanniksi)
  31. ↑ LiteSpeed Web Server Release Log - LiteSpeed Technologies www.litespeedtech.com. ”Enable HTTP/3 v1 by default.” Viitattu 12.2.2022.
  32. ↑ Release 2.6.0 · caddyserver/caddy Github. 22.9.2022. Viitattu 20.9.2022. (englanniksi)
  33. ↑ Introducing a Technology Preview of NGINX Support for QUIC and HTTP/3 NGINX. 10.6.2020. Viitattu 11.6.2020. (englanniksi)
  34. ↑ Binary Packages Now Available for the Preview NGINX QUIC+HTTP/3 Implementation NGINX. 8.2.2023. Viitattu 30.3.2023. (englanniksi)
  35. ↑ Experiment with HTTP/3 using NGINX and quiche The Cloudflare Blog. 17.10.2019. Viitattu 9.11.2019. (englanniksi)
  36. ↑ Tratcher: Use ASP.NET Core with HTTP/3 on IIS docs.microsoft.com. Viitattu 29.4.2022. (englanniksi)
  37. ↑ Announcing HAProxy 2.6 HAProxy Blog. 31 May 2022.
  38. ↑ QUIC Implementation in HAProxy HAProxyConf video presentation.