HTTP/3

Http/3
Internationaler Standard Bischof Mike; Akamai. "RFC 9114: HTTP/3". RFC-Editor. Abgerufen 6. Juni 2022. (HTTP/3 verwendet auch die Fertigstellung Quic Protokoll, beschrieben in RFC 9000 und verwandten RFCs wie RFC 9001)
Entwickelt von Ietf
Eingeführt RFC 9114
Webseite https://quicwg.org/

Http/3 ist die dritte Hauptversion der Hypertext Transfer Protocol Wird verwendet, um Informationen auf dem auszutauschen Weltweites Netz, ergänzt die weit verbreiteten Http/1.1 und Http/2. Im Gegensatz zu früheren Versionen, die sich auf die etablierten stützten TCP (1974 veröffentlicht),,[1] HTTP/3 verwendet Quic, a Multiplexed Transportprotokoll aufgebaut UDP.[2] Am 6. Juni 2022 veröffentlichte IETF HTTP/3 als a Vorgeschlagener Standard in RFC 9114.[3]

Protokollstapel von HTTP/3 im Vergleich zu HTTP/1.1 und HTTP/2

HTTP/3 verwendet ähnliche Semantik im Vergleich zu früheren Überarbeitungen des Protokolls, einschließlich derselben Anfordern von Methoden, Statuscodes, und Nachrichtenfelder, aber codiert sie und pflegt den Sitzungszustand anders. Teilweise aufgrund der Einführung von Quic durch das Protokoll hat HTTP/3 im Vergleich zu früheren Versionen jedoch schneller als bei HTTP/1.1 (was bleibt die einzige HTTP Version von vielen Websites bereitgestellt).[4][5]

HTTP/3 wird bereits von 75% der Webbrowser (und 83% des "Tracked Desktop" -Webbrowsers) unterstützt.[6] und 26% der 10 Millionen Websites.[7] Es wurde von unterstützt von Chrom (und abgeleitete Projekte einschließlich Google Chrome, Microsoft Edge, Samsung Internet, und Oper)[8] seit April 2020 und von Mozilla Firefox Seit Mai 2021.[6][9] Safari 14 (on Macos Big Sur und iOS 14) hat auch das Protokoll implementiert, aber es ist es standardmäßig deaktiviert (auch in Safari 15).[10]

Geschichte

Http/3 stammt aus einem Internetentwurf von der Quic -Arbeitsgruppe übernommen. Der ursprüngliche Vorschlag wurde "HTTP/2 -Semantik unter Verwendung des Quic -Transportprotokolls" bezeichnet.[11] und später in "Hypertext Transfer Protocol (HTTP) über Quic umbenannt".[12]

Am 28. Oktober 2018 in einer Mailinglisten -Diskussion Mark Nottingham, Vorsitzender des Ietf HTTP- und Quic-Arbeitsgruppen, die vorgeschlagen wurden, HTTP-Over-Quic in HTTP/3 umzubenennen, um "es eindeutig als eine weitere Bindung der HTTP-Semantik an das Drahtprotokoll zu identifizieren [...], damit die Menschen ihre Trennung von Quic verstehen".[13] Nottinghams Vorschlag wurde einige Tage später von IETF -Mitmenschen angenommen. Die HTTP -Arbeitsgruppe wurde gechartert, um die Quic -Arbeitsgruppe während des Entwurfs von HTTP/3 zu unterstützen, und übernahm dann die Verantwortung für die Wartung nach der Veröffentlichung.[14]

Die Unterstützung für HTTP/3 wurde hinzugefügt Chrom (Canary Build) im September 2019 und erreichte schließlich stabile Builds, wurde jedoch durch eine Feature -Flagge deaktiviert. Es wurde standardmäßig im April 2020 aktiviert.[15] Firefox fügte Unterstützung für HTTP/3 im November 2019 durch eine Feature -Flagge hinzu[6][16][17] und begann, es standardmäßig im April 2021 in Firefox 88 zu aktivieren.[6][9] Experimentelle Unterstützung für HTTP/3 wurde am 8. April 2020 zur Vorschau der Safari -Technologie hinzugefügt[18] und wurde in Safari 14 enthalten, mit denen er mitschifft iOS 14 und MacOS 11,[10] ist jedoch standardmäßig noch deaktiviert.[19] Die Situation blieb mit Safari 15 gleich.

Vergleich mit http/1.1 und http/2

