问答题 考虑在一条具有10ms来回路程时间的线路上采用慢启动拥塞控制,而不发生网络拥塞情况,接收窗口24KB,且最大段长2KB。那么,需要多长时间才能够发送第一个完全窗口?
【正确答案】
【答案解析】慢启动拥塞控制考虑了两个潜在的问题,即网络容量和接收方容量,并且分别处理每一个问题。为此,每个发送方都维持两个窗口,即接收方准许的窗口和拥塞窗口。发送方可以发送的字节数是这两个窗口中的最小值。
当建立一条连接的时候,发送方把拥塞窗口初始化为在该连接上使用的1个最大报文段尺寸。然后它发送1个最大报文段。如果这个报文段在超时之前得到确认,发送方就把拥塞窗口增加到2个最大报文段长,并发送两个报文段。当发出去的每个报文段被确认时,拥塞窗口都要增加1个最大报文段。因此,当拥塞窗口是n个报文段时,如果所有n个报文段都及时得到确认,那么拥塞窗口将增加n个最大报文段,变成2n个最大报文段。事实上,每一次突发性连续报文段都会使拥塞窗口加倍。
拥塞窗口继续按指数型增长,直到超时发生,或者到了接收方窗口的边界。其思想是如果突发量1024B、2048B和4096B工作得很好,但8192B的突发量引起超时,那么拥塞窗口应该设置成4096B以避免拥塞。只要拥塞窗口保持在4096B,不管接收方准许什么样的窗口空间,都不会发送大于4096B的突发量。这种算法就被称为慢启动。当然,它根本不是慢的意思。现在所有的TCP实现都需要支持这个算法。
现在,最大的段长是2KB,开始的突发量分别是2KB、4KB、8KB和16KB,下面是24KB,即第一个完全窗口。10ms×4=40ms。因此,需要40ms才能发送第一个完全窗口。