SYN 洪水是典型的半连接拒绝服务攻击:攻击者伪造源 IP 大量发送 SYN 报文,服务端回应 SYN-ACK 后在半连接队列中等待最后的 ACK,而伪造源永远不会回复。大量半连接占满 backlog 队列,导致正常用户的 SYN 被丢弃,服务不可用。
展开解析:攻击成本低是因为三次握手的设计让服务端在收到第一个包时就分配资源,且 SYN 包小、源地址易伪造,攻击者无需维护真实连接。
主要防御手段:
- SYN Cookie(最有效):服务端收到 SYN 时不立即分配资源,而是把连接信息编码进 SYN-ACK 的序列号;收到合法 ACK 时再解码验证并建立连接。伪造源收不到 SYN-ACK,自然无法完成握手,零状态消耗。
- 增大半连接队列(backlog)、缩短 SYN-ACK 重传超时:缓解但不能根治。
- 首包丢弃/源认证:丢弃陌生源的首个 SYN,正常客户端会重传,攻击工具通常不会。
- 流量清洗/防火墙限速:在上游按源限速或把流量牵引到清洗中心。
追问方向:SYN Cookie 的代价(丢失部分 TCP 选项协商能力)、与 ACK 洪水、UDP 放大型 DDoS 的区别。