1. TCP流量控制   

    流量控制就是让发送方的发送速率不要太快,要让接收方来的及接收。

    原理是通过确认报文中窗口字段来控制发送方的发送速率,发送方的发送窗口大小不能超过接收方给出窗口大小。

    考虑一种特殊的情况,接收方向发送方发送了零窗口的报文段后,接收方又有了一些存储空间。与接收方向发送方发送了非零窗口的报文段。然而这个报文段在传送过程中丢失了。发送方的发送窗口一直为零导致死锁。

    为了解决这个问题,每个连接设置有持续计时器,只要连接的一方收到零窗口通知,就启动持续计数器。若持续计数器设置的时间到期,就发送一个零窗口探测报文段,而对方就在确认这个探测报文段给出现在的窗口值。如果窗口仍然为零,那么收到这个报文段的一方重置持续计数器,否则,那么死锁的僵局就可以打破。

2.TCP的拥塞控制

        拥塞控制:防止过多的数据注入到网络中,这样可以使网络中的路由器或链路过载。如果网络出现拥塞,分组将会丢失,此时发送方会继续重传,从而导致网络拥塞程度更高。因此当出现拥塞时,应当控制发送方的速率。这一点和流量控制很像,但是出发点不同。流量控制是为了让接收方能来得及接收(端对端的通信),而拥塞控制是为了降低整个网络的拥塞程度(全局性)。

2.1TCP的拥塞控制方法

TCP进行拥塞控制的算法有四种,即慢开始,拥塞避免,快重传,快恢复。

发送方让自己的发送窗口等于拥塞窗口,拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。

  1. 数据是单方向传送的,对方只传送确认报文。
  2. 接收方总是有足够大的缓存空间,因而发送窗口的大小由网络的拥塞程度决定。

简述TCP的流量控制与拥塞控制-LMLPHP

  1. 慢开始和拥塞避免

发送的最初执行慢开始,令 cwnd = 1,发送方只能发送 1 个报文段;当收到确认后,将 cwnd 加倍,因此之后发送方能够发送的报文段数量为:248 ...

cwnd > ssthresh(慢开始门限)时,改用拥塞避免算法,拥塞避免算法每经过一个往返时间cwnd1

cwnd = ssthresh时,既可以用慢开始也可以使用拥塞避免算法。

cwnd < ssthresh时,慢开始算法。

当网络出现超时,ssthresh = cwnd / 2,同时设置拥塞窗口cwnd=1.进入慢开始算法。

2.快重传与快恢复

简述TCP的流量控制与拥塞控制-LMLPHP

快重传算法要求接收方不要等待自己发送数据才进行捎带确认,而是立即发送确认。即使收到失序的报文段对已发送的报文段的重复确认。发送方一连收到3个重复确认就应当立即进行重传。在这种情况下,只是丢失个别报文段,而不是网络拥塞。因此执行快恢复,发送方调整门限值ssthresh =cwnd/2,同时设置拥塞窗口cwnd=ssthresh ,并开始拥塞避免算法。

慢开始和快恢复的快慢指的是 cwnd 的设定值,而不是 cwnd 的增长速率。慢开始 cwnd 设定为 1,而快恢复 cwnd 设定为 ssthresh

08-25 10:49