原文链接:https://www.pubnub.com/guides/http-3/

什么是 HTTP/3?

HTTP/3(或 HTTP-over-QUIC)是超文本传输协议 ( HTTP ) 的第三个主要版本。它是用于 Web 浏览器和服务器之间通信的应用层协议。 HTTP/3 旨在提高 Web 通信的性能和安全性。

HTTP/3的主要功能之一是它构建在用户数据报协议 (UDP)之上,而不是建立在 HTTP 早期版本中使用的传输控制协议(TCP) 之上。 UDP 是一种无连接协议,可为实时应用程序提供更低的延迟和更好的性能。

HTTP/3 还引入了一种新的传输协议,称为QUIC(快速 UDP 互联网连接)。与 TCP 相比,QUIC 具有多种优势,包括减少延迟、提高可靠性和更好的拥塞控制。它还包括内置加密,增强网页和通信安全性。

HTTP/3 的另一个重要特性是它对多路复用的支持。这意味着可以通过单个连接同时发送和接收多个请求和响应,从而提高数据传输效率。

HTTP/3 还包括其他优化以提高性能,例如标头压缩和流优先级。这些优化有助于减少开销并提高 Web 通信的整体速度。

总体而言,HTTP/3 在性能和安全性方面比其前身 HTTP/2 显着改进了功能。它对于构建实时聊天和消息传递应用程序的开发人员特别有利,因为它提供更低的延迟和更高的可靠性,使其成为需要快速交付实时数据的用例的理想选择。

让我们退一步看看这一切从第一个 HTTP 版本开始。

HTTP 简史

HTTP(超文本传输协议)协议有着长达数十年的丰富历史。它于 20 世纪 90 年代初首次推出,作为万维网上客户端和服务器之间的通信方式。

HTTP 最初是由Tim Berners-Lee和他在CERN(欧洲核研究组织)的团队开发的,旨在促进超文本文档的交换。第一个版本 HTTP/0.9 是一个简单的协议,仅支持用于检索 HTML 文档的 GET 请求。

1996 年,HTTP/1.0 协议由互联网工程任务组(IETF)标准化。该版本引入了几个重要的功能,包括对 POST 请求、响应状态代码和标头的支持。 HTTP/1.0 还允许传输不同的媒体类型,例如图像和视频以及 HTML 文档。

然而,随着网络变得更加复杂和交互,HTTP/1.0 的局限性变得明显。它是围绕请求-响应模型设计的,其中每个请求都需要与服务器的单独连接。这导致了高延迟和网络资源的低效使用。

HTTP/1.1 协议解决了这些问题。

HTTP/1.1

HTTP/1.1 是超文本传输协议 (HTTP) 的第二个主要版本,于 1999 年推出,如今在互联网上广泛使用。

HTTP/1.1 的关键功能之一是支持持久连接,也称为保持活动连接。在以前版本的 HTTP 中,必须为每个请求和响应建立一个新的 TCP 连接,这导致延迟和开销增加。使用 HTTP/1.1,可以通过单个连接发送多个请求和响应,从而减少建立新连接的需要并提高性能。

HTTP/1.1 的另一个重要特性是它对管道的支持。流水线允许发送多个请求而无需等待相应的响应,这有助于减少延迟并提高数据传输效率。

HTTP/1.1还引入了缓存的概念。缓存允许 Web 浏览器存储和重用以前访问的资源,例如图像和样式表,这可以显着缩短页面加载时间并减少带宽使用。

然而,尽管有这些改进,HTTP/1.1 仍然存在一些局限性。同时处理多个请求和响应可能效率低下,因为它需要严格的消息排序。这可能会导致性能问题,特别是对于需要低延迟和高并发的实时应用程序。

此外,HTTP/1.1 不支持标头压缩,这可能会导致开销增加和数据传输速度变慢。

HTTP/2

HTTP/2 是超文本传输协议 (HTTP)的最新主要版本,于 2015 年推出,作为对之前 HTTP/1.1 版本的改进。

