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号帧。此时接收窗口状态仍不变。

10 TCP限流技术的更多相关文章

  1. coding++:高并发解决方案限流技术--计数器--demo

    1.它是限流算法中最简单最容易的一种算法 计数器实现限流 每分钟只允许10个请求 第一个请求进去的时间为startTime,在startTime + 60s内只允许10个请求 当60s内超过十个请求后 ...

  2. coding++:高并发解决方案限流技术---漏桶算法限流--demo

    1.漏桶算法 漏桶作为计量工具(The Leaky Bucket Algorithm as a Meter)时,可以用于流量整形(Traffic Shaping)和流量控制(TrafficPolici ...

  3. coding++:高并发解决方案限流技术-使用RateLimiter实现令牌桶限流-Demo

    RateLimiter是guava提供的基于令牌桶算法的实现类,可以非常简单的完成限流特技,并且根据系统的实际情况来调整生成token的速率. 通常可应用于抢购限流防止冲垮系统:限制某接口.服务单位时 ...

  4. 高并发解决方案限流技术-----使用RateLimiter实现令牌桶限流

    1,RateLimiter是guava提供的基于令牌桶算法的实现类,可以非常简单的完成限流特技,并且根据系统的实际情况来调整生成token的速率.通常可应用于抢购限流防止冲垮系统:限制某接口.服务单位 ...

  5. [WCF编程]9.性能与限流

    一.性能概述 WCF服务的性能取决于很多因素.出了CPU.RAM和网络性能等常见的因素外,实例上下文模式.并发模式.数据契约的设计或使用的绑定等与WCF有关的因素都起着重要的作用. 实例上下文模式用来 ...

  6. SpringBoot进阶教程(六十七)RateLimiter限流

    在上一篇文章nginx限流配置中,我们介绍了如何使用nginx限流,这篇文章介绍另外一种限流方式---RateLimiter. v限流背景 在早期的计算机领域,限流技术(time limiting)被 ...

  7. 控制ASP.NET Web API 调用频率与限流

    ASP.NET MVC 实现 https://github.com/stefanprodan/MvcThrottle ASP.NET WEBAPI 实现 https://github.com/stef ...

  8. 使用RateLimiter完成简单的大流量限流,抢购秒杀限流

    RateLimiter是guava提供的基于令牌桶算法的实现类,可以非常简单的完成限流特技,并且根据系统的实际情况来调整生成token的速率. 通常可应用于抢购限流防止冲垮系统:限制某接口.服务单位时 ...

  9. SpringCloud之Zuul高并发情况下接口限流(十二)

    高并发下接口限流技术gauva(谷歌的框架) MySql最大连接数3000: 原理:框架每秒向桶里放100个令牌,接口请求来了先去拿令牌,拿到令牌后才能继续向后走,否则不允许向后执行:当接口请求太频繁 ...

随机推荐

  1. Facebook币Libra学习-2.交易生命周期

    交易生命周期 为了更加深入的理解Libra的交易生命周期,我们将跟随一个交易的全过程,从其被提交到Libra validator始,直至其被添加到区块链上止.我们将“放大”来看每个validator逻 ...

  2. JPEG Image Super-Resolution via Deep Residual Network

    基于深度残差网络的JPEG图像超分辨率 JPEG Image Super-Resolution via Deep Residual Network PDF https://www.researchga ...

  3. 《Flutter 实战》开源电子书

    <Flutter 实战>开源电子书 转 https://blog.csdn.net/OQjya206rsQ71/article/details/86619630   关于 Flutter ...

  4. OPC 数据交互环境配置

    本文源自ioufev先生的博客<OPC和DCOM配置>(https://www.cnblogs.com/ioufev/p/9365919.html)及「geekc」先生的<OPC工作 ...

  5. Java基础——值传递

    值传递? 参数传递的值的拷贝,改变拷贝不影响原参数. 引用传递? 参数传递的是参数本身,改变形参,实参也改变. Java中是什么传递? Java中只有值传递 实际情况为什么不对呢? 1. 基本数据类型 ...

  6. Linux特基础的知识(接上一条)

    grep:文本过滤工具(找到要找的文本) print lines matching a pattern例: 打印 行 匹配 一个 模式/样式[root@oldboyedu /opt]# grep &q ...

  7. Webpack实现按需打包Lodash的几种方法详解

    参考链接:https://www.jb51.net/article/113235.htm 在vue-cli3中需要将babel-preset-es2015插件更换为@babel/preset-env插 ...

  8. Spring框架IOC和AOP介绍

    说明:本文部分内容参考其他优秀博客后结合自己实战例子改编如下 Spring框架是个轻量级的Java EE框架.所谓轻量级,是指不依赖于容器就能运行的.Struts.Hibernate也是轻量级的. 轻 ...

  9. C语言控制台软件制作

    本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数个符号:各行符号中心对齐:相邻两 ...

  10. C语言I博客作业12—学期总结

    一.我学到的内容 二.我的收获(包括我完成的所有作业的链接+收获)不能只有作业链接,没有收获 作业次数 作业链接 第一次 C语言I博客作业01 第二次 C语言I博客作业02 第三次 C语言I博客作业0 ...