计算机网络---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队列容量,缓解短时高并发冲击‌。

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

相关推荐
go_bai12 分钟前
Linux-网络基础
linux·开发语言·网络·笔记·学习方法·笔记总结
糖~醋排骨24 分钟前
FW防火墙的配置
linux·服务器·网络
CS创新实验室35 分钟前
《计算机网络》深入学:海明距离与海明码
计算机网络·算法·海明距离·海明编码
WW_千谷山4_sch38 分钟前
MYOJ_10599:CSP初赛题单10:计算机网络
c++·计算机网络·算法
yintele1 小时前
类人机器人BMS的静电防护
网络·安全·机器人
CCPC不拿奖不改名1 小时前
网络与API:从HTTP协议视角理解网络分层原理+面试习题
开发语言·网络·python·网络协议·学习·http·面试
liulilittle1 小时前
OPENPPP2 网络驱动模式
开发语言·网络·c++·网络协议·信息与通信·通信
白狐_7982 小时前
【计网全栈通关】第 1 篇:体系结构从 OSI 到 TCP/IP
计算机网络·智能路由器
Bruce_Liuxiaowei2 小时前
内网探测常用技术方法整理
网络·安全·网络安全
CCPC不拿奖不改名2 小时前
计算机网络:电脑访问网站的完整流程详解+面试习题
开发语言·python·学习·计算机网络·面试·职场和发展