二、拥塞窗口

迄今为止,在本章所有的例子中,发送方一开始便向网络发送多个报文段,直至达到接收方通告的窗口大小为止。当发送方和接收方处 于同一个局域网时,这种方式是可以的。但是如果在发送方和接收方之间存在多个路由器和速率较慢的链路时,就有可能出现一些问题。一些中间路由器必须缓存分 组,并有可能耗尽缓存,[Jacobson 1988]证明了这种连接方式是如何严重降低了TCP连接的吞吐量的。现在,TCP需要支持一种被称为“慢启动(slow start)”的算法。该算法通过观察到新分组进入网络的速率应该与另一端返回确认的速率相同而进行工作。

慢启动为发送方的TCP增加了另一个窗口:拥塞窗口(congestion window),记为cwnd。当与另一个网络的主机建立TCP连接时,拥塞窗口被初始化为1个报文段(即另一端通告的报文段大小).每收到一个ACK, 拥塞窗口就增加一个报文段(cwnd以字节为单位,但是慢启动以报文段大小为单位进行增加).发送方取拥塞窗口与通告窗口中的最小值作为发送上限。拥塞窗 口是发送方使用的流量控制,而通告窗口则是接收方使用的流量控制。

发送方开始时发送一个报文段,然后等待ACK。当收到该ACK时,拥塞窗口从1增加为2,即可以发送两个报文段。当收到这两个报文段的ACK时,拥塞窗口就增加为4。这是一种指数增加的关系。

拥塞避免是发送方使用的流量控制,而通告窗口则是接收方进行的流量控制。前者是发送方感受到的网络拥塞的估 计,而后者则与接收方在该连接上的可用缓存大小有关。

拥塞控制:防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。when the interface has to transmit more data than it can handle

拥塞发生有超时和收到重复确认两种情况,

超时会启用慢启动和避免拥塞算法

slow start

重复确认可以避免过长时间的等待,会启用快速重传和快速恢复

3) 拥塞控制机制:慢启动和成倍减少;TCP 协议实际发送窗口的大小应该是拥塞窗口接收方接收窗口中小的一个

a) 成倍减少机制:当TCP 发现数据段丢失(即超时重发)时,就将拥塞窗口的大小减少一半(但其大小至少应为1 ) ,对于减小窗口后仍在发送窗口中的数据段,将其重发的超时值延长一倍。

b) 慢启动机制:在TCP 启动一个新的连接或拥塞结束后,将拥塞窗口的大小设置为一个数据段的大小,然后每收到一个确认段,TCP 就将拥塞窗口的大小增加一个数据段;在拥塞发生并恢复后,通过慢启动机制使得拥塞窗口的大小达到了拥塞之前的一半,TCP 就启动一个拥塞避免机制以减缓窗口扩大的速度

4) 傻窗口症状:极端的情况,接收方的应用程序一直没有处理接收到的数据,这样接收方的TCP 缓冲区都被接收到的数据占满,接收窗口的大小减小为0,TCP 将这个窗口大小通知给发送方TCP,这时整个数据传输就停下来了

results matching ""

    No results matching ""