最近我在我的 iptables 上做了这个:
-A INPUT -p tcp --dst 192.168.0.0/16 -m hashlimit --hashlimit-above 32/sec --hashlimit-mode dstip --hashlimit-name hosts -j DROP
看来,如果我的客户端以高于 32 pkt/s 的速率从网络接收数据包,iptables 确实会丢弃它,我的问题是丢弃的数据包是否浪费了?或者 TCP 协议会适应它,因此它将请求更少的数据包?
答案1
仅仅因为您的服务器没有应答流量并不会否定它的存在:(iptables
或任何其他“本地”防火墙)“丢弃”一个数据包在技术上相当于有人对你大喊大叫而你却不回答。
TCP 将把“丢弃”的数据包视为丢失,而连接的另一端应该自动节流(丢失的数据包将重试,发送系统将降低其传输速率,直到不再看到数据包丢失),但这可能需要一段时间才能使发送速率稳定下来。
(可以将其视为技术上的等价物,相当于每三四次有人试图引起你的注意时,回答一次大喊大叫的人——最终他们会明白提示并开始只问一次。希望如此。)