2 Star 65 Fork 54

柳诗妍 / Java-Interview-Advanced

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
99.md 1.50 KB
一键复制 编辑 原始数据 按行查看 历史
leelovejava 提交于 2020-04-13 11:03 . 第三季 网络安全

99、基于SYN Flood模式的DDoS攻击,背后的原理是什么呢?

SYN_Flood模式的DDos攻击原理

TCP三次握手

1、客户端发送一个SYN请求,指明客户端的端口号以及TCP连接的初始序列号

2、的服务器收到SYN后,返回一个SYN+ACK,表示请求被接收,TCP序列号加1

3、客户端收到服务器的SYN+ACK后,返回一个ACK给服务器,TCP序列号加1,连接建立完毕,接着可以通信了

如果服务器没有收到第三步的ACK,会重试返回SYN+ACK给客户端,同时处于SYN_RECV状态,把客户端放入等待列表。重试会3~5次,每隔30重试一次,遍历等待列表,再次重试发送SYN+ACK

只要返回SYN+ACK给客户端,就会为客户端预留一部分资源,重试期间都保留,等待跟客户端建立连接;所以如果说太多的客户端来建立连接,资源耗尽,那么就无法建立新的TCP连接了

所以黑客就会伪造大量的不同ip地址去发送SYN请求给一台服务器建立TCP连接,每次都是卡在服务器返回SYN+ACK,但是黑客是不会最终返回ACK的,所以导致服务器可能为了黑客建立了大量的半连接放在等待列表里,占用了大量的资源,还得不停的去重试

一旦服务器的资源耗尽,那么正常的请求过来,是无非建立TCP连接的

要知道,HTTP底层就是基于TCP实现的,一旦你无法建立TCP连接,那么这台服务器也自然接受不了任何HTTP请求

Java
1
https://gitee.com/th_520/Java-Interview-Advanced.git
git@gitee.com:th_520/Java-Interview-Advanced.git
th_520
Java-Interview-Advanced
Java-Interview-Advanced
master

搜索帮助