CS-Notes 学习笔记
Java 后端 · 计算机网络

怎样在 UDP 上实现可靠传输?QUIC 改进了 TCP 的哪些设计?

先自己想一想,再看参考要点

参考要点

  • 按 TCP 的思路在应用层实现:给每个数据包编号,接收方据此去重和排序
  • 接收方回复确认,发送方超时没收到确认就重传,超时时间根据测得的 RTT 计算
  • 限制已发送但未确认的数据量,做流量控制和拥塞控制
  • 好处是可以按需取舍,只对需要的消息重传,不相关的消息互不阻塞
  • QUIC 的包号只增不减,丢失的数据放进新编号的包中重传,能分清确认的是哪一次发送,RTT 测得更准,数据按流组织、每个流单独排序,一个包丢失只暂停带有它数据的流,一个确认帧可以携带很多个已收到的区间
  • 选择在 UDP 上实现,是因为 TCP 实现在内核中,改动要等操作系统升级,中间设备还会检查甚至改写 TCP 首部,QUIC 在用户态随应用更新,并加密了大部分首部
在学习站中自测这道题

学习站:先用面试题自评定级,按水平和面试日期排出每天的计划,自评过的题按间隔复习。免费、无需注册,记录只保存在自己的浏览器中。