通常,当我在 Xubuntu 18.04 中使用 Firefox 73.0.1 浏览有关复古计算爱好的网络论坛*时,我会看到 30 分钟内所有与该网站的连接都超时,但与其他网站和非网络互联网资源的连接继续工作。在这种中断期间,通过网站“对所有人都中断还是只有我中断?”检查显示中断只影响了我,在 Discord 服务器和与网站主题相关的 IRC 频道上询问其他用户也是如此。
比较工作期间和停机期间到服务器的跟踪路由,发现我的数据包在离开 Cogent 网络时停止。我有证据(来自一个我不能公开披露的来源)表明,数据包离开 Cogent 后的第一个 IPv4 地址是防火墙的 IP 地址,该防火墙看到来自我的 IP 地址的一堆 SYN(TCP 传出连接中的第一个数据包),并阻止我家庭互联网连接的 IP 地址,作为防止拒绝服务 (DoS) 的措施。
我设法使用 Wireshark 在我的笔记本电脑的 WLAN 接口上捕获了被阻止的情况。(它没有有线以太网接口。)数据包日志显示,我的笔记本电脑在第一次浏览页面时发出了 19 个 SYN 数据包,第二次浏览页面时发出了 17 个 SYN 数据包,每个数据包都有不同的临时端口,其中大多数都会立即用 RST 关闭。4 秒内 36 个 SYN 的爆发似乎与我的来源告诉我的情况一致。
因此,我想限制 Firefox 连接到该网站的速率,并且只限制该网站的速率。关闭以下设置about:config
没有帮助:
network.http.speculative-parallel-limit
network.prefetch-next
其他人建议减少network.http.max-persistent-connections-per-server
,但我犹豫是否要减少它,因为这也会减慢对所有其他网站的访问速度。有没有办法让 Firefox 不会过于急于连接特定域名下的网站,而对其他网站却一如既往?
* 我犹豫着是否要透露该网站的名称,因为担心会被认为过度宣传它。
答案1
尝试禁用网络缓存竞争 (RCWN)Firefox 中的功能。
Necko 中的“与网络竞争缓存”(RCWN) 功能增加了在缓存速度较慢时与网络竞争缓存的能力。因此,如果从磁盘读取速度较慢,我们将发送网络请求,并从网络返回通道,即使我们在缓存中有条目。这样我们就可以更快地向消费者提供内容。
David Balažic 的回答Stack Overflow 上的“如何关闭 Firefox 中的网络探测?”指出 RCWN 可能会导致我所看到的那种不当行为。
我打开了 Wireshark,使用host example.com
捕获过滤器记录了我与该网站的连接,然后切换回 Firefox,打开 Web 开发人员 > 网络 (Ctrl+Shift+E),然后浏览,直到我找到一个页面,该页面导致 Wireshark 在一次页面查看中显示十个或更多 SYN。每当发生这种情况时,日志中就会出现诸如174 B (raced)
、336 B (raced)
和 之类的内容。我打开,更改为,然后再浏览一下。这种不当行为停止了。248 B (raced)
about:config
network.http.rcwn.enabled
false
我可以理解 RCWN 如何在 5400 或 7200 RPM 机械硬盘上发挥作用,因为其他应用程序的文件流量很大,尤其是在实时防病毒软件是常态的操作系统上。但由于我的 Xubuntu 笔记本电脑配有三星 SSD,我非常怀疑我是否需要 RCWN。
RCWN 产生的过多连接已报告给 Mozilla,原因是错误 1622859。