最近我在我的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协议会适应它,所以它会请求更less的数据包?
仅仅因为你的服务器没有回应stream量并不能否定它的存在: iptables (或任何其他的“本地”防火墙)“丢弃”一个数据包就等于有人向你大喊而不回答。
TCP将看到“丢弃”的数据包丢失,连接的另一端应该自动进行自我调节(丢弃的数据包将被重试,发送系统将退回其传输速率,直到它不再看到数据包丢失) ,但这可能需要一段时间的发送率稳定。
(把这个想法看作是技术上等同于第三次回答喊叫的人,他们第三次尝试引起你的注意 – 最终他们会得到提示,开始只问一次,希望)。