HTTP/2 旨在解决 HTTP/1.1 的限制,并为 Web 应用程序提供更好的性能、效率和安全性。它引入了几个关键功能,旨在优化客户端和服务器之间的数据传输方式。

HTTP/2 的主要改进之一是它对多路复用的支持。使用 HTTP/2,可以通过单个连接同时发送多个请求和响应。这消除了对消息严格排序的需要,并允许更好的并发性,减少延迟并提高数据传输的整体效率。

此外,HTTP/2 引入了标头压缩。在 HTTP/1.1 中,每个请求和响应的标头均以明文形式发送,这会导致显着的开销,尤其是对于大型标头。在HTTP/2中,使用HPACK压缩算法对标头进行压缩,减少了需要传输的数据量,提高了性能。

HTTP/2 还包括其他性能优化,例如流优先级(允许客户端将某些请求优先于其他请求)和流控制(有助于防止拥塞并确保最佳性能)。

在安全性方面,HTTP/2 默认支持加密连接。这意味着客户端和服务器之间传输的所有数据都经过加密,从而提供更好的保护,防止窃听和篡改。

HTTP/2 非常适合需要低延迟和高并发的实时聊天和消息传递应用程序。通过利用多路复用、标头压缩和服务器推送,开发人员可以构建可扩展且安全的应用程序,从而提供无缝且响应迅速的用户体验。

什么是 HTTP/2 推送?

HTTP/2 Push是HTTP/2协议中引入的一项功能,允许服务器在主动请求资源之前将资源发送到客户端。这意味着服务器无需等待客户端请求单个资源(例如图像或样式表),而是可以将这些资源推送到客户端而无需特定请求。

当客户端向服务器发送请求时,服务器可以检查该请求并识别客户端可能需要的其他资源。然后,它可以将这些资源与初始响应一起推送给客户端。客户端可以选择使用这些推送的资源,如果不需要,也可以忽略它们。

HTTP/2 Push 可以显着提高页面加载时间并减少客户端和服务器之间的往返次数。通过主动推送资源,服务器可以减少应用程序的整体延迟,从而提供更快、响应更灵敏的用户体验。

然而,需要注意的是,HTTP/2 Push 的使用应该明智且谨慎。如果向客户端推送太多资源,可能会导致不必要的数据传输,并可能影响应用程序的性能。因此,开发者仔细分析并确定应该推送哪些资源以及何时推送至关重要。

总体而言,HTTP/2 Push 是一项强大的功能,可以增强 Web 应用程序的性能,特别是需要低延迟的实时聊天和消息传递应用程序。通过将资源推送到客户端,开发人员可以优化数据传输流程,为用户提供无缝的浏览体验。

这让我们回到了 HTTP/3。

HTTP/3 与 HTTP/2

HTTP/3 在几个方面与 HTTP/2 不同。

  • 协议:HTTP/3 基于 QUIC(快速 UDP 互联网连接)协议,而 HTTP/2 基于 TCP(传输控制协议)。 QUIC 旨在通过多路复用和加密等技术的组合来减少延迟和数据包丢失,从而提高性能。
  • 传输层:HTTP/3 使用 UDP(用户数据报协议)作为其传输层协议,这是一种轻量级、无连接的协议,与 HTTP/2 使用的 TCP 相比,它提供更低的开销和更快的速度。 UDP 的无连接特性允许更快地传输数据包,而无需等待确认。
  • 多路复用:与 HTTP/2 相比,HTTP/3 支持改进的多路复用。在 HTTP/2 中,多个流通过单个 TCP 连接进行复用,但一个流中的延迟或丢失可能会影响其他流。另一方面,HTTP/3 使用 QUIC 的复用功能,允许独立的流受到延迟或丢失的影响较小。
  • 安全性:虽然 HTTP/2 和 HTTP/3 支持加密,但 HTTP/3 增强了安全功能。 QUIC 默认采用 TLS 1.3 加密,提高通信的安全性和隐私性。
  • 队头阻塞:在 HTTP/2 中,如果数据包丢失或延迟,可能会导致队头阻塞,后续数据包必须等待丢失的数据包重新传输。 HTTP/3 通过使用 QUIC 来减少队头阻塞的影响,QUIC 允许独立的数据包传输,从而减少因数据包丢失或延迟而导致的延迟。

