我正在尝试调试网络问题,并使用 Wireshark 和 tcpdump 从我的服务器抓取数据包。我有一个客户端应用程序正在抓取我的所有可用连接,然后保留它们,试图发送大量数据,本质上导致无意的 DOS 攻击。在调试时,我注意到我的服务器发送“窗口关闭”和“零窗口”TCP 数据包 - 但从不发送任何“窗口更新”数据包。我猜这就是客户端从不放弃连接的原因(它还有更多数据要发送并且正在等待)。有人见过这种行为吗?我们不要讨论为什么我没有设置 iptables 规则来限制并发连接(是的,我知道)。我最近还将 MTU 从 1500 更改为 9000 - 这会产生如此负面的影响吗?(Linux)谢谢。
答案1
TCP ZeroWindow - 当接收方通告接收窗口大小为零时发生。这实际上告诉发送方停止发送,因为接收方的缓冲区已满。表示接收方存在资源问题,因为应用程序没有及时从 TCP 缓冲区检索数据。