Die HTTP -Semantik sind über Versionen hinweg konsistent: dasselbe Anfordern von Methoden, Statuscodes, und Nachrichtenfelder sind in der Regel für alle Versionen anwendbar. Die Unterschiede sind bei der Zuordnung dieser Semantik auf zugrunde liegende Transporte. Beide Http/1.1 und Http/2 verwenden TCP als ihr Transport. HTTP/3 verwendet Quic, a Transportschicht Netzwerkprotokoll was verwendet Benutzerraum Überlastungskontrolle über dem User Datagram Protocol (UDP). Der Wechsel zu Quic zielt darauf ab, ein Hauptproblem von HTTP/2 aufrechtzuerhalten "zu beheben."Zeilenblockierung": Weil die parallele Natur des Multiplexing von HTTP/2 für TCPs nicht sichtbar ist Verlustwiederherstellungsmechanismen, ein verlorener oder neu angeordneter Paket verursacht alle aktiv Transaktionen einen Stand zu erleben, unabhängig davon, ob diese Transaktion vom verlorenen Paket betroffen war. Da Quic native Multiplexe bietet, wirken sich verlorene Pakete nur auf die Streams aus, in denen Daten verloren gegangen sind.

Implementierungen

Klient

Browser

Browserunterstützung für HTTP/3
Browser Version implementiert (standardmäßig deaktiviert) Version versendet (standardmäßig aktiviert) Kommentar
Chrom Stabiler Build (79) Dezember 2019 87[6] April 2020[20] Frühere Versionen implementierten andere Entwürfe von Quic
Rand Stabiler Build (79) Dezember 2019 87 April 2020 Edge 79 war die erste Version, die auf Chrom basierte
Feuerfuchs Stabiler Build (72.0.1) Januar 2020 88[9] April 2021[21]
Safari Safari Technology Preview 104 April 2020 - - - -

Bibliotheken

Open Source Bibliotheken Das implementieren die Client- oder Serverlogik für Quic und HTTP/3 enthalten[22]

Bibliotheken implementieren HTTP/3
Name Klient Server Programmiersprache Gesellschaft Repository
lsquic Ja Ja C LiteSpeed https://github.com/litespeedtech/lsquic
nghttp3 Ja Ja C https://github.com/ngtcp2/nghttp3
H2O Nein Ja C https://github.com/h2o/h2o
libcurl[23][24] Ja Nein C https://github.com/curl/curl
Msquic[25] Ja Ja C Microsoft https://github.com/microsoft/msquic
Proxygen Ja Ja C ++ Facebook https://github.com/facebook/proxygen#quic-and-http3
Cronet Ja Ja C ++ Google https://github.com/chromium/chromium/tree/main/net/quic
.NETZ[26] Ja Ja C# (unter Verwendung von msquic)[27] Microsoft https://github.com/dotnet
Quic-Go Ja Ja gehen https://github.com/lucas-clemente/quic-go
http3 Ja Ja Haskell https://github.com/kazu-yamamoto/http3
Kwik Ja Ja Java https://github.com/ptrd/kwik
Flupke Ja Nein Java https://bitbucket.org/pjtr/flupke
Aioquic Ja Ja Python https://github.com/aiortc/aioquic
Quiche Ja Ja Rost Wolkenflare https://github.com/cloudflare/quiche
Neqo Ja Ja Rost Mozilla https://github.com/mozilla/neqo
Quinn Ja Ja Rost https://github.com/quinn-rs/quinn

Server

  • Am 7. Juni 2021, Leenspeed Web Server (und OpenLiteSpeed) 6.0.2 wurde veröffentlicht und wurde standardmäßig die erste Version ermöglicht, die HTTP/3 ermöglichte.[28]
  • Das Caddie Der Webserver bietet eine experimentelle Unterstützung für HTTP/3 ab 2.0 Beta 17.[29]
  • Nginx Die Unterstützung für HTTP/3 wird daran gearbeitet. Eine technologische Vorschau von NGINX mit HTTP/3 -Unterstützung wurde im Juni 2020 veröffentlicht.[30]
  • CloudFlare verteilt einen Patch für NGINX, der die Quiche HTTP/3 -Bibliothek in die IT integriert.[31]
  • Microsoft IIS Die Unterstützung für HTTP/3 wird mit Windows Server 2022/Windows 11 nativ aktiviert.[32]

Siehe auch

