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 实现数据包的确认和重传机制
- 每个流独立进行流控制,避免队头阻塞问题
- 采用拥塞控制算法自适应调整发送速率
- 支持连接迁移,网络切换时保持连接不中断
目录