638 字
3 分钟
TCP 的 TIME_WAIT 状态有什么作用
  1. 1计算机网络学习路线与文章导读
  2. 2网络分层模型与数据封装是怎么回事
  3. 3TCP/IP 四层模型与 OSI 七层模型
  4. 4IP 地址与 CIDR 子网怎么理解
  5. 5ARP 是什么?主机如何找到目标 MAC 地址
  6. 6IP 路由与默认网关是如何工作的
  7. 7TCP 和 UDP 有什么区别?如何选择
  8. 8TCP 握手、挥手和丢包重传分别解决什么问题
  9. 9TCP 三次握手与四次挥手
  10. 10TCP 流量控制和拥塞控制有什么区别
  11. 11TCP 为什么可靠:流量控制、拥塞控制与局限性
  12. 12TCP 丢包、粘包和拆包是什么
  13. 13HTTP/1.0、HTTP/1.1、HTTP/2 与 HTTP/3 有什么区别
  14. 14HTTP 请求包含哪些内容
  15. 15HTTP 中 GET 和 POST 有什么区别
  16. 16HTTP 方法的安全性与幂等性怎么区分
  17. 17HTTP 状态码与网络故障如何区分排查
  18. 18常见 HTTP 状态码与网站故障排查
  19. 19HTTP 和 HTTPS 有什么区别
  20. 20谈谈对 DNS 和 CDN 的理解
  21. 21从输入网址到网页显示发生了什么
  22. 22TCP 的 TIME_WAIT 状态有什么作用本文
  23. 23TCP 的 CLOSE_WAIT 状态是什么,过多如何排查
  24. 24TLS 1.3 握手过程是什么
  25. 25HTTPS 如何校验证书
  26. 26HTTP 强缓存和协商缓存怎么工作
  27. 27HTTP Keep-Alive 是什么,连接如何复用
  28. 28WebSocket 和 HTTP 有什么区别
  29. 29服务端如何解析 HTTP 请求的数据
  30. 30NAT 是什么?端口映射如何实现
  31. 31ICMP、ping 和 traceroute 分别做什么
  32. 32网络故障如何分层排查
  33. 33Cookie、Session、Token 与 JWT 有什么区别
  34. 34常见的登录鉴权方式有哪些
  35. 35什么是 SYN Flood 攻击

TIME_WAIT 是 TCP 连接关闭过程中的状态,通常由主动发送最后一个 ACK 的一方进入。它主要有两个作用:等待一段时间,以便在对端重发 FIN 时仍能重发 ACK;同时让旧连接中的延迟报文有机会从网络中消失,降低它们被后续相同连接四元组误认的风险。常见 TCP 规范中等待时长以 2 倍最大报文段生存时间为依据,操作系统对参数和实现有差异。

出现 TIME_WAIT 本身是正常关闭行为,不等于连接泄漏。短连接流量大、客户端主动关闭较多时,观察到较多 TIME_WAIT 并不自动说明故障。应结合连接速率、端口耗尽、连接建立失败和应用连接复用情况判断。优先考虑复用连接、合理设置超时和优化请求模式;不要未经分析就调整系统参数或启用可能破坏 TCP 语义的复用选项。

TIME_WAIT 和 CLOSE_WAIT 不同:前者是主动关闭一侧完成关闭握手后的等待状态;后者表示本机已收到对端 FIN,但本地应用尚未关闭自己的发送方向。

排查时可按本地端口、远端地址和进程归属统计状态,区分大量正常短连接与端口分配失败。服务端若承担大量短连接,HTTP 持久连接或合理的数据库连接池能减少连接创建频率,但连接池必须限制空闲与总连接数,避免连接长时间占用服务端资源。

常见追问#

为什么最后 ACK 后还要等待?#

若最后 ACK 丢失,对端会重传 FIN;处于 TIME_WAIT 的一方可以再次确认。等待还为网络中残留的旧报文留出消退时间。

TIME_WAIT 一定在客户端吗?#

不一定。通常主动关闭连接的一方进入 TIME_WAIT,客户端或服务端都可能主动关闭。

TIME_WAIT 多就是端口耗尽吗?#

不是。要看本地端口范围、连接目标分布、连接速率及失败症状。大量短连接提示连接复用可能不足,但应以数据验证。

可以直接缩短 TIME_WAIT 吗?#

不建议把缩短参数当作首选修复。可能影响延迟报文和重连安全性;应先检查连接生命周期、复用及业务重试策略,再按操作系统文档评估参数。

TCP 的 TIME_WAIT 状态有什么作用
https://blog.xqcherry.top/posts/interview/network/tcp-time-wait/
作者
xqcherry
发布于
2026-10-12
许可协议
CC BY-NC-SA 4.0