首页 > 试题广场 >

题目来源于王道论坛 假设题上图中的H3访

[问答题]
题目来源于王道论坛

假设题图中的H3访问Web服务器S时,S为新建的TCP连接分配了20KBK=1024)的接收缓存,最大段长MSS=1KB,平均往返时间RTT=200msH3建立连接时的初始序号为100,且持续以MSS大小的段向S发送数据,拥塞窗口初始阈值为32KBS对收到的每个段进行确认,并通告新的接收窗口。假定TCP连接建立完成后,S端的TCP接收缓存仅有数据存入而无数据取出。请回答下列问题。

1)在TCP连接建立过程中,H3收到的S发送过来的第二次握手TCP段的SYNACK标志位的值分别是多少?确认序号是多少?

2H3收到的第8个确认段所通告的接收窗口是多少?此时H3的拥塞窗口变为多少?H3的发送窗口变为多少?

3)当H3的发送窗口等于0时,下一个待发送的数据段序号是多少?H3从发送第1个数据段到发送窗口等于0时刻为止,平均数据传输速率是多少(忽略段的传输延时)?

4)若H3S之间通信已经结束,在t时刻H3请求断开该连接,则从t时刻起,S释放该连接的最短时间是多少?


推荐

解答:

1TCP连接的建立分以下三个阶段。首先,H3Web服务器S发出连接请求报文段,这时首部中的同步位SYN=1ACK=0,同时选择一个初始序号seq=100TCP规定,SYN报文段(即SYN=1的报文段)不能携带数据,但是要消耗一个序号。接着,S收到连接请求报文段,为自己选择一个初始序号seq=y,向A发送确认。这个报文段SYN=1ACK=1seq=y,确认号ack100+1=101。它不能携带数据,但是也要消耗一个序号。最后,H3收到S的确认报文段后,还要向S给出确认。这份确认报文段SYN=0ACK=1,确认号ack=y+1,自己的序号seq=101。因此,第二次握手TCP段的SYN=1,(1分)ACK=1;(1分)确认序号是101。(1分)

2)题目规定S对收到的每个段(MSS大小的段)进行确认,并通告新的接收窗口,而且TCP接收缓存仅有数据存入而无数据取出。H3收到的第8个确认段所通告的接收窗口是20-8=12KB;(1分)在慢开始算法里,发送方H3先设置拥塞窗口cwnd=1KB,接下来每收到一个对新报文段的确认就使发送方的拥塞窗口加1KBH3共收到8个确认段,所以此时H3的拥塞窗口变为1+8=9KB;(1分)发送窗口=min{拥塞窗口,接收窗口},所以H3的发送窗口变为min{912}=9KB。(1分)

3TCP是用字节作为窗口和序号的单位。当H3的发送窗口等于0KB时,也就是接收窗口等于0KB时,下一个待发送段的序号是20K+101=20×1024+101=20581;(1分)H3从发送第1个段到发送窗口等于0KB时刻为止,经过五个传输轮次,每个传输轮次的时间就是往返RTT,因此平均数据传输速率是20KB/(5×200ms)=20KB/s=20.48kbps。(1分)

4)通信结束后,H3S发送连接释放报文段。S收到H3的连接释放报文段后,马上发出确认报文段。此时S已经没有数据需要传输,于是它也马上发出连接释放报文段。H3在收到S的连接释放报文段后,发出确认报文段。S在收到这份确认后就释放TCP连接。因此从t时刻起,S释放该连接的最短时间是:H3的连接释放报文段传送到S的时间+S的连接释放报文段传送到H3的时间+H3的确认报文段传送到S的时间=1.5×200ms=300ms。(1分)

发表于 2018-06-16 11:18:27 回复(16)
第二问中H3收到8个确认段 为什么不包含连接建立过程中第二次握手S所发送的确认段呢?这样算的话 S只收到了7个数据段 此时通告的接受窗口就是13 拥塞窗口就是8  
发表于 2019-07-30 20:48:45 回复(1)
不明白(3)题为什么20KB/S=20.48kbps,20KB不应该是20*1024*8=163840b吗?为什么速率不是163.84kbps呢
发表于 2018-09-11 21:15:26 回复(8)
https://www.bilibili.com/read/cv2511324可以看这个,要深刻理解tcp拥塞控制的原理才行。拥塞窗口每收到一个ack加1,假设现在拥塞窗口是4,则会发送4个mss大小的数据报文段,之后会收到4个确认报文段,加了4次1,现在拥塞窗口是8了。表面上是窗口翻倍,实际上是加了4次1
发表于 2019-11-12 01:25:43 回复(1)
第四问释放的最短时间大佬们能给详细解释一下吗
发表于 2019-03-05 22:26:50 回复(4)

第四题题目都没告诉msl……

发表于 2019-11-10 12:06:43 回复(2)