HTTP/3 is the upcoming third major version of the Hypertext Transfer Protocol used to exchange information on the World Wide Web, succeeding HTTP/2.[1][2] HTTP/3 is a draft based on a previous RFC draft, then named "Hypertext Transfer Protocol (HTTP) over QUIC".[3] QUIC is a transport layer network protocol developed initially by Google where user space congestion control is used over the User Datagram Protocol (UDP).

HTTP/3
International standardHypertext Transfer Protocol Version 3 (HTTP/3) (draft)
Developed byIETF
IntroducedInternet-Draft as of December 2019

On 28 October 2018 in a mailing list discussion, Mark Nottingham, Chair of the IETF HTTP and QUIC Working Groups, made the official request to rename HTTP-over-QUIC as HTTP/3 to "clearly identify it as another binding of HTTP semantics to the wire protocol ... so people understand its separation from QUIC" and to pass its development from the QUIC Working Group to the HTTP Working Group after finalizing and publishing the draft.[4] Nottingham's proposal was accepted by fellow IETF a few days later in November 2018.[3]

Support for HTTP/3 was added to Chrome (Canary build) in September 2019, and while HTTP/3 is not yet on by default in any browser, by 2020 HTTP/3 has non-default support in stable versions of Chrome and Firefox and can be enabled.[5][6][7]

ImplementationsEdit

BrowserEdit

Browser Version implemented Date
Chrome Stable build (79) December 2019
Firefox Stable build (72.0.1) January 2020

LibrariesEdit

Open source libraries that implement client or server logic for QUIC and HTTP/3 are available.[8]

Name Programming language Company Repository
quiche Rust Cloudflare https://github.com/cloudflare/quiche
neqo Rust Mozilla https://github.com/mozilla/neqo
proxygen C++ Facebook https://github.com/facebook/proxygen#quic-and-http3
C++ Google https://github.com/chromium/chromium/tree/master/net/quic
lsquic C LiteSpeed https://github.com/litespeedtech/lsquic
Flupke Java https://bitbucket.org/pjtr/flupke
h2o C https://github.com/h2o/h2o
libcurl[9][10] C https://github.com/curl/curl
aioquic Python https://github.com/aiortc/aioquic
quic-go Go https://github.com/lucas-clemente/quic-go

Cloudflare's quiche library can be used as a patch to nginx.[11] Support for HTTP/3 is slated for the 1.17 release of nginx.[12]

There are a number of libraries that implement an older draft of the protocol or Google's versions of QUIC (e.g. Q046 used in Chrome 76), such as nghttp3.

See alsoEdit

ReferencesEdit

  1. ^ Bishop, M. (12 December 2019). "Hypertext Transfer Protocol Version 3 (HTTP/3)". quicwg.org. Retrieved 12 December 2019.
  2. ^ Bishop, Mike (4 November 2019). Hypertext Transfer Protocol Version 3 (HTTP/3). IETF. I-D draft-ietf-quic-http-24.
  3. ^ a b Cimpanu, Catalin (12 November 2018). "HTTP-over-QUIC to be renamed HTTP/3 | ZDNet". ZDNet. Retrieved 12 November 2018.
  4. ^ Nottingham, Mark (28 October 2018). "Identifying our deliverables". IETF Mail Archive.
  5. ^ "Can I use... Support tables for HTML5, CSS3, etc". caniuse.com. Retrieved 19 January 2020.
  6. ^ Daniel, Stenberg. "Daniel Stenberg announces HTTP/3 support in Firefox Nightly". Twitter. Retrieved 5 November 2019.
  7. ^ Cimpanu, Catalin (26 September 2019). "Cloudflare, Google Chrome, and Firefox add HTTP/3 support". ZDNet. Retrieved 27 September 2019.
  8. ^ Internet-Drafts that make up the base QUIC specification: quicwg/base-drafts, IETF QUIC WG, 12 November 2019, retrieved 13 November 2019
  9. ^ "First HTTP/3 with curl". Daniel Stenberg. 5 August 2019. Retrieved 2 October 2019.
  10. ^ "cURL HTTP3 wiki". Daniel Stenberg. 26 September 2019. Retrieved 2 October 2019.
  11. ^ "Experiment with HTTP/3 using NGINX and quiche". The Cloudflare Blog. 17 October 2019. Retrieved 9 November 2019.
  12. ^ "Milestone nginx-1.17". trac.nginx.org. Retrieved 9 November 2019.

External linksEdit