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拥塞控制

目的:提高网络利用率,降低丢包率,保障网络资源对每条数据流的公平性

网络拥塞:在某段时间内,若对网络中某一资源的需求超过了该资源所能提供的可用部分,就会导致网络性能变差。

拥塞控制的最终受控变量:发送端向网络一次连续写入的数据量,称为SWND。(发送窗口

TCP报文段的数据部分最大长度称为SMSS

SWND限制了发送端能连续发送的TCP报文数量。

对于SWND的选择,如果过小则会造成明显的网络延迟,如果过大则容易造成网络拥塞

SWND的由接收方的接收告知窗口RWND)和发送端的拥塞窗口CWND)中的较小值所决定。

四种拥塞控制算法:

慢启动

慢启动:在TCP建立连接后,CWND将被初始化值为IW(2~4个SMSS),每次发送端收到一个接收端的确认,CWND就会增加 CWND+=min(N,SMSS)

N为此次确认中包含的之前未被确定的字节数

这样 CWND就按指数形式扩大,此为慢启动

使用慢启动的原因:TCP模块刚开始发送数据不知道网络的实际情况,就需要一种试探性的方式平滑的增加CWND的大小

慢启动门限:ssthresh;当CWND超过该值时,TCP拥塞控制将进入拥塞避免阶段。

拥塞避免

拥塞避免使得CWND按照线性方式增加,从而减缓其扩大

两种实现方式:

注释:RTT(往返时延。是指数据从网络一端传到另一端所需的时间。通常,时延由发送时延、传播时延、排队时延、处理时延四个部分组成。)

①:在每个RTT时间内按照CWND+=min(N,SMSS) 计算新的CWND,不论该RTT时间内发送端收到了多少次确认

②:每收到一个对新数据的确认报文,就按 CWND+=SMSS*SMSS/CWND 来更新CWND。

以上为在发送端为检测到拥塞时采用的积极避免拥塞的方法。

发送端判断发送拥塞的依据:

  • 传输超时,或者TCP重穿定时器溢出 (使用慢启动和拥塞避免)
  • 接收到重复的确认报文段 (使用快重传和快恢复)

第一种情况,传输超时,将执行重传并调整ssthresh :

? ssthresh=max(FlightSize/2 , 2*SMSS )

? CWMD<=SMSS

FlightSize为已经发送但未收到确认的字节数。之后CWMD小于SMSS,也小于ssthresh,再次进入慢启动阶段

快重传和快恢复

很多时候,发送端会收到重复的确认报文段,可能是TCP报文段丢失或者接收端收到乱序的的TCP段并重排,此时拥塞控制需要进行判断网络是否真正发送了拥塞

具体判断方法:

发送端如果连续收到三个重复的确认报文段,认为拥塞发送,然后启动快重传和快恢复

1):当收到三个重复的确认报文时,重新计算ssthresh( ssthresh=max(FlightSize/2 , 2*SMSS ) ),然后立即重传丢失的报文,重新设置 CWND=sshthresh+3*SMSS

2):每收到一个重复的确认时,设置 CWND=CWND+SMSS ,此时发送端可以重新发送TCP报文段

3):当收到新的数据确认时,设置SWND=ssthresh,(ssthresh为第一步计算得到的新的慢启动门限值)

在快重传和快恢复完成后,拥塞控制进入拥塞避免阶段

附:
HTTP的请求头
HTTP请求:

第一行为请求行,其请求头(9种)有一下几种:

请求方式含义
GET申请获取资源,不对服务器产生影响。
POST客户端向服务器提交数据的方法,可能会对服务器产生影响,可能会创建新的资源或者更新已有资源
HEAD和GET类似,但是需要服务器返回头部信息,而不需要传输任何内容
PUT上传某个资源
DELETE删除某个资源
TRACE要求代理服务器返回原始HTTP请求的内容
OPTIONS查看服务器对每个特点URL请求都支持那些请求方式,将URL设置为*可查看服务器支持的所有请求方式
CONNECT用于某些代理服务器,将请求的连接转换为一个安全隧道
PATCH对某个资源做部分修改

其中 GET/HEAD/OPTIONS/TRACE视为安全的方法,只获取资源信息,不对服务器进行修改。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-07-29 12:01:15  更:2021-07-29 12:02:46 
 
开发: 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/25 18:53:06-

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