作者:故事我忘了
个人微信公众号:程序猿的月光宝盒

1.TCP的滑动窗口

1.1 RTT和RTO的区别

​ RTT:发送一个数据包到收到对应的ACK,所花费的时间

​ RTO:重传时间间隔,TCP在发送一个数据包之后,会启动一个重传定时器,RTO就是这个定时器的重传时间,再通俗的讲就是,一开始先算一个定时器时间,如果你回复了ACK,那重传定时器就自动失效,也就是说不用重传了,但是如果没有回复给我ACK,RTO定时器的时间又到了,就重传,由于RTO是本次数据包所发送的超时时间,那么RTO就需要一个很好的算法去统计,来更好的预测这次的超时时间,RTO不是固定写死的配置,而是经过RTT计算出来的,有了RTT才能计算出RTO.基于RTO才有了重传机制,而后才有滑动窗口

1.2 TCP使用滑动窗口做流量 控制与乱序重排

滑动窗口主要有两个作用:

​ 1.保证TCP可靠性

​ 2.保证TCP的流控特性

1.3 窗口数据的计算过程

◇EffectiveWindow = AdvertisedWindow-(LastByteSent-LastByteAcked)

1.4 滑动窗口的基本原理

1.4.1 TCP会话的发送方

任何时候都能分为4类

1:已经发送并且得到端的回应的

2:已经发送但是没有得到端的回应的

3:未发送,但允许对端发送的

4:未发送,且不允许对端发送的

其中:2+3即为发送端口

1.4.2 滑动原理:

1.5 TCP会话的接收方

在某一时刻,在接受缓存范围内有四种状态

1+2.已接收,已发送回执

3.未接收,但是可以接收(准备接收)

4.未接受,也不能接收

其中3为接收窗口

由上可知,TCP最基本的传输可靠性,来源于确认重传机制,TCP滑动窗口的可靠性,也是建立在确认重传基础上的

滑动窗口的大小可以根据一定策略动态调整.

最新文章

  1. php 函数strpos()
  2. 三种Scriptlet总结
  3. centos搭建svn服务器并在windows实验
  4. Codeforces Round #294 (Div. 2)
  5. 以雅酷网为实例从技术上说说dedecms的seo优化要注意哪些?
  6. AppSettings和ConnectionStrings的区别
  7. 【BZOJ】【2084】【POI2010】Antisymmetry
  8. lintcode:Number of Islands 岛屿的个数
  9. About javascript closure
  10. ubuntu 14.04 编译安装 nginx
  11. Cplus
  12. 监控gc
  13. JS完成页面跳转并传参的方法|附加:循环遍历对象
  14. SpringMVC mock测试详解
  15. 转 spring注解式参数校验
  16. 微信SDK登录无法调起,微信SDK无法接收回调的几种解决办法
  17. idhttp.post方式 调用datasnap rest 远程方法(转咏南兄)
  18. 有时间研究一下Spark的HashPartitioner和RangePartitioner
  19. python - class类 (五) 继承补充-子类继承父类属性/函数方法
  20. Python-百度经纬度转高德经纬度

热门文章

  1. C# WPF有趣的登录加载窗体
  2. 《Dotnet9》建站-记录建站过程中使用的一些网址
  3. JPA中实现双向一对多的关联关系
  4. Maven 项目在 Eclipse 的创建配置
  5. oracle数据库执行sql文件
  6. ReactNative: 使用弹出框组件ActionSheetIOS组件
  7. 【译】如何使用docker-compose安装anchore
  8. ruby中的数组相关方法介绍
  9. mybatis中 == 和 != 的用法
  10. 从零开始手写 dubbo rpc 框架