🏷️ 知识点:窗口
[tag_link]

假设题 33~41 图中的 H3 访问 Web 服务器 S 时,S 为新建的 TCP 连接分配了 20 KB (K=1 024) 的接收缓存,最大段长 MSS=1 KB,平均往返时间 RTT=200 ms。H3 建立连接时的初始序号为 100,且持续以 MSS 大小的段向 S 发送数据,拥塞窗口初始阈值为 32 KB;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 连接的建立过程为 三次握手:首先,H3 向 Wb 服务器 S 发出连接请求报文段,这时首部中的同步位 SYN=1,ACK=0,同时选择一个初始序号 seq=100。TCP 规定,SYN 报文段(即 SYN=1 的报文段)不能携带数据,但是要消耗一个序号。接着,S 收到连接请求报文段,为自己选择一个初始序号 seq=y,向 A 发送确认。这个报文段 SYN=1、ACK=1、seq=y,确认号 ack 是 100+1=101。它不能携带数据,但是也要消耗一个序号。最后,H3 收到 S 的确认报文段后,还要向 S 给出确认。这份确认报文段 SYN=0、ACK=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,接下来每收到一个对新报文段的确认就使发送方的拥塞窗口加 KB。H3 共收到 8 个确认段,所以此时 H3 的拥塞窗口变为 1+8=9KB;(1 分)发送窗口=min{拥塞窗口,接收窗口},所以 H3 的发送窗口变为 min{9,12}=9KB。(1 分)
3)TCP 是用字节作为 窗口 和 序号 的单位。当 H3 的发送窗口等于 0KB 时,也就是接收窗口等于 0KB 时,下一个待发送段的序号是 20K+101=20×1024+101=20581;(1 分)H3 从发送第 1 个段到发送窗口等于 0KB 时刻为止,经过五个传输轮次,每个传输轮次的时间就是往返 RTT,因此平均数据传输速率是 20KB/(5×200ms)=20KB/s=20.48kbps。(1 分)
4)通信结束后,H3 向 S 发送连接释放报文段。S 收到 H3 的连接释放报文段后,马上发出确认报文段。此时 S 已经没有数据需要传输,于是它也马上发出连接释放报文段。H3 在收到 S 的连接释放报文段后,发出确认报文段。S 在收到这份确认后就释放 TCP 连接。因此从 t 时刻起,S 释放该连接的最短时间是:H3 的连接释放报文段传送到 S 的时间+S 的连接释放报文段传送到 H3 的时间+H3 的确认报文段传送到 S 的时间 = 1.5×200ms = 300ms。(1 分)