This article provides insufficient context for those unfamiliar with the subject.(November 2019)
|International standard||Hypertext Transfer Protocol Version 3 (HTTP/3) (draft)|
|Introduced||Internet Draft as of June 2021[update]|
HTTP semantics are consistent across versions: the same request methods, status codes, and message fields are typically applicable to all versions. The differences are in the mapping of these semantics to underlying transports. Both HTTP/1.1 and HTTP/2 use TCP as their transport. HTTP/3 uses QUIC, a transport layer network protocol which uses user space congestion control over the User Datagram Protocol (UDP). The switch to QUIC aims to fix a major problem of HTTP/2 called "head-of-line blocking": because the parallel nature of HTTP/2's multiplexing is not visible to TCP's loss recovery mechanisms, a lost or reordered packet causes all active transactions to experience a stall regardless of whether that transaction was impacted by the lost packet. Because QUIC provides native multiplexing, lost packets only impact the streams where data has been lost.
As of June 2021[update], the HTTP/3 protocol is still officially an Internet Draft but is already supported by 71% of running web browsers and, according to W3Techs, 19.6% of the top 10 million websites. It has been supported by Google Chrome (including Chrome for Android, and Microsoft Edge, which is based on it) since April 2020 and by Mozilla Firefox since May 2021.Safari 14 (on macOS Big Sur) has also implemented the protocol but support is hidden behind a feature flag.
HTTP/3 is an Internet Draft adopted by the QUIC working group. The original proposal was named "HTTP/2 Semantics Using The QUIC Transport Protocol", and later named "Hypertext Transfer Protocol (HTTP) over QUIC".
On 28 October 2018 in a mailing list discussion, Mark Nottingham, Chair of the IETF HTTP and QUIC Working Groups, proposed renaming HTTP-over-QUIC to HTTP/3, to "clearly identify it as another binding of HTTP semantics to the wire protocol ... so people understand its separation from QUIC". Nottingham's proposal was accepted by fellow IETF members a few days later. The HTTP working group is chartered to assist the QUIC working group during the design of HTTP/3, then assume responsibility for maintenance after publication.
Support for HTTP/3 was added to Chrome (Canary build) in September 2019 and then eventually reached stable builds, but was disabled by a feature flag. It was enabled by default in April 2020. Firefox added support for HTTP/3 in November 2019 through a feature flag and started enabling it by default in April 2021 in Firefox 88. Experimental support for HTTP/3 was added to Safari Technology Preview on April 8, 2020 and was slated to be officially released with Safari 14 that ships with macOS 11, but is still disabled by default.
|Browser||Version implemented (disabled by default)||Version shipped (enabled by default)|
|Chrome||Stable build (79)||December 2019||87||April 2020|
|Firefox||Stable build (72.0.1)||January 2020||88||April 2021|
|Safari||Safari Technology Preview 104||April 2020|
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.
Edited: 2021-06-18 12:38:12