欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > 计算机网络---SYN Blood(洪泛攻击)

计算机网络---SYN Blood(洪泛攻击)

2025/3/10 11:44:20 来源:https://blog.csdn.net/jlihan/article/details/145967957  浏览:    关键词:计算机网络---SYN Blood(洪泛攻击)

文章目录

  • 三次握手过程
  • SYN Flood攻击原理
  • 防御措施
    • 协议层优化
    • 网络层拦截
    • 系统配置调整


TCP协议是 TCP/IP 协议栈中一个重要的协议,平时我们使用的浏览器,APP等大多使用 TCP 协议通讯的,可见 TCP 协议在网络中扮演的角色是多么的重要。

TCP 协议是一个可靠的、面向连接的流协议,由于 TCP 协议是建立在 IP 协议这种面向无连接的协议,所以 TCP 协议必须自己来维护连接的状态。

三次握手过程

TCP 协议通过 三次握手来建立客户端与服务端的连接,三次握手 过程的原理如下图

TCP SYN洪水 (SYN Flood) 攻击原理与实现

建立连接三次握手过程如下:

  • 客户端需要发送一个 SYN包 给服务端(包含了客户端初始化序列号),并且将连接的状态设置为 SYN_SENT,这个过程由 connect() 系统调用完成。
  • 服务端接收到客户端发送过来的 SYN包 后,回复一个 SYN+ACK包 给客户端(包含了服务端初始化序列号),并且设置连接的状态为 SYN_RCVD
  • 客户端接收到服务端发送过来的 SYN+ACK包 后,设置连接状态为 ESTABLISHED(表示连接已经建立),并且回复一个 ACK包 给服务端。
  • 服务端接收到客户端发送过来的 ACK包 后,将连接状态设置为 ESTABLISHED(表示连接已经建立)。

三次握手 过程完成后,一个 TCP 连接就此建立完成。

SYN Flood攻击原理

上面介绍了建立一个 TCP 连接的 三次握手 过程,我们可以发现,三次握手 属于一个协商的过程,也就是说客户端与服务端必须严格按照这个过程来进行,否则连接就不能建立。

这时,如果客户端发送 SYN包 企图与服务端建立连接,但发送完 SYN包 后就不管,那会发送什么事情呢?

img

客户端发送一个 SYN包 给服务端后就退出,而服务端接收到 SYN包 后,会回复一个 SYN+ACK包 给客户端,然后等待客户端回复一个 ACK包

但此时客户端并不会回复 ACK包,所以服务端只能一直等待直到超时。服务端超时后,会重发 SYN+ACK包 给客户端,默认会重试 5 次,而且每次等待的时间都会增加(可以参考 TCP 协议超时重传的实现)。

另外,当服务端接收到 SYN包 后,会建立一个半连接状态的 Socket。所以,当客户端一直发送 SYN包,但不回复 ACK包,那么将会耗尽服务端的资源,这就是 SYN Flood 攻击

防御措施

协议层优化

  • SYN Cookie‌:服务器不立即分配资源,通过哈希算法验证连接合法性后再分配‌。
  • 缩短SYN Timeout‌:减少半连接等待时间,加速无效请求释放‌。

网络层拦截

  • 防火墙/IP过滤‌:识别并拦截伪造IP的SYN包,限制单IP连接速率‌。
  • 流量清洗‌:通过DDoS防护设备过滤异常流量,仅转发合法请求‌。

系统配置调整

  • 扩大连接队列‌:增加backlog队列容量,缓解短时高并发冲击‌。
    调整

  • 扩大连接队列‌:增加backlog队列容量,缓解短时高并发冲击‌。

  • 负载均衡‌:将流量分散至多台服务器,降低单点压力‌。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词