免费监控
logo prod

资讯与帮助

TCP连接总是超时?三次握手哪一步失败告诉你答案

时间:2025-07-04
编辑:tance.cc

TCP三次握手.png

你有没有遇到过这种场景?浏览器地址栏按下回车后,页面久久加载不出来,控制台一看——“TCP 连接超时”。可你明明本地网络没问题,目标 IP 也能 Ping 通,甚至防火墙都没拦你,那这到底是哪一步出了问题?

别急,问题可能就藏在那最基本、最被忽略的东西里:TCP 三次握手

三次握手,真就那么简单?

很多人对 TCP 三次握手的理解可能停留在教科书级别:

  1. 客户端发送 SYN;

  2. 服务端回应 SYN+ACK;

  3. 客户端再发 ACK,连接建立成功。

看起来流程没毛病,但在实战中,任何一步失败都可能导致连接建立不了,而“超时”只是表现形式,真正的症结,要靠拆解三次握手过程来逐步排查。


第一步失败:SYN 发不出去 or 发了没人理

先说第一步,客户端发送 SYN 包。如果你连第一步都失败了,表现就是客户端根本没办法发出 TCP 连接请求,或者请求发出后被中间某个环节(比如 NAT、ACL、出口网关)给悄无声息地吞了

具体怎么排查?

  • 抓包看有没有 SYN 发出:用 Wireshark 或 tcpdump 抓本地数据包;

  • **对端根本没有回应?**可能是目标 IP 配置了安全组、或者服务没监听目标端口;

  • **中间节点丢包?**尤其是公网穿透、VPN 场景,出口可能进行了包过滤;

很多时候,SYN 被悄悄干掉而你毫无察觉,TCP 就会反复重传,直到超时,最后你只看到“连接失败”。


第二步失败:服务端不回 SYN+ACK?

好,我们假设你发出的 SYN 包顺利到了服务端,那第二步就看服务端能不能返回 SYN+ACK。

这一步出问题,常常是服务端没有正常监听目标端口,或者监听了但应用进程挂了,导致内核根本没法回应 SYN 请求。

你可以这么排查:

  • 用 nmap 探测端口是否开放

  • 看服务端 netstat 或 ss:是否处于 LISTEN 状态?

  • 排查防火墙或安全策略,有没有阻止发出 SYN+ACK;

  • 服务器资源耗尽:连接数太多导致 backlog 队列满了,新的 SYN 直接被 drop;

顺便一提,很多云厂商默认关闭了某些端口(比如阿里云的 25 端口),你以为服务开着,结果包根本出不去。


第三步失败:客户端没发 ACK,服务端等崩溃

看上去前两步都顺利执行了,但连接仍旧失败?问题可能出在第三步。

也就是说,客户端收到了服务端的 SYN+ACK,却没返回 ACK,服务端只能苦等,直到超时关闭。

这时候的现象是:服务端日志里看到了连接请求,但连接没建立成功;客户端那边始终提示超时。

常见原因有:

  • 客户端防火墙或内核丢掉了响应 ACK 包

  • 服务端 IP 与客户端不在同一条路上,比如 DNS 污染导致连接打到“假目标”;

  • MTU 问题:某些路径由于 MTU 限制导致 ACK 被分片丢失;

  • 双网卡路由冲突:客户端从一张网卡出去,ACK 却从另一张返回,服务端收不到;

别以为这一步出问题是“玄学”,其实很多 SaaS 平台都曾因为网关配置错误或 NAT 映射不对,导致 ACK 丢失,连接建立失败。


怎么快速定位是哪一步错了?

其实,你完全可以通过抓包 + 多点探测 + 分布式网络视角来定位故障。

一些实用的做法:

  • tcpdump 抓 TCP 三次握手过程,观察 SYN、SYN+ACK、ACK 是否完整;

  • 使用观图数据平台的 TCP 探测工具点此查看),从全国多个节点发起 TCP 探测;

  • 用 traceroute 和 mtr 查看路径:看看哪一跳丢包;

  • 查看服务器日志,比如 NGINX、Apache,是否有握手失败记录;

  • 确认服务器 listen 的 IP 是公网 IP 还是 127.0.0.1(别笑,这坑不少人跳过);


你以为是 TCP 超时,其实可能是……

再告诉你一个常见的“伪连接失败”:你的 TCP 握手实际上已经建立成功,但由于目标应用未及时响应(比如数据库被锁、接口处理缓慢),导致你误以为是连接失败。

所以你要记住一点:TCP 超时 ≠ 网络不通,可能是 TCP 层通了,上层没回应。


小结?不存在的。那我该怎么做?

我不会告诉你“总结一下”之类的废话。

你真正该做的,是把握排查顺序——从三次握手的每一步出发,对照现象,逐层剖析。别迷信网络是不是通,也别仅仅看 Ping 通不通,用实际探测手段、抓包工具和平台监控,把“超时”这口黑锅,甩给真正该负责的那一环。

这样,你不止解决了问题,还让自己变成了那个“别人都找你排查连接异常”的人。


如果你想进一步提升 TCP 网络排查效率,可以试试 观图数据的 TCP 探测服务,能从多个地区自动探测连接状态、三次握手响应延迟等关键指标,真正做到——“连得上不重要,连得快、连得稳才重要”。


客服
意见反馈