TCP限流是因为让接收方充分接受完消息,保证数据安全,不会丢失

一、窗口机制介绍

发送端和接收端都拥有一个窗口,当发送端发送数据时,落进窗口的数据被发送,当接受端接受数据时,落进接收端窗口的数据将会被接受。由此可见可以通过窗口大小限制流量

二、滑动窗口技术(限流使用到的技术)

 TCP滑动窗口技术通过动态改变窗口大小来调节两台主机间的数据传输。每个TCP/IP主机支持全双工数据传输,因此TCP有两个滑动窗口: 
一个用于接收数据,另一个用于发送数据.TCP使用确定技术,其确定号指的是下一个所期待字节.假定发送方设备以每次三个数据包发送数据,也就是说,窗口大小为3.
发送方发送序列号的1,2,3的三个数据包,接收方成功接收数据包,用序列号4确认.发送方设备收到确认,继续以窗口大小3发送数据.当接收方设备要求降低或者增大网络流量时,
可以对窗口大小进行减小或者增加.本例降低窗口大小为2,每一次发送两个数据包.当接收方设备要求窗口大小为0,表示接收方已经接受全部数据,或者接收方应用程序没有时间读取数据,
要求暂停发送,发送方接受到携带窗口号为0的确认,停止这一方向的传输.

三、举例说明

过程分析:

  1、初始状态,发送方没有帧发出,发送窗口前后相位重合。接收方0号窗口打开,等待就接收0号帧;

  2、发送方打开0窗口,表示已发出0帧但尚未确认返回信息。此时接收窗口状态不变;

  2、发送方再打开1号窗口,表示0,1号帧都在等待确认之列。至此发送方打开的窗口数已达到规定限度,在未接受新的确认返回帧之前,发送方将暂停发送新的数据帧。此时接收窗口状态仍未改变

  4、接收方收到0号帧,0号窗口关闭,1号窗口打开,表示准备接受一号帧,此时发送窗口不变,

  5、发送方收到接收方发来的0号确认返回信息,关闭0号窗口,表示从重发表中删除0号帧。此时接收方窗口不变。

  6、发送方删除0号帧以后,没有达到最大限制,将2号窗口打开,,准备发送2号帧,此时待确认之列中有1号帧和2号帧。此时2号帧加入发送窗口又已达到规定限度,在未接收到新的确认返回帧之前,发送方暂停数据帧的发送,此时接收窗口状态不变

  7、接收方已收到1号帧,一号窗口关闭,2号窗口打开,表示准备接收2号帧。此时发送窗口不变

  8、发送方收到接收方发来的一号帧接收完的确认信息,关闭1号窗口,表示删除1号帧。此时接收窗口状态仍不变。

最新文章

  1. 【已解决】新搭建的VPN服务器客户端无法正常连接
  2. 数据库mysql优化方案
  3. 2016 Al-Baath University Training Camp Contest-1 J
  4. [Jquery]滑动门效果
  5. TensorFlow安装与测试
  6. IP地址子网掩码、主机数、子网掩码及主机段的算法
  7. discuz 重新定义jquery的$
  8. 简易的highcharts公共绘图模块封装--基于.net mvc
  9. VS2010 ReportViewer导出文件下载保存不能识别文件类型
  10. MYSQLI DEMO
  11. 使用Simple DNS plus 构建自己的DNS
  12. php注册、登录界面的制作
  13. HTML&javaSkcript&CSS&jQuery&ajax(五)
  14. mongodb用户管理和服务安装
  15. SQL 中的连接查询
  16. 获取ip,获取客户端浏览器,获取客户端访问操作系统,获取客户端访问设备
  17. ActiveMQ专题2: 持久化
  18. 【C#】利用JMail发送邮件
  19. Spark之 RDD转换成DataFrame的Scala实现
  20. Mybatis插入数据返回自增主键

热门文章

  1. /proc/sys/kernel/sysrq /proc/sysrq-trigger----强制重启/触发器
  2. word里快捷输入分割线
  3. kotlin中集合
  4. java time
  5. Git Command之Code Review
  6. css简单学习属性
  7. 图解 HTTP 笔记(六)——HTTP 首部
  8. 【转】【很全很新】C3P0 连接池和 DBUtils 配合事务使用总结
  9. Method org/apache/commons/dbcp/DelegatingResultSet.isClosed()Z is abstract
  10. 初始Hibernate框架