什么是 TCP SYN Flood 攻击?

  TCP SYN Flood是一种常见,而且有效的远程拒绝服务(Denial of Service)攻击方式,它通过一定的操作破坏TCP三次握手建立正常连接,占用并耗费系统资源,使得提供TCP服务的主机系统无法正常工作。

  由于TCP SYN Flood是通过网络底层对服务器进行攻击的,它可以在任意改变自己的网络地址的同时,不被网络上的其他设备所识别,这样就给公安部门追查犯罪来源造成很大的困难。

  在国内与国际的网站中,这种攻击屡见不鲜。在今年年中的一个拍卖网站上,曾经有犯罪分子利用这种手段,在低价位时阻止其他用户继续对商品拍卖,干扰拍卖过程的正常运作。

  在描述该攻击的工作原理以前,我们先简单对TCP协议的通讯方式做一个简单的说明。

TCP协议的通讯方式

一、TCP三次握手

  传输控制协议(Transport Control Protocol)是一种面向连接的,可靠的传输层协议。面向连接是指一次正常的TCP传输需要通过在TCP客户端和TCP服务端建立特定的虚电路连接来完成,该过程通常被称为“三次握手”。可靠性可以通过很多种方法来提供保证,在这里我们关心的是数据序列和确认。TCP通过数据分段(Segment)中的序列号保证所有传输的数据可以在远端按照正常的次序进行重组,而且通过确认保证数据传输的完整性。要通过TCP传输数据,必须在两端主机之间建立连接。举例说明,TCP客户端需要和TCP服务端建立连接,过程如下所示:

TCP Client Flags TCP Server
1 Send SYN (seq=w) ----SYN---> SYN Received
2 SYN/ACK Received <---SYN/ACK---- Send SYN (seq=x), ACK (w+1)
3 Send ACK (x+1) ----ACK---> ACK Received, Connection Established
w: ISN (Initial Sequence Number) of the Client
x: ISN of the Server