CSDN|HTTP/3 来了 !HTTP/2 还没怎么用起来呢,先一起扫个盲吧!( 四 )
本文插图
QUIC 重新实现了 TCP 协议的 Cubic 算法进行拥塞控制 , 并在此基础上做了不少改进 。 下面介绍一些 QUIC 改进的拥塞控制的特性 。1.6.1 热插拔 TCP 中如果要修改拥塞控制策略 , 需要在系统层面进行操作 。 QUIC 修改拥塞控制策略只需要在应用层操作 , 并且 QUIC 会根据不同的网络环境、用户来动态选择拥塞控制算法 。
本文插图
1.6.2 前向纠错 FEC QUIC 使用前向纠错(FEC , Forward Error Correction)技术增加协议的容错性 。 一段数据被切分为 10 个包后 , 依次对每个包进行异或运算 , 运算结果会作为 FEC 包与数据包一起被传输 , 如果不幸在传输过程中有一个数据包丢失 , 那么就可以根据剩余 9 个包以及 FEC 包推算出丢失的那个包的数据 , 这样就大大增加了协议的容错性 。这是符合现阶段网络技术的一种方案 , 现阶段带宽已经不是网络传输的瓶颈 , 往返时间才是 , 所以新的网络传输协议可以适当增加数据冗余 , 减少重传操作 。
本文插图
1.6.3 单调递增的 Packet Number TCP 为了保证可靠性 , 使用 Sequence Number 和 ACK 来确认消息是否有序到达 , 但这样的设计存在缺陷 。超时发生后客户端发起重传 , 后来接收到了 ACK 确认消息 , 但因为原始请求和重传请求接收到的 ACK 消息一样 , 所以客户端就郁闷了 , 不知道这个 ACK 对应的是原始请求还是重传请求 。 如果客户端认为是原始请求的 ACK , 但实际上是左图的情形 , 则计算的采样 RTT 偏大;如果客户端认为是重传请求的 ACK , 但实际上是右图的情形 , 又会导致采样 RTT 偏小 。 图中有几个术语 , RTO 是指超时重传时间(Retransmission TimeOut) , 跟我们熟悉的 RTT(Round Trip Time , 往返时间)很长得很像 。 采样 RTT 会影响 RTO 计算 , 超时时间的准确把握很重要 , 长了短了都不合适 。
本文插图
QUIC 解决了上面的歧义问题 。 与 Sequence Number 不同的是 , Packet Number 严格单调递增 , 如果 Packet N 丢失了 , 那么重传时 Packet 的标识不会是 N , 而是比 N 大的数字 , 比如 N + M , 这样发送方接收到确认消息时就能方便地知道 ACK 对应的是原始请求还是重传请求 。
本文插图
1.6.4 ACK Delay TCP 计算 RTT 时没有考虑接收方接收到数据到发送确认消息之间的延迟 , 如下图所示 , 这段延迟即 ACK Delay 。 QUIC 考虑了这段延迟 , 使得 RTT 的计算更加准确 。
本文插图
1.6.5 更多的 ACK 块 一般来说 , 接收方收到发送方的消息后都应该发送一个 ACK 回复 , 表示收到了数据 。 但每收到一个数据就返回一个 ACK 回复太麻烦 , 所以一般不会立即回复 , 而是接收到多个数据后再回复 , TCP SACK 最多提供 3 个 ACK block 。 但有些场景下 , 比如下载 , 只需要服务器返回数据就好 , 但按照 TCP 的设计 , 每收到 3 个数据包就要“礼貌性”地返回一个 ACK 。 而 QUIC 最多可以捎带 256 个 ACK block 。 在丢包率比较严重的网络下 , 更多的 ACK block 可以减少重传量 , 提升网络效率 。
本文插图
推荐阅读
- CSDN|由 Apache 说开,中国开源项目已经走向世界!
- 智能穿戴|79元起售!小米最便宜真无线蓝牙耳机来了
- |真全面屏手机要来了!微软给出新解决方案:提高屏下前摄效果
- 寒武纪|寒武纪终于来了!大涨288%,市值破千亿
- 行业互联网|超1800家企业退圈!电子烟风口为何飞不起来了?
- pos机|POS“一机一户”真的要来了吗,该如何应对?
- 中年|80分钟顶升一层楼,中国“住宅造楼机”来了
- AMD,英特尔|又一批第十代酷睿CPU来了 这个全新i9价格有点香
- 新机发布|红米的首款“亮银”机 Redmi 10X Pro 新配色来了:明天揭晓
- 驱动中国|谁是中国口碑最好的彩电品牌?权威报告来了
