HTTP/3是什么?为什么这么重要

在研究互联网及其背后的技术时,您可能会遇到这个术语:HTTP。HTTP,或超文本传输协议,是网络的支柱,是传输文本数据的通用协议。毫无疑问,您使用过它,因为您了解 HTTP 的网站使用的是 HTTP。

HTTP 简史

发布的第一个 HTTP 版本是 HTTP/0.9。Tim Berners-Lee 于 1989 年创建了它,并于 1991 年将其命名为 HTTP/0.9。HTTP/0.9 功能是有限的,只能做基本的事情。除了网页之外,它无法返回任何内容,并且不支持 cookie 和其他现代功能。1996 年,HTTP/1.0 发布,带来了新功能,如 POST 请求和发送网页以外的内容的能力。但是,与今天相比,还有很长的路要走。HTTP / 1.1在1997年发布,并进行了两次修订,一次是在1999年,一次是在2007年。它带来了许多主要的新功能,例如cookie和连接仍然存在。最后,在 2015 年,HTTP/2 发布并允许提高性能,使诸如服务器发送事件和一次发送多个请求的能力成为可能。HTTP/2 仍然是新的,只有不到一半的网站使用。

HTTP/3:最新版本的 HTTP

HTTP/3或HTTP over QUIC,改变了HTTP很多。HTTP 传统上是通过 TCP(传输控制协议)完成的。但是,TCP于1974年互联网开始发展。当 TCP 最初创建时,它的作者无法预测网络的增长。由于 TCP 已过时,因此 TCP 在一段时间内限制了 HTTP 的速度和安全性。现在,由于 HTTP/3,HTTP 不再受限制。HTTP/3 没有使用 TCP,而是使用了一种由 Google 于 2012 年开发的新协议,称为 QUIC(发音为“quick”)。这为 HTTP 引入了许多新功能。

链接:https://www.linuxmi.com/http-3-http-over-quic.html

更快的请求多路复用

照片来自Unsplash的PAUL SMITH

在 HTTP/2 之前,浏览器一次只能向服务器发送一个请求。这使得网站加载速度明显变慢,因为浏览器一次只加载一项资源,如 CSS 或 JavaScript。HTTP/2 引入了一次加载多个资源的能力,但 TCP 并非为此而生。如果请求之一失败,TCP将使浏览器重做所有请求。由于TCP在HTTP/3中已被删除并由QUIC代替,因此HTTP/3解决了此问题。使用 HTTP/3,浏览器只需要重做失败的请求。因此,HTTP/3 更快、更可靠。

更快的加密

HTTP/3 优化了允许浏览器 HTTP 请求被加密的“握手”。QUIC 将初始连接与 TLS 握手相结合,使其默认安全且速度更快。

链接:https://www.linuxmi.com/http-3-http-over-quic.html

标准化

在撰写本文时,HTTP/3 和 QUIC 尚未标准化。有一个 IETF工作组目前正在制定标准化 QUIC 的草案。HTTP/3 的 QUIC 版本略有修改,使用 TLS 代替 Google 的加密,但具有相同的优点。

浏览器支持

目前,由于谷歌创建了 QUIC 协议和 HTTP over QUIC 的提议,Chrome 默认支持 HTTP/3。Firefox 也支持 88+ 版本中没有标志的协议。Safari 14支持HTTP/3,但前提是启用了实验性功能标志。

浏览器支持 HTTP/3(来源:Can I Use)

Serverless/CDN 支持

到目前为止,只有部分服务器支持 HTTP/3,但它们的份额正在增长。Cloudflare 是除 Google 之外最早支持 HTTP/3 的公司之一,因此它们的无服务器功能和 CDN 符合 HTTP/3 标准。此外,Google Cloud 和 Fastly 符合 HTTP/3 标准。不幸的是,Microsoft Azure CDN 和 AWS CloudFront 目前似乎不支持 HTTP/3。如果您想尝试 HTTP/3,QUIC.Cloud是一种在您的服务器前设置缓存 HTTP/3 CDN 的有趣(虽然是实验性的)方法。Cloudflare、Fastly 和 Google Cloud 也有良好的 HTTP/3 支持,并且更适合生产。

总结

HTTP/3 仍然是对 HTTP 的一个非常实验性的更新,它很可能会改变。但是,超过一半的用户支持当前形式的 HTTP/3。如果您准备更新您的实现,那么它可以是一个受欢迎的性能提升。我希望你喜欢阅读并从这篇文章中学到一些东西。

原创文章,作者:晴川运维,如若转载,请注明出处:https://baike.qcidc.com/15507.html

(0)
晴川运维晴川运维
上一篇 2025年10月18日
下一篇 2025年10月18日

相关推荐

  • Linux下安装PHP的PDO

    PDO(PHP Data Objects)是一种在PHP里连接数据库的使用接口。PDO与mysqli曾经被建议用来取代原本PHP在用的mysql相关函数,基于数据库使用的安全性,因…

    Linux系统 2025年6月26日
  • 详解Python虚拟环境virtualenv

    VirtualEnv用于在一台机器上创建多个独立的python运行环境,VirtualEnvWrapper为前者提供了一些便利的命令行上的封装。 了解虚拟环境 如果在一台机器上,想…

    Linux系统 2025年6月19日
  • 查看MongoDB版本信息具体方法

    本篇文章重点为大家讲解一下查看MongoDB版本信息具体方法,有需要的小伙伴可以参考一下。 1:连接到MongoDB,使用命令查看。 > db.version();…

    Linux系统 2025年10月7日
  • Linux grep命令详解:查找文件内容

    很多时候,我们并不需要列出文件的全部内容,而是从文件中找到包含指定信息的那些行,要实现这个目的,可以使用 grep 命令。 grep 命令作为 Linux 文本处理三剑客的一员,另…

    Linux系统 2025年10月11日
  • 详解Linux ncal命令使用方法

    在Linux系统中,cal和ncal命令都用御用显示日历,但是这两个命令不经常使用,尤其对ncal命令更不了解,本篇文章重点为大家讲解一下ncal命令使用方法。 ncal命令 nc…

    Linux系统 2025年7月1日
  • 通过GIt备份Linux文件

    我们使用 Linux 服务器时,有时候需要备份配置文件。传统的备份方法是复制文件,改名,并在文件结尾插入一些字符。但,如果我们使用 Git ,我们可以很轻松的管理配置文件的备份。 …

    Linux系统 2025年10月11日
  • 详解Linux下字符串的操作方法

    本篇文章为大家讲解一下Linux下对字符串的操作方法, 有需要的小伙伴可以参考一下。 字符串截取 定义字符串 $ str=www.baidu.com 匹配字符串截取 # …

    Linux系统 2025年6月15日
  • C++中常量与指针讲解

    在C++学习使用过程中,每个人都不可避免地使用指针,而且都或多或少的接触过常量指针或指针常量,但是对这两个的概念还是很容易搞糊涂的,所以这篇文章主要给大家介绍了关于C++中常量与指…

    Linux系统 2025年10月19日
  • 通过sestatus命令查看SELinux的当前状态

    sestatus命令用于查看系统上正在运行的SELinux的当前状态。本文讲述sestatus命令输出详细说明,在sestatus中显示所选对象的安全上下文,显示所有的布尔值 1.…

    Linux系统 2025年6月4日
  • 详解MySQL 慢查询

    慢查询日志用来记录在 MySQL 中执行时间超过指定时间的查询语句。通过慢查询日志,可以查找出哪些查询语句的执行效率低,以便进行优化,下面为大家详细讲解一下 MySQL 慢查询。 …

    Linux系统 2025年9月17日

发表回复

登录后才能评论