超时与拒绝的区别
建连失败只有两种典型形态:超时是发出 SYN 后完全没有回应,需要等待重试与超时周期,成因多为策略丢弃、路由黑洞或目标不可达;拒绝是 SYN 之后立即收到 RST,说明路径可达但端口没有监听或被显式拒绝。两者在抓包上的表现与排查路径完全不同,先分类再深入效率最高。
基本信息
| 分类依据 | 首个 SYN 之后是否有应答,以及应答出现的时间 |
|---|---|
| 超时表现 | SYN 反复重传,全程无回应 |
| 拒绝表现 | SYN 之后立即收到 RST |
| 超时成因 | 策略丢弃、路由黑洞、目标不可达 |
| 拒绝成因 | 端口未监听、策略显式拒绝 |
典型使用场景
- 快速判断「连不上」是网络路径问题还是服务问题
- 区分防火墙 DROP 与 REJECT 策略的差异
- 排查应用日志报超时但实际是建连被拒绝的情况
- 评估跨网络访问失败的定位优先级
- 给他人反馈时用统一术语描述失败形态
区分方法
区分方法
timeout 5 bash -c 'cat < /dev/tcp/10.0.0.9/80' && echo ok || echo fail # 快速探测连通性
tcpdump -nn -i eth0 'host 10.0.0.9 and tcp port 80' -c 20 # 同时抓包
ss -lnt | grep ':80' # 服务端确认是否监听
# 结果为 fail 时看抓包:SYN 重传为超时,SYN 后立即 RST 为拒绝对比与排查
| 现象 | 抓包表现 | 排查方向 |
|---|---|---|
| 超时 | SYN 重传、无任何回应 | 策略是否 DROP、路由是否黑洞 |
| 拒绝 | SYN 后立即 RST | 端口监听与显式拒绝策略 |
| 偶发超时 | 多数成功、少数重传后失败 | 统计频率与目标分布 |
| 秒连秒断 | RST 很快返回 | 服务状态与负载均衡健康检查 |
应用日志里的「超时」可能实际是建连被拒绝后被库层包装的结果,判定以抓包为准。
偶发失败先统计发生频率与目标分布,再决定是查设备策略还是查服务状态。
补充要点
- 先分类再深入:两类失败的后续排查步骤几乎没有交集
- 超时场景优先核对策略设备的丢弃计数与路由表项
- 拒绝场景优先确认服务监听状态与访问控制规则
- 偶发失败先统计发生比例与目标分布,避免按个案调整配置
同一目标上两种失败同时存在时分别统计次数,通常能看出是路径与端口两类问题叠加。