IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 【计算机网络】-TCP的拥塞控制及拥塞控制方法 -> 正文阅读

[网络协议]【计算机网络】-TCP的拥塞控制及拥塞控制方法

TCP的拥塞控制

TCP的拥塞控制与流量控制不同,前者是全局性的控制,而后者是针对点对点通信量的控制。

网络上有很多计算机,可能当前的网络状态已经比较拥堵了。此时贸然发送大量数据,会造成大量丢包。

若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下降。

TCP的拥塞控制便是用于防止网络出现拥塞的。

在这里插入图片描述

TCP的拥塞判断

TCP的判断网络是否发生拥塞有两种方法:

1、是否发生超时
如果过了超时重传时间发送方仍未收到确认报文,那么TCP就会认为当前网络已经发生拥塞。采用慢开始算法进行处理。

2、收到连续3个重复的ACK报文
如果发送方收到了连续3个重复的ACK报文,那么TCP也会认为当前网络发生了拥塞。采用快恢复算法进行处理。

TCP拥塞控制的方法

TCP的拥塞控制方法一共有4种:

1、慢开始
2、拥塞避免
3、快重传
4、快恢复

基于窗口的拥塞控制

拥塞窗口

TCP连接中发送方会维护一个叫拥塞窗口(cwnd)的状态变量。

拥塞窗口的大小取决于网络的拥塞程度,并动态地变化着,发送方会使自己的发送窗口等于拥塞窗口。

慢开始

慢开始算法的思路是先发送少量数据探探路,然后慢慢地增大拥塞窗口的大小。

假如拥塞窗口cwnd初始值为1,之后每收到1个ACK,拥塞窗口+1。

慢启动只是初始时发送速度慢,但实际上慢启动的数据发送速度增长是非常地快的。

在慢启动算法中,每经过一个传播轮次,拥塞窗口就会加倍。
在这里插入图片描述

为了不让拥塞窗口增长过快,TCP引入了慢启动门限(ssthresh),当拥塞窗口大小超过这个门限时,就不再按慢开始的算法增大拥塞窗口的大小了,而是改用拥塞避免算法

拥塞避免

每经过一个往返时间RTT,就把发送方的拥塞窗口+1。

即拥塞窗口按线性规律缓慢增大,这要比慢开始算法的拥塞窗口增长速率缓慢很多。
在这里插入图片描述

快重传

快重传算法可以让发送方尽早知道发生了个别数据段的丢失。

按照快重传算法,假如接收方收到了M1数据段和M2数据段,然后没有收到M3数据段就收到了M4数据段,那么接收方会重复发送M2确认报文,提醒发送方M3数据段已丢失。

在快重传算法中,发送方一旦收到连续3个重复的确认报文,就会立即重新发送丢失数据段。

在这里插入图片描述

快恢复

当发送方连续收到3个重复的确认报文时,发送方就知道当前发生了个别数据段的丢失,但网络很可能还没有发生拥塞,若采用慢开始算法速率下降过于严重,因此采用快恢复算法以缓解当前网络状态。

快恢复算法具体流程:
1、慢开始门限值改为当前拥塞窗口/2。

2、新拥塞窗口=慢开始门限。

3、开始执行拥塞避免算法,使拥塞窗口缓慢地线性增大。

TCP拥塞控制总体流程图

在这里插入图片描述

TCP拥塞控制综合例子

下图是非常经典的TCP拥塞控制例子,运用到了4种拥塞控制算法,可以说掌握了下图,就基本掌握了TCP的4种拥塞控制方法。
在这里插入图片描述
一开始时,TCP采用慢开始算法逐渐增大拥塞窗口的大小。

到第1个点时,拥塞窗口达到慢开始门限值,开始采用拥塞避免算法继续增大拥塞窗口的大小。

到第2个点时,发生了超时,此时TCP认为网络已经发生了拥塞,开始采用慢开始算法重新缓慢增大拥塞窗口。

到第3个点时,拥塞窗口达到慢开始门限值,开始采用拥塞避免算法继续增大拥塞窗口的大小。

到第4个点时,发送方收到了连续3个重复的ACK确认报文,TCP采用快恢复算法进行处理。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-01-03 16:27:45  更:2022-01-03 16:27:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 11:40:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码