SYN 洪水攻击利用 TCP 连接的握手过程发动攻击。正常情况下,TCP 连接将完成三次握手以建立连接。 1. 首先,客户端向服务器发送 SYN 数据包以发起连接。 2. 接着,服务器通过 SYN/ACK 数据包对该初始数据包做出响应,以便确认通信。 3. 最后,客户端返回 ACK 数据包以确认接到服务器发出的数据包。完成这一系列数据包发送和接收操作后,TCP 连接将处于打开状态并且能够发送和接收数据。 为发起拒绝服务攻击,攻击者需利用这样一项事实:收到初始 SYN 数据包后,服务器将通过一个或多个 SYN/ACK 数据包做出回响,等待完成握手过程的最后一步。工作方式如下: 1. 攻击者通常使用伪造的 IP 地址向目标服务器发送大量 SYN 数据包。 2. 然后,服务器分别对每一项连接请求做出响应,并确保打开的端口做好接收响应的准备。 3. 在服务器等待最后一个 ACK 数据包(永远不会到达)的过程中,攻击者将继续发送更多 SYN 数据包。每当有新的 SYN 数据包到达,服务器都会临时打开一个新的端口并在一段特定时间内保持连接;用遍所有可用端口后,服务器将无法正常运行。 在网络中,如果服务器连接处于打开状态但另一端的机器连接未打开,则视为半开连接。在此类 DDoS 攻击中,目标服务器将使连接一直处于打开状态,静待各个连接超时,避免再次开放端口。因此,此类攻击可视为“半开连接攻击”。