TCP/IP(十五)拥塞控制

一  拥塞控制

①   拥塞控制必要性

思考: 为什么要有'拥塞控制'呀,不是有'流量控制'了吗?

TCP/IP(十五)拥塞控制_第1张图片

②  拥赛窗口 cwnd

'什么是'拥塞窗口? 和发送窗口有'什么关系'呢?

明白: cwnd、swnd、rwnd '缩写' 含义

TCP/IP(十五)拥塞控制_第2张图片

③  如何知道当前网络是否出现了拥塞呢?

1、其实只要'发送方' 没有在'规定时间内'接收到 ACK '应答'报文

2、也就是发生了'超时'重传,就会认为网络'出现了拥塞'

④  拥塞控制有哪些控制算法?

拥塞控制'主要'是'四个'算法:

  1、慢启动

  2、拥塞避免

  3、拥塞发生

  4、快速恢复

⑤  慢启动

慢启动的算法的'规则':当 发送方 '每收到一个 ACK',拥塞窗口 cwnd 的大小就会'加 1'

小结: 看出'慢启动'算法,'发包的个数'是'指数性'的增长

MSS '大小'

TCP/IP(十五)拥塞控制_第3张图片

⑥  那慢启动涨到什么时候是个头呢?

⑦   拥塞避免算法

TCP/IP(十五)拥塞控制_第4张图片

假定 ssthresh 为 '8','拥塞避免算法'的'变化过程'如下图:

TCP/IP(十五)拥塞控制_第5张图片

⑧  拥塞发生

TCP/IP(十五)拥塞控制_第6张图片

1、发生'超时重传'的'拥塞发生算法'

TCP/IP(十五)拥塞控制_第7张图片

2、怎么'查看'系统的 cwnd '初始化值'?

  1) Linux 针对'每一个 TCP 连接'的 cwnd 初始化值是 '10', 也就是 10 个 MSS

  2) 我们可以用 'ss -nli' 命令查看每一个 TCP 连接的 cwnd '初始化值',如下图:

TCP/IP(十五)拥塞控制_第8张图片

3、拥塞发生算法的'变化如下图':

cwnd --> 初始为'1'

TCP/IP(十五)拥塞控制_第9张图片

4、 发生'快速重传'的'拥塞发生算法'

TCP/IP(十五)拥塞控制_第10张图片 

⑨  快速恢复

TCP/IP(十五)拥塞控制_第11张图片

演示: '快速恢复算法'的'变化过程'如下图:

TCP/IP(十五)拥塞控制_第12张图片 

思考: 快速恢复算法过程中,'为什么'收到新的数据后,'cwnd' 设置回了 'ssthresh'?

TCP/IP(十五)拥塞控制_第13张图片

你可能感兴趣的:(TCP/IP,cwnd,拥塞窗口,慢启动,拥塞避免算法,拥塞发生,快速恢复)