参考答案:我们可以用下面的图来说明这一问题。
图中在发送端和接收端之间的两个白色长条表示TCP全双工通信的发送管道和接收管道。管道是对信道的一种抽象,便于讨论问题(可以不涉及下层互连网络的细节)。
假定在t=0时发送端使用慢开始算法来发送报文段,因此在t=0时只能发送一个报文段(图中标有1的绿色长方条就代表报文段1)。图中的时间都是按离散的时间单位表示。
为简化分析,我们还假定,发送窗口仅由发送端的拥塞窗口来确定,接收端不对发送窗口加以限制。
[*]
假定在t=1时,报文段1的第一个比特正好走完四分之一的管道,同时该报文段的最后一个比特正好发送完毕。
t=4,报文段1的前沿到达接收端。
t=5时,接收端将报文段1接收完毕。
假定接收端立即发送确认报文段。我们所用的标记是:对报文段n的确认报文段我们用具有标记n的红色小长方条表示。
t=9,对报文段1的确认的前沿到达发送端。
t=10,发送端将发送窗口加1变为2(可以发送报文段2和3),并开始发送报文段2(这一步图中省略了,没有画出)。
t=11,报文段2走完发送管道的四分之一,发送端开始发送报文段3。
t=12,报文段2和3填满发送管道的一半。
t=14,报文段2的前沿到达接收端。
t=15,接收端收完报文段2,并发送对报文段2的确认。
t=16,接收端收完报文段3,并发送对报文段3的确认。
t=19,对报文段2的确认前沿传播到发送端。
t=20,发送端收到对报文段2的确认,将发送窗口加1变为3(可以发送报文段4,5和6),并开始发送报文段4(这一步图中省略了,没有画出)。对报文段3的确认的前沿也在这个时间传播到发送端。
再以后的过程我们用下面的另一张图来说明。
t=21,发送端收到对报文段3的确认,将发送窗口再加1变为4(可以发送报文段4,5,6和7),并开始发送报文段5。此时,报文段4已完全进入发送管道,前沿到了管道的四分之一处。
[*]
发送端每收到一个对没有确认过的报文段的确认,就将发送窗口加1。因此在陆续收到确认4~7后,将发送窗口加4,即增大到8,可以连续发送报文段8~15。
管道空间是有限的。从图中表示的例子可以看出,这样的管道至多可容纳4个报文段。当发送窗口很小时,管道在大部分时间内是比较空的(见前面的第一张图)。这说明在TCP连接中传输数据的效率比较低。
当发送窗口增大时,管道逐渐被填满。可以看出,在t=34~38时,发送管道一直是被填满的,这说明发送管道被利用得很充分。因为报文段的传输需要时间,因此对报文段的确认总是会滞后一段时间。上面的例子表明,在单方向发送报文段(另一个方向发送确认)的情况下,发送管道和接收管道往往不能同时被充分利用(除非发送窗口的数值较大)。但如果双向都能发送数据报文段,那么发送管道和接收管道就都能够被利用得较充分。
我们还可看出,接收管道(即接收端发送确认报文段的管道)在任何情况下都没有填满。这是因为确认报文段很短,只需很短的时间就可发送出去。但接收一个数据报文段需要较多的时间,这就造成确认报文段不可能连续地从接收端发送出去。
我来回答:
最新试题