TCP 流量控制和拥塞控制

TCP 流量控制和拥塞控制

 

TCP的流量控制滑动窗口

  发送窗口在连接建立时由双方商定。但在通信的过程中,接收端可根据自己的资源情况,随时动态地调整对方的发送窗口上限值(可增大或减小)。

为什么要设置窗口?

我们可以把窗口理解为缓冲区。

如果没有这些“窗口”,那么TCP每发送一段数据后都必须等到接收端确认后才能发送下一段数据,这样做的话TCP传输的效率实在是太低了。

1.1 窗口

(1)接收端窗口 rwnd     

接收端缓冲区大小。接收端将此窗口值放在 TCP 报文的首部中的窗口字段,传送给发送端。

(2) 拥塞窗口 cwnd (congestion window)    

发送端缓冲区大小

(3)发送窗口swnd 发送窗口的上限值 = Min [rwnd, cwnd]

当 rwnd < cwnd 时,是接收端的接收能力限制发送窗口的最大值。

当 cwnd < rwnd 时,则是网络的拥塞限制发送窗口的最大值。

 

TCP 流量控制和拥塞控制

 

TCP的拥塞控制       慢开始和拥塞避免   快恢复和快重传

  在某段时间,若对网络中的某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变化,这种情况叫做拥塞。

 

慢开始和拥塞避免:

最初的TCP在连接建立成功后会向网络中发送大量的数据包,这样很容易导致网络中路由器缓存空间耗尽,从而发生拥塞。因此新建立的连接不能够一开始就大量发送数据包,而只能根据网络情况逐步增加每次发送的数据量,以避免上述现象的发生。具体来说,当新建连接时,cwnd初始化为1个最大报文段(MSS)大小,发送端开始按照拥塞窗口大小发送数据,每当有一个报文段被确认,cwnd就增加1个MSS大小。

TCP 流量控制和拥塞控制

快重传和快恢复

如果当发送端接收到三个重复的确认ACK时,则断定分组丢失,立即重传丢失的报文段,而不必等待重传计时器超时

TCP 流量控制和拥塞控制

快恢复

1 当发送端收到连续三个重复的 ACK 时,就重新设置慢开始门限 ssthresh。