两个中间态是什么
SYN_SENT 是客户端已经发出握手请求、还没收到应答的状态;SYN_RCVD 是服务端已经回了握手应答、还没收到最终确认的状态。这两类连接都停留在握手阶段,数量异常增长通常意味着链路丢包、对端过载,或者有人在扫描端口。
看数字也要看趋势
瞬时出现少量这类状态完全正常,握手本身就需要时间。判断有没有问题看的是趋势:服务端长时间维持上百个半开连接且不下降,才值得进一步排查攻击或链路质量。
基本信息
| 客户端中间态 | SYN_SENT,等待对端应答 |
|---|---|
| 服务端中间态 | SYN_RCVD,等待最终确认 |
| 观察命令 | ss -tan state syn-sent 与 state syn-recv |
| 相关机制 | 监听队列长度与同步标志防护 |
典型使用场景
- 跨机房调用偶发超时:看客户端是否长期停在等待应答
- 服务端疑似被扫描或攻击:看半开连接是否持续堆积
- 排查「客户端连不上但服务端有连接记录」
- 观察链路丢包对握手成功率的影响
观察中间态
观察中间态
ss -tan state syn-sent # 客户端等待应答的连接
ss -tan state syn-recv | wc -l # 服务端半开连接数量
netstat -s | grep -i 'SYNs to LISTEN' # 统计落入监听队列的握手状态与原因对照
| 状态 | 含义 | 常见原因 |
|---|---|---|
| SYN_SENT 停留 | 客户端发了握手但没收到应答 | 对端不可达、防火墙静默丢弃、对端过载 |
| SYN_RCVD 堆积 | 服务端回了应答但收不到最终确认 | 扫描行为、客户端确认被丢、服务端过载 |
| 建立成功 | 握手完成 | 正常情况 |
| 立即被拒 | 端口未监听 | 服务没启动或规则拒绝 |
少量瞬时半开连接属于正常握手过程;持续上百且不下降,才需要查攻击或链路质量。
同步标志防护一类的内核开关用于应对队列被打满的异常情况,它并不是握手阶段的常规路径,把它当性能问题根源通常是搞错了方向。
两侧状态要对照着看:客户端停在等待应答、服务端没有记录,说明报文没到;两边都有半开记录,问题更可能在确认方向上。