C.1 SYN洪泛攻击原理

TCP是基于连接的,在服务端和客户端之间传送TCP数据时,必须先建立一个TCP连接,TCP的连接建立称为三次握手。

SYN洪泛攻击通过故意不完成三次握手过程,造成连接一方的资源耗尽。假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成)。在这种情况下,服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间,超时则放弃这个未完成的连接,等待的这段时间的长度称为SYN超时(SYN Timeout)。一般来说这个时间是分钟的数量级(大约1分钟)。

一个用户出现异常导致服务器的一个线程等待1分钟左右,并不是很大的问题,但是,如果一个恶意的攻击者大量模拟这种情况,就可能造成服务器不能提供正常服务。因为服务器为了维护大量的半连接要消耗非常多的资源,结果往往是服务器因堆栈溢出而崩溃,即使不崩溃,服务器也将忙于处理攻击者伪造的TCP连接请求而无暇顾及客户的正常请求。这时,从正常用户的角度来看,则认为服务器停止响应了。这种情况我们称服务器受到了SYN洪泛攻击。SYN洪泛攻击示意如图C-1所示。

C.1 SYN洪泛攻击原理 - 图1

图 C-1 SYN洪泛攻击示意图