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视为安全的方法,只获取资源信息,不对服务器进行修改。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值