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. 2.5 Go语言基础之map

    Go语言中提供的映射关系容器为map, Go中内置类型,其内部使用散列表(hash)实现,为引用类型. 无序键值对(key-value)集合,通过key(类似索引)快速检索数据 必须初始化才能使用. ...

  2. Java同步数据结构之LinkedBlockingDeque

    前言 前面介绍完了队列Queue/BlockingQueue的实现类,接下来介绍双端队列Deque/BlockingDeque的实现类之一LinkedBlockingDeque,它是一种基于链表的可选 ...

  3. c++ new bad_alloc

    try { for (int i = 0; i<1000; i++) { test1 = new Test(); cout << i << " new dog ...

  4. postgresql之 drop & delete & truncate

    官网:https://www.postgresql.org/docs/8.1/sql-droptable.html Name DROP TABLE -- remove a table Synopsis ...

  5. CockroachDB学习笔记——[译]在CockroachDB中如何让在线模式更改成为可能

    原文链接:https://www.cockroachlabs.com/blog/how-online-schema-changes-are-possible-in-cockroachdb/ 原作者: ...

  6. .Netcore 2.0 Ocelot Api网关教程(6)- 配置管理

    本文介绍Ocelot中的配置管理,配置管理允许在Api网关运行时动态通过Http Api查看/修改当前配置.由于该功能权限很高,所以需要授权才能进行相关操作.有两种方式来认证,外部Identity S ...

  7. unity模型网址

    http://www.rr-sc.com/thread-16476562-1-1.html

  8. 通过bat批处理程序如何实现在多个txt文件后面加上相同的一行文字

    通过bat批处理程序如何实现在多个txt文件后面加上相同的一行文字 set/p a=输入要增加的文字 for /f "delims=" %%i in ('dir /b *.txt' ...

  9. OpenCV.20190628

    1.OpenCV提取ORB特征并匹配 - 简书.html(https://www.jianshu.com/p/420f8211d1cb) OpenCV提取ORB特征并匹配 - 简书.html(http ...

  10. eNSP——配置通过FTP进行文件操作

    原理: FTP (File Transfer Protocol,文件传输协议)是在TCP/IP网络和Internet.上最早使用的协议之-,在TCP/IP协议族中属于应用层协议,是文件传输的Inter ...