当前位置: 首页 > news >正文

TCP流量控制与拥塞控制

什么是流量控制

一条TCP连接的每一侧主机都为该连接设置了接收缓存。当该TCP连接接收到正确的、有序的报文段,就会将数据放入接收缓存。相关联的应用会从缓存中读取数据。

如果发送者发送数据过快、过多,而接收方的应用程序从缓冲区读取的速度较慢,就会导致缓冲区溢出

为了避免分组丢失,控制发送者的发送速度,使得接收者来得及接收,这就是流量控制

流量控制根本目的是防止分组丢失,使得发送速率与接收速率相匹配

流量控制引发的死锁?怎么避免死锁的发生?

        当发送者收到了一个窗口为0的应答,发送者便停止发送,等待接收者的下一个应答。但是如果这个窗口不为0的应答在传输过程丢失,发送者将会一直等待下去,而接收者以为发送者已经收到该应答,等待接收新数据,这样双方就相互等待,从而产生死锁。
        为了避免流量控制引发的死锁,TCP使用了持续计时器。当发送者收到一个零窗口的应答后就启动该计时器。发送方会持续发送只有一个字节数据的报文段,询问接收者的窗口大小。

        若接收者仍然返回零窗口,则重置该计时器继续等待;若窗口不为0,则表示应答报文丢失了,此时重置发送窗口后开始发送,这样就避免了死锁的产生。

        这个窗口称为rwnd(接收窗口),标识接收方可用缓存区

什么是拥塞控制

如果发送方因为IP网络的拥塞被制约,那么这种流量控制被称为拥塞控制(congestion control)

在TCP中,丢包一般是当网络变得拥挤是由于路由器缓存溢出引起的。拥塞控制用于处理路由器溢出导致的丢包问题。 

拥塞控制包括:慢启动,拥塞避免,快速恢复

流量控制与拥塞控制的区别

拥塞控制:拥塞控制是作用于网络的,它是防止过多的数据注入到网络中,避免出现网络负载过大的情况;常用的方法就是:( 1 )慢开始、拥塞避免( 2 )快重传、快恢复。

流量控制:流量控制是作用于接收者的,它是控制发送者的发送速度从而使接收者来得及接收,防止分组丢失的。

http://www.lryc.cn/news/62277.html

相关文章:

  • Java_异常
  • 自动化工具 接口自动化测试引擎
  • 十三、详解Kubernetes的存储管理器
  • java版 工程管理系统源码之提高工程项目管理软件的效率
  • VMware 安装 MS-DOS7.10 并配置网络
  • 嵌入式51单片机04-矩阵按键系列
  • 某安全对抗行走APP逆向分析
  • 数据库基础篇 《11.数据处理之增删改》
  • IDEA插件-MavenHapler
  • getaddrinfo调用crash 的debug过程
  • 【Sql】sql语句练习随记
  • IDEA社区版搭建Tomcat服务器并创建web项目
  • C++ [STL-简介]
  • 牛客前端编程语言错题2
  • 【C语言】基础语法3:控制流程结构
  • MySQL安全性:防止攻击和保护数据
  • R语言结构方程模型(SEM)
  • 软件or硬件?硬件的前途到底在哪里?
  • 同学在外包干了两年的点点点,24岁人就快废了
  • 基于Java springboot 疫情在线网课管理系统
  • Unity Camera -- (3)控制相机能看到的东西
  • 《基于深度迁移学习的可穿戴睡眠阶段分类》阅读笔记
  • java版工程管理系统源码企业工程项目管理系统简介
  • 机器学习算法 决策树
  • 论文笔记:An Interactive-Voting Based Map Matching Algorithm
  • _awt_container容器_演示
  • TryHackMe-Misguided Ghosts(boot2root)
  • 【Leetcode】10. 正则表达式匹配
  • 不得不说的结构型模式-装饰器模式
  • Flutter+YesAPI 快速构建零运维的APP