Recently, Pinterest move to HTTP 3.
HTTP/3 is based on QUIC (Quick UDP Internet Connections), and thus UDP, rather than transmission control protocol (TCP), and TCP’s limitations are what caused my streaming video problems.
Both HTTP/1.1 and HTTP/2 over TCP have Head-of-Line blocking issues, where “one lost packet in the stream makes all streams wait until that package is re-transmitted and received.”
TCP connections have redundant steps when a client reconnects with a known server when using transport layer security (TLS) (though this can be avoided by using TLS 1.3, which QUIC adopts).
The use of QUIC means that HTTP/3 relies on the User Datagram Protocol (UDP), not the Transmission Control Protocol (TCP). Switching to UDP will enable faster connections and a faster user experience when browsing online.
HTTP/3 is the upcoming third major version of the Hypertext Transfer Protocol (HTTP) used to communicate between web servers and clients. It is the successor to HTTP/2 and HTTP/1.1, which are the current versions in use.
The primary goal of HTTP/3 is to improve the performance of HTTP communication by reducing latency and increasing security. It does this by replacing the existing TCP protocol used in HTTP/2 with the new QUIC protocol. QUIC is a transport layer protocol that uses User Datagram Protocol (UDP) instead of TCP, which helps to reduce the overhead caused by TCP's slow-start mechanism.
HTTP/3 also includes features like improved header compression, server push, and early data, which can further improve the performance of web communication.
Additionally, HTTP/3 uses TLS 1.3 as the default security protocol, which provides better security and privacy than previous versions of TLS.
One of the benefits of HTTP/3 is that it can improve web performance, especially on mobile devices and in environments with poor network conditions. HTTP/3's use of UDP protocol helps to reduce the number of round trips required to establish a connection, which improves the overall latency.
However, it's worth noting that HTTP/3 is still a relatively new protocol, and not all web servers and clients support it yet. As with any new technology, there may be bugs and compatibility issues that need to be addressed before it becomes widely adopted.
In summary, HTTP/3 is the upcoming third major version of the Hypertext Transfer Protocol (HTTP), designed to improve web performance and security by using the QUIC protocol and TLS 1.3. While it has the potential to offer significant benefits, its adoption is still in progress, and it may take some time before it becomes the standard protocol for web communication.
How Do to Get Started with HTTP/3?
Where Is HTTP/3 Supported?
HTTP/3 is supported by two of the three major browsers, the most recognized mobile app languages, and some server-side languages, as well as the largest content-delivery networks. But there are caveats.
Protocol Stack of HTTP/3 compared to HTTP/1.1 and HTTP/2
Libraries Open-source libraries that implement client or server logic for QUIC and HTTP/3 include. You can use one of these libraries to create an http3 server and client.
Name | Client | Server | Programming language | Company | Repository |
---|---|---|---|---|---|
lsquic | Yes | Yes | C | ||
nghttp3 | Yes | Yes | C | ||
No | Yes | C | |||
Yes | No | C | |||
Yes | Yes | C | |||
proxygen | Yes | Yes | C++ | ||
Cronet | Yes | Yes | C++ | ||
Yes | Yes | C# (using MsQuic)[34] | |||
quic-go | Yes | Yes | Go | ||
http3 | Yes | Yes | Haskell | ||
Kwik | Yes | Yes | Java | ||
Flupke | Yes | Yes | Java | ||
aioquic | Yes | Yes | Python | ||
quiche | Yes | Yes | Rust | ||
neqo | Yes | Yes | Rust | ||
quinn | Yes | Yes | Rust | ||
s2n-quic | Yes | Yes | Rust |