在同一端口(单个套接字)上,使用不同端口号的并发客户端的最大数量是多少?有哪些因素可能影响这个数量?我正在寻找关于Linux环境中telnet的信息。
在同一端口(单个套接字)上,使用不同端口号的并发客户端的最大数量是多少?有哪些因素可能影响这个数量?我正在寻找关于Linux环境中telnet的信息。
这在一定程度上取决于您的操作系统。
然而,没有特定端口的限制。但是并发连接数有限制,通常由内核支持的文件描述符数量(例如2048)所限制。
需要记住的是,TCP连接是唯一的,连接是一对端点(本地和远程IP地址和端口),因此如果1000个连接连接到服务器上的同一端口,并不重要,因为连接仍然是唯一的,因为另一端是不同的。
要注意的另一个限制是一台机器只能建立约64K个出站连接,或者连接的内核限制,以较小的值为准。因为端口是一个无符号的16位数字(0-65535),每个出站连接都使用其中的一个端口。
您可以通过给机器提供附加的IP地址来扩展此功能。每个IP地址都是另一个64K地址空间。
比你所关心的要多。或更确切地说。
我可以保证这个数字远远超过以上所有情况。当涉及到大量socket时,存在可扩展性限制,但是这可以通过一些方法来解决(搜索C10k问题)。在Linux下,单个进程可用处理超过10,000个socket的情况。如果一个服务器有多个进程,则可再次增加这个数量。
不必使用单个端口,因为专门的负载均衡器可以轮流使用多个端口。
如果你运行的服务有数万个客户端进程,那么保持服务的正常运行可能非常重要,因此你必须具备多台服务器以保证冗余。因此,部署更多的服务器不应该成为问题。
我在Windows上进行了测试,向单个套接字执行多个环回连接。在16372标记之后,Windows拒绝分配任何内容。