计算机网络 · 单选题 · 第 2 题
计算机基础面试八股 · 第 2 题
四次挥手中,主动关闭连接的一方最后要在 TIME_WAIT 状态等待 2MSL。这样做的主要目的是?
- A等待对端应用程序把接收缓冲区中的数据全部读完,再允许本端释放端口和套接字
- B最后一个 ACK 若丢失,还能响应对端重传的 FIN;同时让旧连接的残留报文在网络中消失
- C给拥塞控制算法留出时间,把拥塞窗口慢慢恢复到初始值后才能发起下一个连接
- D防止攻击者伪造大量 SYN 报文,把服务端的半连接队列占满导致无法建立新连接
答案
B B. 最后一个 ACK 若丢失,还能响应对端重传的 FIN;同时让旧连接的残留报文在网络中消失
解析
如果最后的 ACK 丢了,对端会重传 FIN,本端还处于 TIME_WAIT 就能再次确认,对端才能正常关闭。等待 2MSL 也保证本连接的旧报文过期,不会被同一四元组的新连接误收。它与 SYN 洪泛防护、拥塞窗口都没有关系;高并发短连接下 TIME_WAIT 过多是常见调优点。