我正在寻找一个设置,其中一个带有一个以太网卡的 Windows 能够处理超过 65k 个开放的 IPv4 TCP 连接 - 是的,根据规范默认这是不可能的。
我找到了一个很好的教程,教你如何设置如何调整 TCP/IP 堆栈以应对大量 Web 请求Windows 和 Linux 的最大可用端口。
我的想法是为每个以太网控制器设置多个 IP 地址(MAC 地址),然后让 DNS 服务器轮询CNAME 资源记录。
Windows 机器上运行的服务器应用程序将绑定到连接至同一 MAC 地址(以太网控制器)的多个 IP 地址。
客户端将被同一服务器提供的 DNS 服务器重定向到不同的 IP 地址。
定义在哪里——欢迎查阅微软官方的印刷版或在线文档——每个以太网控制器可以设置多少个 IP 地址?(试试看,不可靠)
是否有其他想法可以在不使用额外基础设施变更(例如可视化或额外的网卡)的情况下解决这些限制?
答案1
您可能误解了这个限制。如果您正在运行带有监听套接字的服务器,则不会受到端口限制的影响。该服务只监听一个或多个端口(例如,Web 服务器的端口 80),并且不会“占用”超过该端口的端口数。
只有服务的客户端的情况才不同。他们需要为每个连接请求“保留”一个端口作为连接的端点。通常,除非客户端出于某种原因创建大量连接,或者非常快速地轮换连接,导致系统在 TIME_WAIT 计时器到期之前用尽端口,否则您不会用尽端口。
一个客户端打开并保持多个 TCP 连接,但在我的场景中,有 1000 个工作站正在运行此客户端
那么你没有看到端口耗尽。如果你遇到问题,那可能是由于其他原因。有一个类似非分页池的内存限制,它主要适用于 32 位系统,并有效地将连接数限制在 44,000 左右 - 请参阅第 4.8 节Winsock 常见问题解答了解详情。您可能还会遇到许多其他限制。这smallvoid.com 文章解释了其中的一些。