工程师进阶:深入TCP协议( 四 )


TCP Taho 实现如下

  • 将阈值设为当前拥塞窗口的一半
  • 将拥塞窗口设为 1 MSS
  • 重新开始慢开始算法
TCP Reno 实现如下
  • 拥塞窗口减半
  • 将阈值设为当前拥塞窗口
  • 进入快恢复阶段(重发对端需要的包,一旦收到一个新的 ACK 答复就退出该阶段),这种方式在丢失多个包的情况下就不那么好了
  • 使用拥塞避免算法
TCP New Ren 改进后的快恢复
TCP New Reno 算法改进了之前 TCP Reno 算法的缺陷 。在之前,快恢复中只要收到一个新的 ACK 包,就会退出快恢复 。
在 TCP New Reno 中,TCP 发送方先记下三个重复 ACK 的分段的最大序号 。
假如我有一个分段数据是 1 ~ 10 这十个序号的报文,其中丢失了序号为 3 和 7 的报文,那么该分段的最大序号就是 10 。发送端只会收到 ACK 序号为 3 的应答 。这时候重发序号为 3 的报文,接收方顺利接收的话就会发送 ACK 序号为 7 的应答 。这时候 TCP 知道对端是有多个包未收到,会继续发送序号为 7 的报文,接收方顺利接收并会发送 ACK 序号为 11 的应答,这时发送端认为这个分段接收端已经顺利接收,接下来会退出快恢复阶段 。
小结这一篇文章的内容偏多,充斥了大量的术语,需要大家反复研读,另外对于不理解的生词希望大伙能自行多去学习 。下面总结一下这一篇文章的内容:
  • 介绍TCP协议的起源、分层结构和头部信息
  • 建立连接需要三次握手,断开连接需要四次握手
  • 滑动窗口解决了数据的丢包、顺序不对和流量控制问题
  • 拥塞窗口实现了对流量的控制,保证在全天候环境下最优的传递数据




推荐阅读