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

文章目录


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

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

三次握手过程

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

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

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

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

SYN Flood攻击原理

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

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

客户端发送一个 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队列容量,缓解短时高并发冲击‌。

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

相关推荐
Tim风声(网络工程师)5 小时前
不同射频对应不同mac地址(查找无线用户连接AP信息)
服务器·网络·tcp/ip·智能路由器·无线ap
索迪迈科技8 小时前
网络请求库——Axios库深度解析
前端·网络·vue.js·北京百思可瑞教育·百思可瑞教育
grrrr_110 小时前
【工具类】Nuclei YAML POC 编写以及批量检测
网络·安全·web安全
慢慢沉11 小时前
UDP与TCP的区别
网络协议·tcp/ip·udp
青 .11 小时前
数据结构---二叉搜索树的实现
c语言·网络·数据结构·算法·链表
AORO202511 小时前
三防手机的三防是指什么?推荐一款实用机型
网络·5g·智能手机·制造·信息与通信
鲸屿19513 小时前
Ansible之playbook
服务器·网络·ansible
绝世剑仙纪宁14 小时前
TCP 三次握手、四次挥手
网络·网络协议·tcp/ip
索迪迈科技14 小时前
HTTP中Payload的含义解析
网络·网络协议·http
小白学大数据15 小时前
构建企业级Selenium爬虫:基于隧道代理的IP管理架构
爬虫·tcp/ip·selenium