🏷️ 知识点:三次握手
假设主机 H 通过 TCP 向服务器发送长度为 3000B 的报文,往返时间 RTT=10ms,最长报文段寿命MSL=30s,最大报文段长度 MSS=1000B,忽略 TCP 段的传输时廷,报文传输结束后 H 首先请求断开连接,则从 H 请求建立 TCP 连接时刻起,到 H 进入 CLOSED 状态为止,所需时间至少是( )
A. 30.03s B. 30.04s C. 60.03s D. 60.04s
[tag_link]
正确答案:D
在 TCP 连接中,从建立连接到关闭连接的过程包括以下步骤:
- 建立链接:这个过程通常为称为 三次握手,SYN、SYN-ACK、ACK,需要一个往返时间 RTT。
- 数据传输:主机 H 向服务器发送长度为 3000B 的报文。由于最大报文段长度 MSS=1000B,第一次拥塞窗口为 1 发送 1000B,第二次拥塞窗口为 2 发送 2000B,所以一共消耗 2 个最长报文段寿命,2 个 RTT。
- 关闭连接:这个过程通常称为 四次挥手 FIN、ACK、FIN、ACK。第一次挥手和第三次挥手构成一个 RTT,第二次和第三次是连续发送的,第四次发出去的时候和客户端等待的 2SL 时间重叠,所以需要 1 个 RTT。所需时间 1RTT+2RTT+1RTT+2MSL=4RTT+2MSL。将 RTT=10ms=0.01s 和 MSL=30s 代入上式,得到 60.04s。
主机甲向主机乙发送一个 (SYN=1, seq=11220) 的 TCP 段,期望与主机乙建立 TCP 连接,若主机乙接受该连接请求,则主机乙向主机甲发送的正确的 TCP 段可能是
A. (SYN=0, ACK=0, seq=11221, ack=11221)
B. (SYN=1, ACK=1, seq=11220, ack=11220)
C. (SYN=1, ACK=1, seq=11221, ack=11221)
D. (SYN=0, ACK=0, seq=11220, ack=11220)
[tag_link]
正确答案:C
本题考查 三次握手 ,在确认报文段中,同步位 SYN 和确认位 ACK 必须都是 1;返回的确认号 seq 是甲发送的初始序号 seq=11220 加 1,即 ack= 11221;同时乙也要选择并消耗一个初始序号 seq,seq 值由乙的TCP 进程任意给出,它与确认号、请求报文段的序号没有任何关系。
若主机甲主动发起一个与主机乙的 TCP 连接,甲、乙选择的初始序列号分别为 2018 和 2046,则第三次握手 TCP 段的确认序列号是( )。
A. 2018 B. 2019 C. 2046 D. 2047
[tag_link]
正确答案:D
根据 TCP 连接建立的 三次握手 原理,第三次握手时甲发出的确认序列号应为第二次握手时乙发出的序列号 +1,即 2047。
[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 分)