SYN Flood攻击原理简述
说到原理,得先从TCP是如何建立连接开始讲起。
通信双方最少要经过三次成功的信息交换,才能进入连接全开状态(Full-Open),用行话说就是“三次握手”。
以下图为例,假设左边是客户机,右边是服务器(一般用于大型数据库系统,例如Oracle、SQL Server、Informix、Sybase等),服务器在某个端口(Port)上监听客户机发出的连接请求。
客户机首先发送SYN(Synchronization)消息给服务器方,要求服务器做好接收数据的准备;服务器收到后,反馈SYN-ACK(Synchronization-Acknowledgement)消息给客户机,目的有两个,一是为了确认客户机做好了接收数据的准备,另一方面要求客户机也做好接收数据的准备,这时候服务器方确认好接收状态后等待客户机的确认,此时的连接状态处于Half-Open,直到客户机收到后再次发送ACK报文给服务器,确认服务器方也做好了接收数据的准备,至此三次握手完成,建立连接。
上述这种理论性的情况,主要是建立在双方诚实可信、网络状态良好的前提下,实际情况是有一方可能出现网络不稳定丢包、一方故意不发送确认消息等等。
假设服务器方通过某TCP端口提供服务,在收到客户机的SYN消息后积极反馈了SYN-ACK报文,使连接进入Half-Open状态,因为服务器方不确定自己给客户机发送出去的SYN-ACK消息是否成功,因此会给每个待完成的Half-Open连接设置一个Timer,超过时间没有收到客户机的ACK消息就会再发送一次SYN-ACK给客户机,直到重试超过一定次数才放弃。
上一篇: SYN Flood攻击≠DDoS攻击
下一篇: 如何防护云服务器被SYN Flood攻击