《网络协议》TCP 拥塞控制

TCP 拥塞控制主要有几种:慢启动、拥塞避免、快重传 以及
快恢复。

慢启动

为了防止网络拥塞,TCP 采用了一种慢启动算法,对发送数据量进行控制。为了调节发送端的数据发送量,引入了拥塞窗口,在慢启动时,将这个拥塞窗口设为 1 个报文段发送数据,之后每收到一次确认应答,拥塞窗口的值就加 1 个报文段。在发送数据包时,将拥塞窗口的大小与接收端主机通知的窗口大小进行比较,然后选择较小的值来控制数据量的发送。拥塞窗口是发送端使用的流量控制,而通告窗口则是接收端使用的流量控制。

慢启动算法步骤如下(cwnd全称Congestion Window):

  1. 初始化 cwnd = 1,表示可以传一个 MSS 大小的数据;
  2. 每当收到一个 ACK,cwnd++,即增加1,呈线性上升;
  3. 每当过了一个 RTT,cwnd = cwnd*2,呈指数让升;
  4. ssthresh(slow start threshold),是一个上限,当 cwnd >= ssthresh 时,就会进入“拥塞避免算法”(后面会说这个算法);

拥塞避免

拥塞避免算法是让拥塞窗口缓慢地增大,收到每一轮的确认后,将拥塞窗口的值加1,而不是加倍,这样拥塞窗口的值按照线性规律缓慢增长。在慢启动中,当cwnd >= ssthresh时,就会进入“拥塞避免算法”。一般来说ssthresh的值是65535,单位是字节,当cwnd达到这个值时后,算法如下:

  1. 收到一个 ACK 时,cwnd = cwnd + 1/cwnd;
  2. 当每过一个RTT时,cwnd = cwnd + 1;

快重传与快恢复

快重传算法首先要求接收方每收到一个失序的报文段后就立即发出重复确认(重复发送对前面有序部分的确认),而不是等待自己发送数据时才进行捎带确认,也不是累积收到的报文发送累积确认,如果发送方连续收到三个重复确认,就应该立即重传对方未收到的报文段(有收到重复确认,说明后面的报文段都送达了,只有中间丢失的报文段没送达)。

快恢复算法与快重传算法配合使用:

  1. 当发送方连续收到三个重复确认时,就把慢启动门限 ssthresh 设置为当前拥塞窗口 cwnd 的一半。重传丢失的报文段。设置 cwnd 为 ssthresh 加上3倍的报文段大小;
  2. 每次收到另一个重复的 ACK 时,cwnd 增加 1 个报文段大小并发送 1 个分组;
  3. 当下一个确认新数据的 ACK 达到时,设置 cwnd 为 ssthresh(跟第 1 步一样设置方法)。这个 ACK 应该是在进行重传之后的一个往返时间内对步骤 1 中重传的确认。另外,这个 ACK 也应该是对丢失的分组和收到的第一个重复的 ACK 之间的所以中间报文段的确认。这一步采用的是拥塞避免算法。

参考资料:

《TC/IP 详解》

TCP 的拥塞控制机制

时间: 2024-10-09 14:19:16

《网络协议》TCP 拥塞控制的相关文章

linux内核工程导论-网络:tcp拥塞控制

这篇文章本来是在tcp那篇里面的,但是那篇太长了,不专一.就完善了一下提取出来了. TCP拥塞控制 拥塞控制讨论的是很多个同时存在的tcp连接应该怎么规划自己的数据包发送和接收速度,以在彼此之间共享带宽,同时与其他实体的机器公平的竞争带宽,而不是自己全占. 拥塞控制的核心是AIMD(additive-increase/multiplicative-decrease ),线性增加乘性减少.为啥不用线性增加线性减少,或者是乘性增加乘性减少呢?这个有人专门研究过,只有AIMD可以收敛聚合使得链路公平.

网络协议|TCP/IP协议相关

双方会发送保活报文,当一方断开连接时,超过一定次数的保活报文没有被收到,就会停止发送. 在浏览器敲入URL并且按回车之后会发生什么: http状态码 post和get的区别 cookie和session的区别 原文地址:https://www.cnblogs.com/cykfory/p/10353501.html

