计算机网络note_TCP拥塞控制

本文详细阐述了TCP的拥塞控制机制,包括端到端拥塞控制、超时与3次冗余ACK的拥塞感知,以及慢启动和拥塞避免阶段的CongWin动态调整。同时,讨论了TCP的速率控制和AIMD原则,并分析了TCP吞吐量的计算。此外,还提及了TCP公平性问题,如多个TCP会话间的带宽分配以及与UDP的公平性挑战。
摘要由CSDN通过智能技术生成

1、TCP拥塞控制

拥塞控制有两种方式,一是端到端,二是网络设备提供拥塞信息;(TCP是端到端拥塞控制)


检测拥塞程度及控制

  • 轻微拥塞,如何降低发送速率;
  • 拥塞,如何降低发送速率;
  • 不拥塞,如何增加发送速率;

2、如何感知拥塞?

超时:拥塞

超时大概率是网络拥塞,路由器无缓冲空间丢弃了;小概率是某一级校验出错,丢弃了;

将超时认为是网络拥塞,有一定误判,但大概率是对的;

3次冗余ACK:轻微拥塞

有出现丢包的情况,但网络仍有一定的传输能力,属于轻微拥塞;

丢包也可能是网络拥塞,也有概率是某一级校验出错;


3、TCP拥塞控制:速率控制

维持一个拥塞窗口的值:CongWin;

这时的网络速率rate = CongWin/RTT (b/s);

发送端 限制 “已发送未确认” 的数据量,LastByteSent - LastByteAcked ≤ CongWin;

拥塞控制和流量控制联合:取两个中最小的;


3.1、关于CongWin

CongWin是动态的,是感知网络拥塞程度的函数

  • 初始阶段:CongWin = 1;
  • SS慢启动阶段:每经过一个RTT,CongWin翻倍增加;
  • CA拥塞避免阶段:每经过一个RTT,CongWin加1

  • 超时:跌为CongWin = 1,进入SS阶段,加到上次CongWin/2,进入CA阶段
  • 3次冗余ACK降到CongWin/2,进入CA阶段;


例子:

初始CongWin = 1 MSS;

进入SS阶段,2,4,8,16超时,跌回CongWin = 1;(16/2 = 8);

再进入SS阶段,2,4,8,进入CA阶段,9,10,11,12,超时,跌回CongWin = 1;(12/2 = 6);

再进入SS阶段,2,4,进入CA阶段,5,6,7,8,9,到10时发现有3个ACK的轻微拥塞,降为一半10/2=5,再6,7,8....,遇到3个ACK再降为一半,要是直接遇到超时,只能重新再来了;


3.2、TCP拥塞控制特性:AIMD加性增乘性减


3.3、TCP吞吐量

忽略慢启动阶段,假设发送端总有数据要传输;

每个RTT时间,传输3/4W的数据,速率即(3/4)*(W/RTT);


 

4、TCP公平性

K个TCP会话,分享一个链路带宽为R的瓶颈,每个会话有效带宽为R/K;

下面是2个TCP会话,横轴吞吐量Rx,纵轴吞吐量Ry,Rx+Ry=R;

斜率为-1的这条线,代表了总吞吐量为R;吞吐量摇摆的过程中向这条线靠近,在超过这条线时由于轻微拥塞又回去;

  • 一开始在①处,Rx和Ry相差很大,随着CA过程的进行,超过最大吞吐量;
  • 取一半的位置到②处,再进入CA过程向上加,超过最大吞吐量;
  • 等到③的时候,Rx和Ry的差距已经很小了,最终会收敛到虚线处;


但是在网络上不止有TCP,还有UDP,UDP并不会进行流量/拥塞控制,这对TCP来说是不公平的;

主机间可以建立多个TCP连接,如果一对主机建立了1个TCP连接,另一对主机建立了10个TCP连接,这一点也是不公平的;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值