This is the third day of my participation in Gwen Challenge

  • What is HTTP/3, and Why Does it Matter?
  • Original article by AsyncBanana
  • The Nuggets translation Project
  • Permanent link to this article: github.com/xitu/gold-m…
  • Translator: keepmovingljzy
  • Proofreader: Chorer, Usualminds

What is HTTP/3 and why is it important?

When you study the Internet and the technology behind it, you may come across this term: HTTP. HTTP or Hypertext Transfer Protocol, the backbone of the network, is a common protocol for transmitting text data. You must have used it, because when you read about HTTP on a website, that website uses the HTTP network protocol.

Introduction to the

HTTP History

The first official release of HTTP was HTTP/0.9. Tim Berners-Lee created HTTP in 1989 and named it HTTP/0.9 in 1991. HTTP/0.9 has limited functionality and can only accomplish some basic tasks. It can’t return anything other than web pages and doesn’t support cookies and other modern features. HTTP/1.0 was released in 1996, bringing new features such as POST requests and sending things other than web pages. However, it was a far cry from today’s HTTP protocol. HTTP/1.1 was released in 1997 and revised in 1999 and 2007, respectively. It brings many new features such as cookies and long connections. Finally, in 2015, HTTP/2 was released, bringing a huge performance boost while also bringing SSE server push functionality and allowing multiple requests to be sent at once. HTTP/2 is still relatively new, with less than half of all web sites using it.

HTTP/3: the latest version of HTTP

HTTP/3, also known as QUIC-based HTTP, dramatically changes HTTP. Traditional HTTP is done over TCP (Transport Layer Control Protocol). Yet TCP was developed in 1974, in the early days of the Internet. When TCP was first invented, its authors did not realize how fast the network would evolve. Due to TCP’s obsolescence, it once limited HTTP in terms of speed and security. But thanks to HTTP/3, HTTP is no longer restricted. Instead of TCP, HTTP/3 uses a new protocol called QUIC (pronounced “quick”) developed by Google in 2012. This introduces many new features to HTTP.

features

Faster multiplexing requests

Prior to HTTP/2, browsers could only send one request to the server at a time. This makes the site load significantly slower because the browser only loads one resource at a time, such as CSS or JavaScript. HTTP/2 introduced the ability to load multiple resources at once, but TCP was not designed for this. If one of the requests fails, TCP will cause the browser to re-initiate all requests. HTTP/2 is based on TCP, but uses frames and streams. If one of the request frames fails, TCP tells the browser to reissue the request. HTTP/3 does not have this problem because TCP was removed from HTTP/3 in favor of QUIC. For HTTP/3, the browser simply reinitiates the failed request. As a result, HTTP/3 is faster and more reliable.

Faster encryption

HTTP/3 optimizes the handshake process for HTTP requests from encrypted browsers. QUIC combines the initial connection with the TLS handshake, making it secure and faster by default.

implementation

standardized

At the time of this writing, HTTP/3 and QUIC have not been standardized. An IETF working group is currently working on a draft of a standardized QUIC. The version of QUIC for HTTP/3 is slightly modified to use TLS instead of Google’s encryption algorithm, but it has the same advantages.

Browser support

Currently, Chrome supports HTTP/3 by default because Google created the QUIC protocol and HTTP proposals based on QUIC. Firefox 88 and later also support this protocol, and users do not need to manually enable it. Safari 14 supports HTTP/3, but requires the user to manually enable the Settings in the browser.

Serverless/CDN support

So far, only a few servers support HTTP/3, but their share is growing. Cloudflare was one of the first companies outside of Google to support HTTP/3, so their Serverless and CDN are HTTP/3 compatible. In addition, Google Cloud and Fastly are ALSO HTTP/3 compatible companies, while Microsoft Azure CDN and AWS CloudFront currently do not appear to support HTTP/3. If you want to try HTTP/3, quic.cloud is an interesting (though experimental) way to set up a cached HTTP/3 CDN in front of the server. Cloudflare, Fastly, and Google Cloud also have good HTTP/3 support and are more suitable for production environments.

conclusion

HTTP/3 is still an experimental update to HTTP, and it is likely to change. However, more than half of users support HTTP/3 in its current form. If you are ready to update your implementation, the performance boost from such an update could be welcome. I hope you enjoy reading this article and learn something from it.

reference

  • Usage Statistics of HTTP/2 for Websites, May 2021 (w3techs.com)
  • QUIC Working Group (quicwg.org)
  • Can I use… Support tables for HTML5, CSS3, etc
  • Homepage – Quic.cloud

If you find any mistakes in your translation or other areas that need to be improved, you are welcome to the Nuggets Translation Program to revise and PR your translation, and you can also get the corresponding reward points. The permanent link to this article at the beginning of this article is the MarkDown link to this article on GitHub.


The Nuggets Translation Project is a community that translates quality Internet technical articles from English sharing articles on nuggets. The content covers Android, iOS, front-end, back-end, blockchain, products, design, artificial intelligence and other fields. If you want to see more high-quality translation, please continue to pay attention to the Translation plan of Digging Gold, the official Weibo, Zhihu column.