首页/网络/协议速查/SYN_SENT 与 SYN_RCVD
TCP 与 UDP54 条

SYN_SENT 与 SYN_RCVD

握手中间态:SYN_SENT 是客户端发了 SYN 未收到应答;SYN_RCVD 是服务端发了 SYN+ACK 未收到最终 ACK。

协议速查网络更新于 2026-10-13

两个中间态是什么

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 堆积服务端回了应答但收不到最终确认扫描行为、客户端确认被丢、服务端过载
建立成功握手完成正常情况
立即被拒端口未监听服务没启动或规则拒绝
少量瞬时半开连接属于正常握手过程;持续上百且不下降,才需要查攻击或链路质量。
同步标志防护一类的内核开关用于应对队列被打满的异常情况,它并不是握手阶段的常规路径,把它当性能问题根源通常是搞错了方向。
两侧状态要对照着看:客户端停在等待应答、服务端没有记录,说明报文没到;两边都有半开记录,问题更可能在确认方向上。

易错点

  • 把瞬时半开连接当异常:握手本身需要时间,只看快照不看趋势会误报
  • 监听队列设得过小:高并发握手场景下正常请求也被丢弃
  • 只看服务端状态不看客户端:链路中断造成的握手失败会同时出现在两侧
  • 把防护开关当性能优化:它只在特定异常场景下生效,调它不会让正常握手更快
  • 扫描类流量与正常高并发混在一起看:需要按来源地址拆分再判断

数据来源与参考

  • RFC 9293 §3.3.2
  • man 7 tcp

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