HTTP 3 提供了哪些安全改进?

与其前身 HTTP/2 相比,HTTP-over-QUIC 提供了多项安全改进。 HTTP/3 提供的一些值得注意的安全增强功能包括:

  1. 传输层安全 (TLS) 加密:HTTP/3 专为在传输层安全 (TLS) 协议上工作而设计,确保客户端和服务器之间传输的数据进行端到端加密。这种加密可以防止未经授权的访问和窃听,从而增强通信的安全性。
  2. 减少攻击面:HTTP/3 使用基于用户数据报协议 (UDP) 的 QUIC(快速 UDP 互联网连接)传输协议。与之前版本中使用的 TCP(传输控制协议)不同,QUIC 在传输层运行,通过消除与 TCP 相关的某些漏洞来减少攻击面。
  3. 连接迁移:HTTP/3 允许不同网络接口之间的无缝连接迁移,例如 Wi-Fi 和蜂窝网络之间的切换。即使网络条件发生变化,此功能也有助于保持安全连接,从而防止与连接中断相关的潜在安全风险。
  4. 提高对拒绝服务 (DoS) 攻击的抵抗力:HTTP/3 结合了各种机制来减轻 DoS 攻击的影响。 QUIC协议提供内置的针对链路泛洪和放大攻击的保护,降低恶意攻击导致服务中断的风险。
  5. 零 RTT(往返时间)握手:HTTP/3 引入了零 RTT 握手,可以更快地建立安全连接。这可以减少延迟并提高实时聊天和消息传递应用程序的整体性能。
  6. 增强的隐私性:HTTP/3 通过为每个流使用独立的数据包传输来提供改进的隐私性。这消除了队头阻塞,该阻塞可能会暴露以前版本的 HTTP 中的敏感信息。通过确保每个流都是隔离的,HTTP/3 增强了用户数据在传输过程中的私密性和机密性。
  7. [前向纠错](https://www.techtarget.com/searchmobilecomputing/definition/forward-error-correction#:~:text=Forward error correction (FEC) is,that contains no apparent errors.)(FEC):HTTP/3 结合了 FEC 来恢复丢失的数据包并最大限度地减少数据包丢失对实时应用程序性能的影响。这有助于保持通信的可靠性和完整性,特别是当网络条件不太理想时。
  8. 兼容性**:** HTTP/3 旨在向后兼容 HTTP/2,允许开发人员轻松地将现有应用程序迁移到新协议,而无需进行重大更改。

总体而言,HTTP/3 比以前的版本提供了显着的安全改进,使其成为构建实时聊天和消息传递应用程序的开发人员的首选。通过利用 HTTP/3 提供的功能,开发人员可以确保其应用程序的可扩展性、速度和安全性,从而增强整体用户体验。

HTTP/3 使用哪些协议?

HTTP/3 使用的协议有:

QUIC(快速 UDP 互联网连接)

QUIC,全称Quick UDP Internet Connections,是谷歌开发的传输层协议。它是与 HTTP/3 一起使用的主要协议,用于提高 Web 通信的性能和安全性。与其前身不同,QUIC 构建在用户数据报协议 (UDP) 之上,而不是传输控制协议 (TCP) 之上。

QUIC 结合了 HTTP/2、TCP 和 TLS(传输层安全性)的功能,可提高性能并减少延迟。它通过 Internet 提供可靠、安全和低延迟的通信。

它的主要优势之一是能够比 TCP 更快地建立连接。它通过结合使用加密和多路复用技术来实现这一点。 QUIC 还包括内置的拥塞控制和纠错机制,增强了可靠性和性能。

总体而言,QUIC 旨在为聊天和消息传递等实时应用程序提供更高效、更安全的通信协议。它与 HTTP/3 的集成使其成为寻求构建可扩展且安全的应用程序的开发人员的首选。

DTLS 版本 1.3 - 用于加密和安全通信

DTLS 代表数据报传输层安全。它是专为基于 UDP 的通信而设计的传输层安全 (TLS) 协议的变体。 TLS 通常与 TCP 一起使用来提供 Internet 上的安全通信,而 DTLS 与 UDP 一起使用来为客户端和服务器之间交换的数据提供加密和身份验证。

DTLS 版本 1.3 是与 HTTP/3 一起使用的特定版本。它提供了先进的安全功能并比以前的版本进行了改进。 DTLS 1.3 的一些关键功能包括增强的握手安全性、改进的性能和减少的延迟。它还可以防止重放攻击和降级攻击等攻击。

在 HTTP/3 中,DTLS 1.3 对客户端和服务器之间的通信进行加密和保护。它确保通过网络传输的数据保持机密,并且不会被未经授权的各方拦截或篡改。

DTLS 1.3 在确保基于 HTTP/3 构建的实时聊天和消息传递应用程序中交换的数据的安全性和完整性方面发挥着至关重要的作用。

http/3支持加密吗?

是的,HTTP/3 确实支持加密。 HTTP/3 是超文本传输协议 (HTTP) 的最新版本,旨在提高 Web 通信的性能和安全性。它基于 QUIC(快速 UDP 互联网连接)协议,这是一种在 UDP(用户数据报协议)上运行的传输层协议。

加密是 HTTP/3 的关键组成部分。它对传输的数据进行加密并提供客户端和服务器之间的安全通信。这有助于保护敏感信息(例如用户凭证、个人数据和其他机密信息)免遭未经授权的访问或拦截。

HTTP/3 中的加密是使用传输层安全 (TLS) 协议实现的。 TLS 确保客户端和服务器之间交换的数据是加密的,未经授权的各方无法轻易破译。它提供端到端加密,这意味着数据在客户端加密,通过网络安全传输,并在服务器端解密。

通过支持加密,HTTP/3 增强了 Web 通信的安全性,有助于防范各种安全威胁,例如窃听、数据篡改和假冒攻击。它还提高了用户数据的隐私性和完整性,确保其在传输过程中保持机密且不被更改。

总而言之,HTTP/3 确实支持通过使用 TLS 协议进行加密,从而为实时聊天和消息传递应用程序提供安全可靠的通信通道。

http/3 的实施现状如何?

截至目前,HTTP/3 的实施仍在进行中,尚未最终确定。 HTTP/3 是 HTTP 协议的下一个重大修订版,旨在比其前身 HTTP/2 提高性能和安全性。

HTTP/3 基于 QUIC(快速 UDP 互联网连接)传输协议,旨在通过互联网提供低延迟和可靠的通信。 QUIC 使用用户数据报协议 (UDP),而不是以前版本的 HTTP 使用的传输控制协议 (TCP)。

互联网工程任务组 (IETF) 负责开发和标准化 HTTP/3。该协议正处于草案阶段,最新版本为draft-32。 HTTP/3 草案指定了协议的详细信息,包括其帧格式、错误处理和安全注意事项。

一些主要的 Web 浏览器和服务器软件已经开始致力于实现 HTTP/3。例如,谷歌一直在积极开发 QUIC,并在其一些服务中部署了一个变体,例如 Google Chrome 和 YouTube。 Safari 也在路上。

然而,值得注意的是,由于 HTTP/3 的持续开发和不断发展的性质,其实现在不同的软件和平台上可能会有所不同。建议参考 IETF 和相关软件供应商的官方文档和更新,以获取有关 HTTP/3 实施状态的最新信息。