设 TCP 的 ssthresh (慢开始门限)的初始值为 8 (单位为报文段)。当拥塞窗口上升到 12 时网络发生了超时, TCP 使用慢开始和拥塞避免。试分别求出第 1 次到第 15 次传输的各拥塞窗口大小。
答:
(1) 慢开始:在主机刚刚开始发送报文段时,可先将拥塞窗口 cwnd 设置为一个最大报文段 MSS 的数值。作用:在每收到一个对新的报文段的确认后,将拥塞窗口增加至多一个 MSS 的数值。用这样的方法逐步增大发送端的拥塞窗口 cwnd ,可以使分组注入到网络的速率更加合理。
(2) 拥塞避免:当拥塞窗口值大于慢开始门限时,停止使用慢开始算法而改用拥塞避免算法。作用:拥塞避免算法使发送端的拥塞窗口每经过一个往返时延 RTT 就增加一个 MSS 的大小。
(3) 当 cwnd<ssthresh 时,拥塞窗口按指数规律增长;
当 cwnd>ssthresh 时,拥塞窗口按线性规律增长;
当发生超时时, ssthresh 的值更新为发送窗口数值的一半。
第一轮次拥塞窗口的大小为1,第15轮次的拥塞窗口为9,根据慢开始算法当在第4个时间轮次上升到8时(此时拥塞窗口为8)改为执行拥塞避免算法(加法增大),由已知得当到第8个轮次的时候拥塞窗口为12此时网络发生了超时,更新后的ssthresh值变为6(发送窗口12的一半)拥塞窗口再重新设置为 1,并执行慢开始算法第9个轮次为1,到第12个轮次窗口数变为6开始加法增大到第15个轮次时拥塞窗口为9.
因此,拥塞窗口的大小分别为:
次数 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
拥塞窗口大小 | 1 | 2 | 4 | 8 | 9 | 10 | 11 | 12 | 1 | 2 | 4 | 6 | 7 | 8 | 9 |
慢开始 | 拥塞避免 | 慢开始 | 拥塞避免 | ||||||||||||
指数增长 | 线性增长 | 指数增长 | 线性增长 |