我正在编写一个玩具示例来进行 NAT 遍历。对广泛使用的桌面应用程序如何做到这一点感兴趣,我使用了wireshark 来尝试分析它的流量。在对输出进行一些研究后,我意识到服务器通知(例如,“新文件添加到您的 xxx 文件夹”)使用某种 Comet 机制工作,具有长寿命的 HTTP 连接。但最让我吃惊的是,尽管流量很低(1 个 HTTP GET 及其每分钟的响应),但 TCP 连接从未关闭。我可以保证连接在至少 20 分钟内没有关闭。
到目前为止,我的理解是同时打开大量长寿命的 TCP 连接会很快消耗服务器的资源(主要是内存方面)。所以我的问题是,这种应用程序如何能够长时间有效地保持如此大量的 TCP 和 HTTP 连接同时打开?他们是否使用某种特殊的服务器?还是只需要添加硬件以进行水平扩展?
我用谷歌搜索了很多试图找到答案,但没有运气。也许我错过了一些非常明显的东西。