HTTP/3 - HTTP/3

HTTP/3
Internationaler Standard Hypertext Transfer Protocol Version 3 (HTTP/3) (Entwurf)
Entwickelt von IETF
Eingeführt Internet Draft ab Juli 2021
Webseite https://quicwg.org/base-drafts/draft-ietf-quic-http.html

HTTP/3 ist neben HTTP/1.1 und HTTP/2 die dritte und kommende Hauptversion des Hypertext Transfer Protocol, das zum Austausch von Informationen im World Wide Web verwendet wird .

Die HTTP-Semantik ist über alle Versionen hinweg konsistent: Die gleichen Anforderungsmethoden , Statuscodes und Nachrichtenfelder gelten normalerweise für alle Versionen. Die Unterschiede liegen in der Abbildung dieser Semantik auf zugrunde liegende Transporte. Sowohl HTTP/1.1 als auch HTTP/2 verwenden TCP als ihren Transport. HTTP / 3 verwendet QUIC , ein Transportschicht - Netzwerkprotokoll , das verwendet Benutzerraum Überlastungssteuerung über das User Datagram Protocol (UDP). Der Wechsel zu QUIC zielt darauf ab, ein Hauptproblem von HTTP/2 zu beheben, das als " Head-of-Line-Blocking " bezeichnet wird: Da die Parallelität des Multiplexing von HTTP/2 für die Verlustwiederherstellungsmechanismen von TCP nicht sichtbar ist , verursacht ein verlorenes oder neu geordnetes Paket alle aktiven Transaktionen, um einen Stillstand zu erfahren, unabhängig davon, ob diese Transaktion durch das verlorene Paket beeinträchtigt wurde. Da QUIC natives Multiplexing bietet, wirken sich verlorene Pakete nur auf die Streams aus, bei denen Daten verloren gegangen sind.

Mit Stand Oktober 2021 ist das HTTP/3-Protokoll noch offiziell ein Internet Draft , wird aber bereits von 73 % der laufenden Webbrowser und laut W3Techs von 22 % der Top-10-Millionen-Websites unterstützt. Es wird seit April 2020 von Google Chrome (einschließlich Chrome für Android und darauf basierendem Microsoft Edge ) und seit Mai 2021 von Mozilla Firefox unterstützt . Safari 14 (auf macOS Big Sur und iOS 14 ) hat das Protokoll ebenfalls implementiert aber die Unterstützung ist hinter einem Feature-Flag versteckt .

Geschichte

HTTP/3 ist ein Internet-Entwurf, der von der QUIC-Arbeitsgruppe angenommen wurde. Der ursprüngliche Vorschlag wurde "HTTP/2 Semantics Using The QUIC Transport Protocol" genannt und später "Hypertext Transfer Protocol (HTTP) over QUIC" genannt.

Am 28. Oktober 2018 schlug Mark Nottingham, Vorsitzender der IETF- HTTP- und QUIC-Arbeitsgruppen, in einer Mailinglisten-Diskussion vor, HTTP-over-QUIC in HTTP/3 umzubenennen, um es „eindeutig als eine weitere Bindung der HTTP-Semantik an das Wire-Protokoll zu identifizieren“. ... damit die Leute die Trennung von QUIC verstehen". Nottinghams Vorschlag wurde wenige Tage später von anderen IETF-Mitgliedern angenommen. Die HTTP-Arbeitsgruppe soll die QUIC-Arbeitsgruppe beim Design von HTTP/3 unterstützen und nach der Veröffentlichung die Verantwortung für die Wartung übernehmen.

Unterstützung für HTTP/3 wurde Chrome (Canary Build) im September 2019 hinzugefügt und erreichte dann schließlich stabile Builds, wurde jedoch durch ein Feature-Flag deaktiviert. Es wurde im April 2020 standardmäßig aktiviert. Firefox hat im November 2019 die Unterstützung für HTTP/3 über ein Feature-Flag hinzugefügt und im April 2021 damit begonnen, es standardmäßig in Firefox 88 zu aktivieren. Experimentelle Unterstützung für HTTP/3 wurde im April zu Safari Technology Preview hinzugefügt 8, 2020 und war in Safari 14 enthalten, das mit iOS 14 und macOS 11 ausgeliefert wird , aber standardmäßig immer noch deaktiviert ist.

Implementierungen

Klient

Browser

Browserunterstützung für HTTP/3
Browser Version implementiert (standardmäßig deaktiviert) Ausgelieferte Version (standardmäßig aktiviert)
Chrom Stabiler Aufbau (79) Dezember 2019 87 April 2020
Feuerfuchs Stabiler Aufbau (72.0.1) Januar 2020 88 April 2021
Safari Safari-Technologievorschau 104 April 2020
Kante 87 April 2020

Bibliotheken

Open-Source- Bibliotheken , die Client- oder Serverlogik für QUIC und HTTP/3 implementieren, umfassen

Bibliotheken, die HTTP/3 . implementieren
Name Klient Server Programmiersprache Gesellschaft Repository
lsquic Jawohl Jawohl C LiteSpeed https://github.com/litespeedtech/lsquic
nghttp3 Jawohl Jawohl C https://github.com/ngtcp2/nghttp3
h2o Nein Jawohl C https://github.com/h2o/h2o
libcurl Jawohl Nein C https://github.com/curl/curl
MsQuic Jawohl Jawohl C Microsoft https://github.com/microsoft/msquic
Proxygen Jawohl Jawohl C++ Facebook https://github.com/facebook/proxygen#quic-and-http3
Cronet Jawohl Jawohl C++ Google https://github.com/chromium/chromium/tree/master/net/quic
Quic.NET Jawohl Jawohl C# https://github.com/Vect0rZ/Quic.NET
schnell gehen Jawohl Jawohl gehen https://github.com/lucas-clemente/quic-go
http3 Jawohl Jawohl Haskell https://github.com/kazu-yamamoto/http3
Kwik Jawohl Jawohl Java https://github.com/ptrd/kwik
Flupke Jawohl Nein Java https://bitbucket.org/pjtr/flupke
aioquic Jawohl Jawohl Python https://github.com/aiortc/aioquic
http Jawohl Jawohl Rost https://github.com/hyperium/http
Quiche Jawohl Jawohl Rost Wolkenflare https://github.com/cloudflare/quiche
neqo Jawohl Jawohl Rost Mozilla https://github.com/mozilla/neqo
quinn Jawohl Jawohl Rost https://github.com/quinn-rs/quinn

Server

  • LiteSpeed ​​Webserver (und OpenLiteSpeed) unterstützt HTTP/3 Draft 32.
  • Der Caddy -Webserver bietet ab 2.0 Beta 17 experimentelle Unterstützung für HTTP/3.
  • An der Nginx- Unterstützung für HTTP/3 wird gearbeitet. Eine Technologievorschau von nginx mit HTTP/3-Unterstützung wurde im Juni 2020 veröffentlicht.
  • Cloudflare verteilt einen Patch für nginx, der die Quiche-HTTP/3-Bibliothek darin integriert.

Es gibt eine Reihe von Bibliotheken, die einen älteren Entwurf des Protokolls oder Googles Versionen von QUIC implementieren (zB Q046 in Chrome 76 verwendet).

Siehe auch

Verweise

Externe Links