文章目录
1. 数据包编号(Packet Number)
每个 QUIC 数据包都有一个唯一的包编号,这个编号是全局递增的,而不是像 TCP 那样基于字节的序列号。包编号的独立性使得 QUIC 能够快速检测到哪些数据包丢失,并决定需要重传哪些包。
2. ACK 帧和确认机制
QUIC 使用 ACK 帧来确认接收到的数据包,并提供详细的丢包信息。ACK 帧包含以下信息:
已接收数据包的最高包编号。确认的接收包编号范围。丢失的包编号。
3. 快速重传和恢复机制
当发送方接收到 ACK 帧后,会根据确认的信息判断哪些数据包需要重传。QUIC 实现了多种重传策略以确保高效的数据传输:
基于时间的重传
- 超时重传:如果发送方在预期的时间内没有收到某个数据包的确认,会触发超时重传。QUIC 通过计算RTT(往返时间)和网络抖动来动态调整重传超时时间。
基于确认的重传
- 快速重传:如果接收到的 ACK 帧中表明一个数据包被确认丢失,发送方会立即重传该数据包,而无需等待超时。这种机制类似于 TCP 中的快速重传,但由于 QUIC 的包编号机制,执行更高效。
4. 独立的流和帧
-
QUIC 中的数据传输基于流和帧,每个流都是独立的,包含多个帧。帧的类型包括数据帧、ACK 帧、握手帧等。丢包重传只涉及具体丢失的帧,而不会影响其他流中的帧。这种设计避免了传统 TCP 中的队头阻塞问题

最低0.47元/天 解锁文章
4183

被折叠的 条评论
为什么被折叠?