Verweise

  1. ^ Cerf, v.; Dalal, Y.; Sunshine, C. (Dezember 1974). "Spezifikation des Internetübertragungskontrollprogramms". Ietf: RFC0675. doi:10.17487/rfc0675.
  2. ^ "Was ist HTTP/3?". Wolkenflare. Archiviert Aus dem Original am 4. Juli 2022. Abgerufen 12. Juli 2022.
  3. ^ "Http/3". Abgerufen 6. Juni 2022.
  4. ^ Perna, Gianluca; Trevisan, Martino; Giordano, Danilo; Drago, Idilio (1. April 2022). "Ein erster Blick auf die Akzeptanz und Leistung von HTTP/3". Computerkommunikation. 187: 115–124. doi:10.1016/j.com.2022.02.005. ISSN 0140-3664.
  5. ^ "Http/3 ist schnell". Metriken anfordern. Abgerufen 1. Juli 2022.
  6. ^ a b c d e "Kann ich ... Supporttabellen für HTML5, CSS3 usw. verwenden". caniuse.com. Abgerufen 31. Juli 2022.
  7. ^ "Verwendung von HTTP/3 für Websites". Umfragen der World Wide Web Technology. W3techs. Abgerufen 31. Juli 2022.
  8. ^ "Aktivieren Sie Quic in Tipp-of-Tree". Groups.google.com. Abgerufen 8. April 2021.
  9. ^ a b c Damjanovic, Dragana (16. April 2021). "Quic und HTTP/3 unterstützen jetzt in Firefox Nightly und Beta". Mozilla Hacks - Der Webentwicklerblog. Abgerufen 17. April 2021.{{}}: CS1 Wartung: URL-Status (Link)
  10. ^ a b "Safari 14 Versionsnotizen". Entwickler.apple.com. Abgerufen 4. Dezember 2020.
  11. ^ Shade, Robbie (8. Juli 2016). HTTP/2 -Semantik unter Verwendung des Quic -Transportprotokolls. Ietf. I-D Draft-Shade-quic-http2-Mapping.
  12. ^ Cimpanu, Catalin (12. November 2018). ". ZDNET. Abgerufen 12. November 2018.
  13. ^ Nottingham, Mark (28. Oktober 2018). "Identifizieren unserer Ergebnisse". IETF Mail -Archiv.
  14. ^ "Hypertext Transfer Protocol Charter". ietf.org. Abgerufen 2. September 2020.
  15. ^ "Aktivieren Sie Quic in Tipp-of-Tree". Groups.google.com. Abgerufen 8. April 2021.
  16. ^ Daniel, Stenberg. "Daniel Stenberg kündigt die HTTP/3 -Unterstützung in Firefox nächtliches an.". Twitter. Abgerufen 5. November 2019.
  17. ^ Cimpanu, Catalin (26. September 2019). "CloudFlare, Google Chrome und Firefox fügen HTTP/3 -Unterstützung hinzu". ZDNET. Abgerufen 27. September 2019.
  18. ^ "Versionshinweise für Safari Technology Preview 104". webkit.org. 8. April 2020. Abgerufen 7. August 2020.
  19. ^ NG, Gary (23. Juni 2020). "Apples Safari fügt Unterstützung für HTTP3 in iOS 14 und macOS 11 hinzu.". iPhonecanada.ca. Abgerufen 25. Juni 2021.
  20. ^ "Aktivieren Sie Quic in Tipp-of-Tree". Groups.google.com. Abgerufen 9. April 2021.
  21. ^ "Firefox Release -Besitzer - Mozillawiki". Wiki.mozilla.org. Abgerufen 9. April 2021.
  22. ^ "Quic -Implementierungen". GitHub. Abgerufen 8. April 2021.{{}}: CS1 Wartung: URL-Status (Link)
  23. ^ "Erstes HTTP/3 mit Curl". Daniel Stenberg. 5. August 2019. Abgerufen 2. Oktober 2019.
  24. ^ "Curl Http3 Wiki". Daniel Stenberg. 26. September 2019. Abgerufen 2. Oktober 2019.
  25. ^ "MSquic ist Open Source". 28. April 2020. Abgerufen 28. April 2020.
  26. ^ "HTTP/3 Support in .net 6". 17. September 2021. Abgerufen 17. September 2021.
  27. ^ "HTTP/3 Support in .net 6". .NET Blog. 17. September 2021. Abgerufen 12. Januar 2022.
  28. ^ "Leenspeed Web Server Release -Protokoll - Leenspeed Technologies". www.litespeedtech.com. Abgerufen 12. Februar 2022. Aktivieren Sie standardmäßig HTTP/3 V1.
  29. ^ "Release 2.0 Beta 17 · Caddyserver/Caddy". Github. 13. März 2020. Abgerufen 11. August 2020.
  30. ^ "Einführung einer technologischen Vorschau der NGINX -Unterstützung für Quic und HTTP/3". Nginx. 10. Juni 2020. Abgerufen 11. Juni 2020.
  31. ^ "Experimentieren Sie mit HTTP/3 mit Nginx und Quiche". Der Cloudflare -Blog. 17. Oktober 2019. Abgerufen 9. November 2019.
  32. ^ Sparfer. "Verwenden Sie ASP.Net Core mit HTTP/3 auf IIS". docs.microsoft.com. Abgerufen 29. April 2022.

Externe Links