【网络协议】TCP的拥塞控制机制

前言 计算机网络中的带宽.交换节点中的缓存和处理机等,都是网络的资源,在某段时间内,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏,这样的情况就叫做拥塞. 所谓拥塞控制,就是防止过多的数据注入到网络中,从而使网络中的路由器或链路不致过载.要注意用拥塞控制与流量控制的差别,拥塞控制是一个全局性的过程,涉及到全部的额主机.路由器,以及与减少网 拥塞控制的算法有:慢開始.拥塞避免.快重传.快恢复四种. 慢開始和拥塞避免 发送方维持一个拥塞窗体的状态变量,其大小取决于网络的拥

【网络】TCP协议

TCP协议:对于网络协议而言.TCP在传输层中是一个十分钟要的协议,那么什么是TCP协议呢? TCP协议概念: 传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义.在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议. 在因特网协议族(Internet protocol suite)中,TCP层是位于I

网络协议之TCP

前言 近年来,随着信息技术的不断发展,各行各业也掀起了信息化浪潮,为了留住用户和吸引用户,各个企业力求为用户提供更好的信息服务,这也导致WEB性能优化成为了一个热点.据分析,网站速度越快,用户的黏性.忠诚度.转化率等也越高.对网络通信有决定性影响的因素有延时和带宽,延时有传播延时.传输延时.处理延时和排队延时构成.对于日常网站浏览来说,延时要比带宽对性能影响更大,因为一个网站需要的资源往往是由很多小文件构成,需要多次请求才能完成,其处理延时.排队延时更大.不同的网络协议具有不同的信息传递方式,也

OSI七层模型,讲解tcp/ip五层涉及的网络协议,网络通信实现,结合协议来看网络通信流程

当我们通过自己电脑的浏览器访问京东的时候, 览器上输入了一个网址,但是我们都知道,互联网连接的电脑互相通信的是电信号,我们的电脑是怎么将我们输入的网址变成了电信号然后发送出去了呢,并且我们发送出去的消息是不是应该让京东的服务器能够知道,我们是在请求它的网站呢,也就是说京东是不是应该知道我发送的消息是什么意思呢.是不是发送的消息应该有一些固定的格式呢?让所有电脑都能识别的消息格式,他就像英语成为世界上所有人通信的统一标准一样,如果把计算机看成分布于世界各地的人,那么连接两台计算机之间的intern

TCP/IP网络协议

什么是协议?协议就是双方约定的规则.同理,在网络中,计算机之间的相互通信需要共同遵守一定的规则,这些规则就称为网络协议. 下面是我百度的定义: TCP/IP是“transmission Control Protocol/Internet Protocol”的简写,中文译名为传输控制协议/互联网络协议)协议, TCP/IP(传输控制协议/网间协议)是一种网络通信协议,它规范了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据往来格式以及传送方式.TCP/IP是INTERNET的基础协议,也

加域报错:“TCP/IP没有安装网络协议”

检查电脑后发现问题: 1.电脑不能自动获取IP地址 2.手动设置IP地址后加域报错 估计TCP/IP协议损坏,重新安装即可解决:以下为重装TCP/IP协议方法: 1.打开注册表编辑器,删除以下两个键: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock2 2.用记事本打开%winroot%\inf\nett

【网络协议】TCP中的四大定时器

前言 对于每个TCP连接,TCP一般要管理4个不同的定时器:重传定时器.坚持定时器.保活定时器.2MSL定时器. 重传定时器 非常明显重传定时器是用来计算TCP报文段的超时重传时间的(至于超时重传时间的确定,这里涉及到一大堆的算法,书上有说,我这里不细谈了).每发送一个报文段就会启动重传定时器,假设在定时器时间到后还没收到对该报文段的确认,就重传该报文段,并将重传定时器复位,又一次计算:假设在规定时间内收到了对该报文段的确认,则撤销该报文段的重传定时器. 坚持定时器 上篇文章中已经提到了,主要是