温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

TCP-IP之滑动窗口

发布时间:2020-06-18 09:36:21 来源:网络 阅读:537 作者:feelgood3000 栏目:软件技术

前言

TCP在OSI七层模型中,属于第四层(传输层),帮我们处理了传输层的细节。包括限流、丢包、网络传输乱序等问题。那TCP到底是如何实现限流的呢?

如果你需要复习一下基础知识,请戳这里《TCP/IP基础十分钟入门》 ,博主比较懒,下周补上

接收端缓冲区被塞满

如果sender发送速度快,reciever处理速度慢。会发生什么事?

过一段时间,reciever的缓冲区被打满。

  • 当reciever缓冲区被打满后,通过ack(win=0)告诉sender不要给我发送数据了,我处理不了了。
  • sender就会停止发送数据。
  • 过一会,reciever处理数据后,缓冲区有了空闲空间。
  • 通过ack声明自己的窗口大小
  • sender继续发送数据

滑动窗口出场

TCP-IP之滑动窗口
通过动画我们可以直观的看到窗口向右滑动,所以叫做滑动窗口。

分解动作

滑动前

TCP-IP之滑动窗口
图示都包含哪些信息呢?我们分解来看。

  • 接收端的窗口大小为6
  • 窗口外,左侧为已经发送且已经收到ack,这部分数据可以丢弃了。
  • 12-14为已经发送,但未收到ack。(不能丢弃,有可能需要重发)
  • 15-17为未发送数据,由于未确认数据小于6,所以可以很快发送
  • 窗口外,右侧为未发送数据,但由于窗口已满,不能发送

滑动后

TCP-IP之滑动窗口

  • sender收到ack=12的确认包
  • 窗口向右滑动
  • 窗口内的数据改为13-18

    总结

    以上就是TCP/IP中的滑动窗口。
    滑动窗口也是服务限流的一种算法。

    其他

    有些同学可能会问,如果首先收到ack=13的确认包,滑动窗口是什么样的呢?我们直接上图吧!
    TCP-IP之滑动窗口

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI