TCP 拥塞窗口原理

本文详细介绍了TCP的拥塞控制策略,包括慢启动、拥塞避免、快速重传和快速恢复算法,以及TCP的改进版本如NewReno和SACK。通过实例解释了这些算法如何工作,以防止网络拥塞并提高数据传输效率。
摘要由CSDN通过智能技术生成

慢启动

当主机开始发送数据时,如果立即所大量数据字节注入到网络,那么就有可能引起网络拥塞,因为现在并不清楚网络的负荷情况。因此,较好的方法是先探测一下,即由小到大逐渐增大发送窗口,也就是说,由小到大逐渐增大拥塞窗口数值。通常在刚刚开始发送报文段时,先把拥塞窗口 cwnd 设置为一个最大报文段MSS的数值。而在每收到一个对新的报文段的确认后,把拥塞窗口增加至多一个MSS的数值。用这样的方法逐步增大发送方的拥塞窗口 cwnd ,可以使分组注入到网络的速率更加合理。

每经过一个传输轮次,拥塞窗口 cwnd 就加倍。一个传输轮次所经历的时间其实就是往返时间RTT。不过“传输轮次”更加强调:把拥塞窗口cwnd所允许发送的报文段都连续发送出去,并收到了对已发送的最后一个字节的确认。

另,慢开始的“慢”并不是指cwnd的增长速率慢,而是指在TCP开始发送报文段时先设置cwnd=1,使得发送方在开始时只发送一个报文段(目的是试探一下网络的拥塞情况),然后再逐渐增大cwnd。

下面,我们从示例图着手,来分析慢启动的过程。

  • 在协商连接时,两个设备交换它们的接收器窗口(在这种情况下它们都有 32KB)

  • 双端都以 1KB 的拥塞窗口开始,但由于在该示例中客户端将是唯一发送数据的客户端,因此它将是唯一一个显着使用此值的客户端。

  • 在第 2 行,客户端收到一个 ACK并将其 CWND 加倍(现在是 2k)

  • 服务器在第 3 行收到一个ACK时也做同样的事情

  • 客户端发送两段 1k 的数据,它们稍后在第 6 行和第 7 行确认,其中客户端上的拥塞窗口加倍(4k,然后是 8k)

  • 然后,客户端再次发送 1k 数据并立即得到确认,有效地再次将拥塞窗口加倍(现在第 9 行为 16k)。

  • 这在第 10-11 行重复,其中 CWND 达到 32k。

  • 此时,除非接收端窗口也增长,否则拥塞窗口不能再增长。

慢启动的整个过程如下:

  • 初始化 cwnd = 1

  • 经过1个RTT,即收到一个ACK,cwnd = 2^(1) = 2

  • 经过2个RTT, cwnd = 2^(2) = 4

  • 经过3个 RTT, cwnd = 2^(3) = 8

拥塞避免

让拥塞

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值