HTTP/3
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/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]
Toteutukset
[muokkaa | muokkaa wikitekstiÀ]Asiakasohjelma
[muokkaa | muokkaa wikitekstiÀ]| 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] |
Kirjastot
[muokkaa | muokkaa wikitekstiÀ]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++ | |
| Cronet | KyllÀ | KyllÀ | C++ | |
| .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]
LĂ€hteet
[muokkaa | muokkaa wikitekstiĂ€]- â Cerf, Vinton Yogen, Dalal Sunshine, Carl: SPECIFICATION OF INTERNET TRANSMISSION CONTROL PROGRAM datatracker.ietf.org. joulukuu 1974. Viitattu 28.2.2024.
- â What is HTTP/3? Cloudflare. Arkistoitu 4 July 2022. Viitattu 12 July 2022.
- â HTTP/3 datatracker.ietf.org. 6 June 2022. Viitattu 6.6.2022. (englanniksi)
- â 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.
- â HTTP/3 is Fast Request Metrics. Viitattu 1.7.2022. (englanniksi)
- 1 2 3 4 5 "HTTP/3" | Can I use... Support tables for HTML5, CSS3, etc canIuse.com. Viitattu 7.1.2024.
- â Usage of HTTP/3 for websites World Wide Web Technology Surveys. W3Techs. Viitattu 2 February 2024.
- â Enabling QUIC in tip-of-tree groups.google.com. Viitattu 8.4.2021.
- 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)
- 1 2 Safari 14 Release Notes developer.apple.com. Viitattu 4 December 2020.
- â HTTP-over-QUIC to be renamed HTTP/3 | ZDNet. MÀÀritĂ€ julkaisu!12 November 2018. Artikkelin verkkoversio. (englanniksi)
- â Identifying our deliverables mailarchive.ietf.org. Viitattu 28.2.2024.
- â Hypertext Transfer Protocol Charter ietf.org. Viitattu 2.9.2020.
- â Enabling QUIC in tip-of-tree groups.google.com. Viitattu 8.4.2021.
- â Daniel: Daniel Stenberg announces HTTP/3 support in Firefox Nightly Twitter. Viitattu 5 November 2019.
- â Cimpanu: Cloudflare, Google Chrome, and Firefox add HTTP/3 support ZDNet. 26 Sep 2019. Viitattu 27 Sep 2019.
- â Release Notes for Safari Technology Preview 104 webkit.org. 8 April 2020. Viitattu 7 August 2020.
- â Ng: Apple's Safari Adds Support for HTTP3 in iOS 14 and macOS 11 iphoneincanada.ca. 23 June 2020. Viitattu 25 June 2021.
- â HTTPS RR MDN. Mozilla. Viitattu 25.10.2022.
- â Firefox 92 for developers 7 September 2021. Mozilla Corporation. Viitattu 25.10.2022.
- â Feature: HTTP->HTTPS redirect for HTTPS DNS records Google Inc.. Viitattu 25.10.2022.
- â Patrick Mevzek: What's the use case of SVCB (type 65, service binding) RR 24 August 2021. Stack Exchange Inc.. Viitattu 25.10.2022.
- â Enabling QUIC in tip-of-tree groups.google.com. Viitattu 9.4.2021.
- â Firefox Release Owners - MozillaWiki wiki.mozilla.org. Viitattu 9.4.2021.
- â Jen Simmons: HTTP/3 support shipped in Safari 14.0 GitHub. 4.4.2023. Viitattu 7.4.2023.
- â QUIC Implementations GitHub. Viitattu 8.4.2021. (englanniksi)
- â First HTTP/3 with curl | daniel.haxx.se daniel.haxx.se. 5.8.2019. Viitattu 28.2.2024. (englanniksi)
- â curl/docs/HTTP3.md at master · curl/curl GitHub. Viitattu 28.2.2024. (englanniksi)
- â MsQuic is Open Source TECHCOMMUNITY.MICROSOFT.COM. Viitattu 28.2.2024. (englanniksi)
- â Sam Spencer: HTTP/3 support in .NET 6 .NET Blog. 17.9.2021. Viitattu 28.2.2024. (englanniksi)
- â LiteSpeed Web Server Release Log - LiteSpeed Technologies www.litespeedtech.com. âEnable HTTP/3 v1 by default.â Viitattu 12.2.2022.
- â Release 2.6.0 · caddyserver/caddy Github. 22.9.2022. Viitattu 20.9.2022. (englanniksi)
- â Introducing a Technology Preview of NGINX Support for QUIC and HTTP/3 NGINX. 10.6.2020. Viitattu 11.6.2020. (englanniksi)
- â Binary Packages Now Available for the Preview NGINX QUIC+HTTP/3 Implementation NGINX. 8.2.2023. Viitattu 30.3.2023. (englanniksi)
- â Experiment with HTTP/3 using NGINX and quiche The Cloudflare Blog. 17.10.2019. Viitattu 9.11.2019. (englanniksi)
- â Tratcher: Use ASP.NET Core with HTTP/3 on IIS docs.microsoft.com. Viitattu 29.4.2022. (englanniksi)
- â Announcing HAProxy 2.6 HAProxy Blog. 31 May 2022.
- â QUIC Implementation in HAProxy HAProxyConf video presentation.