网络工程师 · 高频练习

TCP TIME_WAIT 和 CLOSE_WAIT 怎么区分?

中级 单选题 第 692 题 中等 网络工程师TCPTIME_WAITCLOSE_WAIT四次挥手
题目

某服务器排查 TCP 连接状态时发现:一类连接出现在主动关闭连接的一方,主要用于等待可能迟到的报文并保证对端能收到最后的 ACK;另一类连接则常见于本端已经收到对方关闭请求,但本地应用迟迟没有调用关闭操作。关于这两类状态,下列说法较准确的是()。

A 主动关闭方常进入 TIME_WAIT;本地应用未及时关闭可能导致 CLOSE_WAIT 堆积
B TIME_WAIT 表示 DNS 解析失败,CLOSE_WAIT 表示交换机生成树收敛
C 所有 CLOSE_WAIT 都是客户端网络慢造成的,和服务端程序无关
D TIME_WAIT 和 CLOSE_WAIT 都只出现在 UDP 中
题目类型:原创高频练习题 用途:用于帮助理解网络工程师相关考点和答案解析,不等同于官方真题。
正确答案
A
答案解析

TIME_WAIT 通常出现在主动关闭连接的一方,用于处理迟到报文、避免旧连接报文干扰新连接,并保证最后 ACK 有机会被对方接收。CLOSE_WAIT 通常表示本端已经收到对方的 FIN,并向对方确认,但本地应用还没有关闭连接。大量 CLOSE_WAIT 往往要检查程序是否及时释放连接资源。

选项分析

A

正确。TIME_WAIT 常见于主动关闭方,CLOSE_WAIT 堆积常和本地应用未及时关闭连接有关。

B

错误。DNS 和 STP 不是这两个 TCP 状态的含义。

C

错误。大量 CLOSE_WAIT 往往需要检查服务端或本地应用的连接关闭逻辑。

D

错误。TIME_WAIT 和 CLOSE_WAIT 是 TCP 连接状态,UDP 无连接。

本题为什么容易错

很多同学看到 WAIT 就以为都是网络慢。TIME_WAIT 等的是协议层的安全时间,CLOSE_WAIT 更像应用层没有把关闭动作做完。排查题里如果大量 CLOSE_WAIT 堆积,不能只怪网络,要看程序有没有正确关闭 socket。

先看结论

简短答案

TCP TIME_WAIT 和 CLOSE_WAIT 怎么区分,正确答案是 A(主动关闭方常进入 TIME_WAIT;本地应用未及时关闭可能导致 CLOSE_WAIT 堆积)。TIME_WAIT 通常出现在主动关闭连接的一方,用于处理迟到报文、避免旧连接报文干扰新连接,并保证最后 ACK 有机会被对方接收。CLOSE_WAIT 通常表示本端已经收到对方的 FIN,并向对方确认,但本地应用还没有关闭连接。大量 CLOSE_WAIT 往往要检查程序是否及时释放连接资源。

解析

易混淆概念对比表

概念本题判断区别要点记忆提示
主动关闭方常进入 TIME_WAIT;本地应用未及时关闭可能导致 CLOSE_WAIT 堆积 本题正确答案 正确。TIME_WAIT 常见于主动关闭方,CLOSE_WAIT 堆积常和本地应用未及时关闭连接有关。 看到题干核心场景时优先联想到它
TIME_WAIT 表示 DNS 解析失败,CLOSE_WAIT 表示交换机生成树收敛 本题干扰项 错误。DNS 和 STP 不是这两个 TCP 状态的含义。 看到该词不要急着选,先判断是否真正解决题干问题
所有 CLOSE_WAIT 都是客户端网络慢造成的,和服务端程序无关 本题干扰项 错误。大量 CLOSE_WAIT 往往需要检查服务端或本地应用的连接关闭逻辑。 看到该词不要急着选,先判断是否真正解决题干问题
TIME_WAIT 和 CLOSE_WAIT 都只出现在 UDP 中 本题干扰项 错误。TIME_WAIT 和 CLOSE_WAIT 是 TCP 连接状态,UDP 无连接。 看到该词不要急着选,先判断是否真正解决题干问题
本题易混淆选项怎么区分
  • TIME_WAIT 表示 DNS 解析失败,CLOSE_WAIT 表示交换机生成树收敛:错误。DNS 和 STP 不是这两个 TCP 状态的含义。
  • 所有 CLOSE_WAIT 都是客户端网络慢造成的,和服务端程序无关:错误。大量 CLOSE_WAIT 往往需要检查服务端或本地应用的连接关闭逻辑。
  • TIME_WAIT 和 CLOSE_WAIT 都只出现在 UDP 中:错误。TIME_WAIT 和 CLOSE_WAIT 是 TCP 连接状态,UDP 无连接。
