HTTP/3 如何保证传输可靠性

HTTP/3 基于 UDP,通过 QUIC 协议实现可靠传输

问题

HTTP/3 使用 UDP 作为传输协议,UDP 本身是不可靠的,那么 HTTP/3 如何保证数据传输的可靠性?

解答

HTTP/3 通过底层的 QUIC 协议在应用层实现了可靠传输,主要包含以下机制:

数据包确认与重传

QUIC 为每个数据包分配唯一的 Packet Number,接收方收到数据包后会发送确认(ACK)。如果发送方在超时时间内未收到确认,会自动重传该数据包,确保数据不会丢失。

流控制

QUIC 在每个流(Stream)上实现了独立的流控制机制。发送方和接收方会根据各自的缓冲区状态动态调整数据发送速率,防止接收方被过载,同时优化传输效率。

拥塞控制

QUIC 采用类似 TCP 的拥塞控制算法,监测网络状况并自适应调整发送速率。当检测到网络拥塞时,会降低发送速度;网络畅通时则提高速度,避免丢包和网络拥塞。

连接迁移

QUIC 使用连接 ID 而非 IP 地址和端口来标识连接。当网络切换(如 WiFi 切换到 4G)或 IP 地址变更时,连接可以无缝迁移,不需要重新建立连接,避免了数据中断和丢失。

关键点

  • QUIC 通过 Packet Number 实现数据包的确认和重传机制
  • 每个流独立进行流控制,避免队头阻塞问题
  • 采用拥塞控制算法自适应调整发送速率
  • 支持连接迁移,网络切换时保持连接不中断