讨论后即使主机未连接,连接仍标记为 ESTABLISHED“我再次回来询问更多信息。
简历:我有一个远程主机(Windows 客户端),它连接到我的 Linux 嵌入式系统(我用来传输或接收数据的服务器)。在这种情况下,一旦客户端连接,它就会开始通过 TCP 协议从服务器检索数据。如果客户端断开连接,服务器上的连接不会消失。它保持为已确立的。
我没有编写用于在两个主机之间检索和发送数据包的应用程序(但是我可以从服务器端修改源代码)但如果我没错的话,那就没有必要了。
使用以下方式分析网络流量后tcpdump我从以下示例输出中看到该问题是由于 SYN/ACK 序列造成的(至少是我理解的):
13:02:38.085996 IP 192.168.11.98.2101 > 192.168.11.50.58987: Flags [P.], seq 151644:151648, ack 1, win 473, length 4
13:02:38.283570 IP 192.168.11.98.2101 > 192.168.11.50.58987: Flags [P.], seq 151648:151916, ack 1, win 473, length 268
13:02:39.289412 IP 192.168.11.98.2101 > 192.168.11.50.58987: Flags [P.], seq 151916:151920, ack 1, win 473, length 4
13:02:39.489854 IP 192.168.11.98.2101 > 192.168.11.50.58987: Flags [P.], seq 151920:152226, ack 1, win 473, length 306
13:02:40.093989 IP 192.168.11.98.2101 > 192.168.11.50.58987: Flags [P.], seq 152226:152230, ack 1, win 473, length 4
但客户端没有检索任何数据,服务器也没有发送数据,这只是一个 SYN/ACK 序列。它会一直持续下去,停止这种情况的唯一方法是更改服务器配置(接收器模式)或拔下以太网适配器。这不是一个可接受的解决方案。
如果我没错的话,这被认为是一次 SYNflood 攻击。
问题是:我如何避免这种情况从服务器端关闭连接?
是否可以通过某些配置文件或防火墙来实现这一点,而无需限制传入连接(如建议的那样这里)?