复习

知识点详解

TIME_WAIT 和 CLOSE_WAIT 都出现在连接关闭阶段,但含义完全不同。TIME_WAIT 是协议为了可靠关闭和旧报文消散留下的等待;CLOSE_WAIT 则说明对方已经表达了关闭意愿,本端协议栈也确认了,但本地应用还没有完成关闭。软考题不一定考 Linux 命令细节,但会考你能不能按四次挥手判断状态来源。

备考速记

速记:TIME_WAIT 是主动关门后等一会儿,CLOSE_WAIT 是对方要关门但我这边还没收拾完。

TCP 在四次挥手场景中的作用

TCP在本题中的核心价值,是解决“某服务器排查 TCP 连接状态时发现:一类连接出现在主动关闭连接的一方,主要用于等待可能迟到的报文并保证对端能收到最后的 ACK;另一类连接则常见于本端已经收到对方关闭请求,但本地应用迟迟没有调用关闭操作。关于这两类状态,下列说法较准确的是()”这个场景问题。复习时不要只背选项名称,还要理解它为什么适用于该场景,以及它能解决哪类安全、流程或管理问题。

拓展

同类题怎么考

  • 给出四次挥手场景,判断应该选择哪个概念、工具、协议或管理过程。
  • 考查TCP的作用,要求从四个相近选项中找出最符合题干目标的一项。
  • 把TCP和TIME_WAIT 表示 DNS 解析失败,CLOSE_WAIT 表示交换机生成树收敛、所有 CLOSE_WAIT 都是客户端网络慢造成的,和服务端程序无关、TIME_WAIT 和 CLOSE_WAIT 都只出现在 UDP 中放在一起考,重点看适用场景是否一致。
  • 题干通常会出现一个关键动作或目标,先定位关键词,再回到选项逐一排除。
TCP 在网络工程师软考中的考法

软考选择题通常不会只考概念定义,还会把TCP放到四次挥手场景中,要求判断它的作用、适用范围或与相近概念的区别。遇到这类题时,先抓住题干中的业务场景,再看哪个选项最能解决该场景下的核心问题。

解题思路

这道题不要只背状态名。老师讲四次挥手时会让你顺着动作看:谁先发 FIN,谁就更可能走到 TIME_WAIT;谁收到了对方的 FIN 但自己的应用还没结束,就可能停在 CLOSE_WAIT。A 把两个状态的来源说清楚了。

考点定位

TCP 状态题先看谁主动关闭、应用有没有关闭。TIME_WAIT 多看主动关闭方;CLOSE_WAIT 多看本地程序还没 close。

易错提醒

  • 把 TIME_WAIT 一律当成异常连接,忽略它是 TCP 正常关闭过程的一部分。
  • 看到 CLOSE_WAIT 堆积只重启网络设备,不检查应用连接释放。
  • 没有区分主动关闭方和被动关闭方,导致状态判断反了。

备考提示

  • 复习 TCP 时,把三次握手、四次挥手、TIME_WAIT、CLOSE_WAIT 画成状态流转图。
  • 看到主动关闭、最后 ACK、等待 2MSL,优先想到 TIME_WAIT。
  • 看到收到 FIN 后应用未关闭、连接堆积,优先想到 CLOSE_WAIT。

你可能还想了解

  • TCP TIME_WAIT 和 CLOSE_WAIT 怎么区分?
  • TCP是什么?
  • TCP在网络工程师考试中怎么考?
  • 网络工程师TCP题怎么理解?
  • TCP TIME_WAIT CLOSE_WAIT区别怎么考?
  • CLOSE_WAIT堆积原因怎么考?

本文小结

本题核心考点是TCP在四次挥手场景中的判断和应用。遇到类似题目时,先看题干描述的目标,再判断哪个选项最符合场景;本题应选择 A(主动关闭方常进入 TIME_WAIT;本地应用未及时关闭可能导致 CLOSE_WAIT 堆积)。