TCP滑动窗口的原理 - 清楚TCP的三次握手和四次挥手,在配上TCP的滑动窗口的原理更有说服力哦!

TCP的滑动窗口

概要

我们了解滑动窗口之前先了解一下两个概念。

  • RTT : 发送一个数据包到收到对应ACK所消耗的时间。换句话说就是从发送数据到收到数据确认的时间差。
  • RTO: 重传时间间隔。TCP在发送数据包之后会启动一个重传定时器。而这个RTO就是这个重传的时间。在RTO的时间到达后还没收到来之对方的一个ACK确认,则会重新发送该数据包。这个RTO不是固定写死的配置,而是根据RTT这个时间计算出来的,具体的计算公式在这里不做具体的讲解。
  • 有了上述的重传机制的概念。接下来我们就学习TCP的滑动窗口。

滑动窗口

  • 我们都知道TCP在传输数据的时候,如果数据比较大,通常会拆分成一段一段的进行发送。为了能够提高传输的效率,不可能一段一段的进行发送,等一段收到确认了在去发送下一段。这样效率是比较低的。显然是不可取的。
  • 所以我们要实现对数据的批量发送,对面批量传输我们必须要面对可靠性传输和包乱序的问题。
  • 而TCP就是通过滑动窗口的机制解决了流量控制和乱序重排序。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B3of17WF-1584255777838)(media/15838391082346/15838395159845.jpg)]

作用

  • 保证了TCP的可靠性传输
    • 这个先暂时放一下。把滑动窗口的机制搞清楚了这个作用也清楚了。
  • 保证了TCP的流控特性
    • 上图中有个窗口的字段就是我们的滑动窗口,用于接收方通知发送方自己还有多少缓冲区可以接收数据,发送方可以根据接收方的处理能力来发送数据,不会导致接收方处理不过来。

滑动创建的数据计算流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kGvfF8Xb-1584255777840)(https://i.loli.net/2020/03/15/3w9FBRCbaixkAc8.jpg)]

滑动窗口的基本原理

TCP会话的发送方
  • 任何时候在其发送缓存类的数据都可以分为四类,如下图所示:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iQqEoHfU-1584255777840)(media/15838391082346/15842545639311.jpg)]

  • 滑动窗口的滑动过程 如下图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bokR80o2-1584255777841)(media/15838391082346/15842548126196.jpg)]

TCP会话的接收方
  • 任何时候在其发送缓存类的数据都可以分为三类,如下图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gBLgluQY-1584255777841)(media/15838391082346/15842553691135.jpg)]

  • 滑动窗口的过程和发送方类似。

总结

  • 前面我们知道TCP的传输可靠性是建立在确认重传的机制,而滑动窗口的可靠性也是建立在确认重传的机制上。
  • 发送窗口只有收到本段窗口内的数据确认才会移动滑动窗口。
  • 接收窗口只有在前面数据都确认的情况下才会向右移动窗口范围。
  • 滑动窗口的大小不是固定不变的,可以根据处理能力的情况调整滑动窗口的大小。
  • 本人也是学习阶段,能力和表达有限,有不足的地方望不吝指教!一起学习。
  • 如果文章有帮助到你欢迎关注微信公众号《后端学长》 在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值