前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >34. 传输层TCP协议十大主要特性(4) ——滑动窗口

34. 传输层TCP协议十大主要特性(4) ——滑动窗口

作者头像
小雨的分享社区
发布2022-10-26 15:52:07
4300
发布2022-10-26 15:52:07
举报
文章被收录于专栏:小雨的CSDN

在之前的TCP中,没有使用滑动窗口,就要等待N次应答时间和N次传播时间,这两个时间加起来才是总的传输时间,这样的效率一定是很低的。也就是之前我们讨论了确认应答策略, 对每一个发送的数据段, 都要给一个ACK确认应答. 收到ACK后再发送下一个数据段. 这样做有一个比较大的缺点, 就是性能较差. 尤其是数据往返的时间较长的时候

滑动窗口是在保证了可靠性的前提下,批量处理,处理时间压缩了,有进一步地提高效率。

如下图所示就是滑动窗口的应答图:

  1. 窗口大小指的是无需等待确认应答而可以继续发送数据的最大值. 上图的窗口大小就是4000个字节(四个段)。
  2. 发送前四个段的时候, 不需要等待任何ACK, 直接发送。
  3. 收到第一个ACK后, 滑动窗口向后移动, 继续发送第五个段的数据; 依次类推; 操作系统内核为了维护这个滑动窗口, 需要开辟 发送缓冲区 来记录当前还有哪些数据没有应答; 只有确认应答过的数据, 才能从缓冲区删掉。

滑动窗口示意图

窗口大小越大,传输的效率越高,但也不能无限高

所有的传输都有丢包的可能性,这里有两种丢包情况: 情况一:如果ACK丢包了 这种情况不会影响,例如下图,在最后一个ACK中还是返回了下一个是6001,证明滑动窗口会通过收到的下一个ACK的值为基准继续向后滑动

情况二:如果数据报丢包了 如果发送端主机连续三次收到了同样一个 “1001” 这样的应答, 就会将对应的数据 1001 - 2000 重新发送; 这个时候接收端收到了 1001 之后, 再次返回的ACK就是7001了(因为2001 - 7000)接收端其实之前就已经收到了, 被放到了接收端操作系统内核的接收缓冲区中。

这种机制被称为 “高速重发控制”(也叫 “快重传”)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-03-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档