TCP三次握手
建立连接 | 发送或回应 |
---|---|
第一次握手 | 客户端发送报文,标志位为SYN(seq=a) |
第二次握手 | 服务器发送报文,标志位为SYN,ACK(seq=b,ack=a+1) |
第三次握手 | 客户端回应服务器报文,标志位为ACK(sqq=a+1,ack=b+1) |
确认标志位的作用:在接收到数据后加1,表示已经接收到该数据
SYN洪流
如果在上述过程中,攻击者伪造大量的源IP 地址,分别向服务器端发送大量的SYN 包,此时服务器端会返回SYN/ACK包,因为源地址是伪造的,所以伪造的IP 并不会发送应答包,服务器端没有收到伪造IP的回应,会重试3~5次并且等待一个SYNTime (一般为30秒至2分钟),如果超时则丢弃这个连接。攻击者大量发送这种造源地址的SYN 请求,服务器端将会消耗非常多的资源(CPU和内存)来处理这种半连接,同时还要不断地对这些IP进行SYN+ACK重试最后的结果是服务器无暇理睬正常的连接请求,导致拒绝服务,这就是SYN洪流
SYN洪流就是攻击者在TCP三次握手的过程中,只向服务器发送大量的SYN请求包,在收到服务器的SYN,ACK包后不做回应,而是不断地发送SYN包,这样一来,服务器收不到客户端的回应包,就会建立一个半连接SYNtime,从而消耗服务器的大量资源并且对这些SYN请求包不断地重试,从而导致正常的连接请求被忽略。