关于TCP拥塞窗口的典型题目分析

41.假设图中的H3访问Web服务器S时,S为新建的TCP连接分配了20KB(K=1024)的接收缓存,最大段长MSS=1KB,平均往返时间RTT=200ms。H3建立连接时的初始序号为100,且持续以MSS大小的段向S发送数据,拥塞窗口初始阈值为32KB;S对收到的每个段进行确认,并通告新的接收窗口。假定TCP连接建立完成后,S端的TCP接收缓存仅有数据存入而无数据取出。请回答下列问题。
(1)在TCP连接建立过程中,H3收到的S发送过来的第二次握手TCP段的SYN和ACK标志位的值分别是多少?确认序号是多少?
(2)H3收到的第8个确认段所通告的接收窗口是多少?此时H3的拥塞窗口变为多少?H3的发送窗口变为多少?
(3)当H3的发送窗口等于0时,下一个待发送的数据段序号是多少?H3从发送第1个数据段到发送窗口等于0时刻为止,平均数据传输速率是多少(忽略段的传输延时)?
(4)若H3与S之间通信已经结束,在t时刻H3请求断开该连接,则从t时刻起,S释放该连接的最短时间是多少?

解答:
(1)第二次握手TCP段的SYN=1,(1分)ACK=1;(1分)确认序号是101。(1分)
(2)题目规定S对收到的每个段(MSS大小的段)进行确认,并通告新的接收窗口,而且TCP接收缓存仅有数据存入而无数据取出(因此S每次确认一次收到的段,S的可用缓存,即接收窗口会减少一个MSS,并告知H3)。H3收到的第8个确认段后,被所通告的接收窗口是20-8=12KB;(1分)

在慢开始算法里,发送方H3先设置拥塞窗口cwnd=1KB(先设置为1个MSS=1KB),接下来H3每收到一个对新报文段的确认,就使发送方H3的拥塞窗口加1KB。H3共收到8个确认段,所以此时H3的拥塞窗口变为1+8=9KB;(1分)

H3发送窗口=min{H3的拥塞窗口,S的接收窗口}(教材5-4),所以H3的发送窗口变为min{9,12}=9KB。(1分)
(3)TCP是用字节作为窗口和序号的单位。当H3的发送窗口等于0KB时,也就是S接收窗口等于0KB时,
下一个待发送段的序号是20K+101=20×1024+101=20581;(疑问:tcp经历了3次握手,第一次seq = 100. 第二次握手 seq = 101 , 第三次握手 = 101,(可以发送数据)(1分)

H3从发送第1个段到发送窗口等于0KB时刻为止,经过五个传输轮次,(第1轮:窗口拥塞为1,发送1*MSS ;第2轮:窗口拥塞为2,发送2*MSS,.第3轮:窗口拥塞为4,发送4*MSS;第4轮:窗口拥塞为8,发送8个MSS;第5轮:S的接收窗口变为5,因此H3的拥塞窗口5,发送5个MSS,执行慢开始),每个传输轮次的时间就是往返RTT,因此平均数据传输速率是20KB/(5×200ms)=20KB/s=20.48kbps。(1分)

  1. 通信结束后,H3向S发送连接释放报文段。S收到H3的连接释放报文段后,马上发出确认报文段。此时S已经没有数据需要传输,于是它也马上发出连接释放报文段。H3在收到S的连接释放报文段后,发出确认报文段(这一部分,表明2次握手和3次握手之间,服务器S没有等待确认的延迟,因此这两次握手的间隔时间不用考虑,也就是说这两次握手是同时间发生,合计时间为1.5个RTT往返时间)。S在收到这份确认后就释放TCP连接。因此从t时刻起,S释放该连接的最短时间是:H3的连接释放报文段传送到S的时间+S的连接释放报文段传送到H3的时间+H3的确认报文段传送到S的时间=1.5×200ms=300ms。(1分)(虽然是4次挥手,但是第二,第三次挥手都是从同一端,同时发出的)

猜你喜欢

转载自blog.csdn.net/jiach3/article/details/82420979