F5 术语

syn

什么是 SYN?

在 TCP 中,SYN 是指从客户端发送到服务器以发起连接的数据包。 建立 TCP 连接遵循以下步骤:

  1. 客户端首先向服务器发送SYN数据包。
  2. 服务器以 SYN/ACK 数据包进行响应,确认该请求。 此时,服务器在连接表中预留资源来保存连接详细信息,建立半开连接状态。
  3. 收到 SYN/ACK 数据包后,客户端会以 ACK 数据包进行响应。
  4. 当服务器收到ACK数据包时,连接就完全建立了。

这个连接过程涉及三次数据包交换,称为三次握手。 它允许服务器确认其回复数据包已到达客户端。 但是,如果客户端伪造源 IP 地址,就会出现问题,因为服务器将不会收到其 SYN/ACK 数据包的响应。 在这种情况下,服务器会保持半开状态直到超时,从而不必要地消耗资源。 恶意行为者利用此漏洞发起 SYN 洪水攻击,这是一种 DoS/DDoS 攻击。

F5 的 BIG-IP 平台充当完整代理,并通过在将 SYN 数据包转发到服务器之前对其进行检查来防止 SYN 泛洪。 此外,BIG-IP 还包含一项称为 SYN Cookies 的功能,以保护自己免受大量 SYN 数据包的攻击。 在此方法中,MD5 生成的数字(称为“Cookie”)嵌入在 SYN/ACK 数据包的 TCP 序列号中。 当收到后续的 ACK 数据包时,将根据其内容重新计算 Cookie。 这样就无需在发送 SYN/ACK 数据包时存储连接详细信息,即使在 SYN 洪水攻击期间也能防止内存耗尽。