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. [java]察看两个日期间差多少秒/小时/天

    Java 中Date类getTime()的方法返回从1970-1-1以来的毫秒数,这是下面函数运行的基础. package com.example.demo; import java.text.Par ...

  2. linux下的什么工具能将DVI文件转换成PostScript文件?

    答: dvips,此工具能将由Latex或Tex生成的DVI文件转换成PostScript文件,官网在此

  3. SQL-W3School-高级:SQL ALTER TABLE 语句

    ylbtech-SQL-W3School-高级:SQL ALTER TABLE 语句 1.返回顶部 1. ALTER TABLE 语句 ALTER TABLE 语句用于在已有的表中添加.修改或删除列. ...

  4. ubuntu18 bluebooth

    QDBusPendingReply: type ManagedObjectList is not registered with QtDBus 19:36:14: The program has un ...

  5. [转]将西部数据 My Passport Wireless 移动存储连接到任何支持的云存储上

    原文标题:对西部数据 My Passport Wireless 移动存储进行 Linux 魔改 原文链接:https://linux.cn/article-8246-1.html 虽然 WD My P ...

  6. antd二级联动异步加载

    /** * Created by Admin on 2016/9/19. * 批量导入 */ import React, {Component, PropTypes} from "react ...

  7. jeesite框架前端 tabPage页签刷新功能。

    js主动刷新当前页签的js代码 原本想找一下jeesite有没有主动刷新当前页面的内置方法. 官方文档找了一大堆,找都找不到,也可能我这个需求比较少人需要. tab标签页有一个右键刷新页签功能 查看编 ...

  8. ECS适合你吗?

    实体组件系统处于预览状态.不建议用于生产. 目前有两个很好的理由使用它. 你想试验 这是令人兴奋的新技术,并且大规模性能提升的承诺正在引诱.试试看.给我们您的反馈.我们很乐意在论坛上与您交谈. 您正在 ...

  9. 分布式消息通信之RabbitMQ Tutorials

    目录 官网 1 Hello World! 1.1 生产者demo producer 1.2 消费者demo consumer 1.3 查看queue队列中的信息 页面查看,可看到有4条消息 命令查看 ...

  10. 2019华东交通大学ACM基地简介

    一.基地成就简介: ACM国际大学生程序设计竞赛(英文全称:ACM International Collegiate Programming Contest(简称ACM-ICPC或ICPC))是由国际 ...