QUIC 协议

QUIC 协议是 Google 出品的传输层网络协议。那么,在已经有了安全可靠的 TCP 协议的情况下,又搞出来一个新的协议呢?简单来说,Google 对 TCP 协议的优化已经到了尽头,已经没有什么好优化的了,但还想更进一步,怎么办呢?搞个新的。

设计目标:

  • 取代TCP协议
  • 降低连接和传输延迟
  • 改进拥塞控制

相比 http2+tcp+tls 的优势:

  1. 减少了 TCP 三次握手及 TLS 握手时间。
  2. 改进的拥塞控制。
  3. 避免队头阻塞的多路复用。
  4. 连接迁移。
  5. 前向冗余纠错。

特性

相互独立的逻辑流

相互独立的逻辑流是 QUIC 的核心特性之一。它允许在单个连接上并行传输多个数据流,并且每个流可以独立地处理。相比之下,TCP 只支持单数据流,需要按照发送顺序接收和确认每个报文。通过多路复用,应用程序可以更高效地发送和接收数据,并更好地利用网络带宽等资源。

一致安全性

QUIC 的另一个重要特性是它提供了端到端的安全保护。所有通过 QUIC 发送的数据都是默认加密的,并且不支持明文通信。这有助于防止数据被窃听和其他形式的攻击。QUIC 使用传输层安全协议(TLS)来建立和维护安全连接和端到端加密。

低延迟

QUIC 协议的设计目的是减少建立连接所需的延迟,以便在端点之间快速地发送和接收数据。对于移动网络这种高延迟的网络环境来说,这一点尤为重要。为了实现这个目标,QUIC 最小化了建立连接所需的往返次数,并且采用更小的报文来发送数据。传统的互联网协议通常存在延迟问题,例如美欧之间的往返时间有时可达 300 或 400 毫秒。

可靠性

QUIC 基于 UDP 但可提供可靠传输能力。类似于 TCP,它是一种面向连接的传输协议。QUIC 协议在数据传输过程中具有报文丢失恢复和重传功能,这可以确保数据的完整性和准确性。此外,QUIC 可以保证数据包按照发送顺序到达,避免因数据包乱序导致的数据错误。

消除 HOL 阻塞

QUIC 通过支持多个数据流来解决 HOL 阻塞问题。这使得来自不同应用的消息可以独立地传递,避免了因为等待其他应用而可能产生的延迟。

原理

场景

HTTP/3 中,弃用 TCP 协议,改为使用基于 UDP 协议的 QUIC 协议实现。随着 HTTP/3 和 QUIC 越来越流行并被广泛采用,涌现出多种多样的应用场景。这些应用场景覆盖了直播、视频、点播、下载、Web 加速等领域,其中最具潜力的应用场景有:

  1. **实时 Web 和移动应用:**这些应用(如集成了语音和视频通信功能的 Web 和移动应用)需要低延迟和可靠的数据传输。QUIC 利用相互独立的数据流和拥塞控制机制,使其成为这些应用的理想选择,因为它可以快速高效地发送和接收数据。在 QUIC 的多路复用模式下,同一连接内不同数据流之间的数据传输互不干扰。
  2. **与物联网设备通信:**物联网设备通常使用 TCP 和 MQTT 等协议进行通信。然而,这些协议在受限的网络环境中可能存在高延迟和丢包等问题。相比之下,专为高延迟和丢包的网络环境而设计的 QUIC 可以提供更可靠和高效的替代方案。QUIC 可以实现接近零的往返时间(RTT),这对于提高网络性能和用户体验至关重要。
  3. **车联网和网联汽车:**QUIC 可以极大地促进车联网生态系统的发展。这些系统需要实时的数据交换来提供诸如交通管理、车辆跟踪和安全功能等服务。QUIC 具有低延迟、多路复用的特性,以及对数据包丢失和重排序的处理能力,可以确保车辆和基础设施组件之间可靠而高效的通信。此外,QUIC 使用 TLS 加密保护敏感车辆数据,提供了更强的安全保障。
  4. **云计算:**云计算是指通过互联网提供计算资源的服务。使用 QUIC 协议可以带来多方面的好处,例如低延迟和端到端加密,这可以提升用户体验、增强系统安全。
  5. **支付和电子商务应用:**这些应用需要安全可靠的数据传输。QUIC 通过 TLS 加密和可靠的 HTTP3 数据流,使其成为这些应用的理想选择,有助于保证数据安全完整地传输。从终端用户的角度来看,QUIC 协议通过保证更快、更顺畅的交易,优化了用户体验。

对比

与 TCP 相比,QUIC 在高延迟和不稳定的网络环境中,如移动网络,可以显著提升网页加载速度并减少连接中断,使得网络体验更加流畅。

特性 TCP (Transmission Control Protocol) QUIC (Quick UDP Internet Connections)
协议层 传输层协议 应用层协议
基础传输 基于 IP 协议之上的 TCP 基于 IP 协议之上的 UDP
连接建立 三次握手 单次握手
连接恢复 断开后需重新建立连接 支持连接迁移和恢复
加密 TLS 1.2/1.3 内置 TLS 1.3
启动延迟 较高,三次握手增加延迟 较低,减少握手次数和延迟
多路复用 支持,但容易受阻塞影响 原生支持,避免队头阻塞
传输效率 较高,但有队头阻塞问题 更高,避免队头阻塞和优化路径恢复
数据完整性 基于序列号和确认号保证 基于序列号和确认号保证
拥塞控制 内置多种拥塞控制算法 内置拥塞控制,基于 TCP 的算法扩展
丢包重传 确认丢包后重传 确认丢包后重传,优化的快速恢复机制
安全性 可选加密(通常通过 TLS 实现) 默认启用(内置 TLS 1.3)
安全更新 更新慢,需要操作系统和应用配合 更新快,协议可灵活更新
部署难易度 广泛部署,基础设施支持全面 逐渐普及,需要支持 UDP 的网络设施
防火墙友好 广泛支持,默认开放 可能被部分防火墙阻挡
常用场景 Web 浏览、文件传输、电子邮件等 实时通信、视频流、现代 Web 应用等
协议灵活性 相对固定,修改需要标准化过程 更灵活,支持快速迭代和更新

总结

TCP(Transmission Control Protocol)是传输层的经典协议,基于IP协议之上,通过三次握手建立连接,提供可靠的数据传输、拥塞控制和流量控制。虽然TCP在网络通信中广泛应用,但它的传输效率受队头阻塞影响,且连接建立较慢。

QUIC(Quick UDP Internet Connections)是一个基于UDP协议的新型应用层协议,通过单次握手建立连接,并内置TLS 1.3实现加密通信。QUIC具有较低的启动延迟、更高的传输效率和更好的安全性,特别适用于实时通信和现代Web应用。

在连接建立、多路复用、传输效率、连接恢复、安全性等方面,QUIC相较于TCP有明显的优势。但是,TCP由于广泛的部署和成熟的基础设施支持,仍然是许多传统应用的首选。随着时间的推移,QUIC的普及度逐渐增加,尤其是在需要低延迟、高效率和安全性的场景下,它将成为更多应用的选择。

参考

[1] QUIC

[2] 一文读懂 QUIC 协议:更快、更稳、更高效的网络通信

[3] QUIC 在京东直播的应用与实践