Answers:
单个侦听端口可以同时接受多个连接。
通常会引用“ 64K”限制,但这是每个客户端每个服务器端口的限制,需要澄清。
每个TCP / IP数据包基本上都有四个用于寻址的字段。这些是:
source_ip source_port destination_ip destination_port
< client > < server >
在TCP堆栈内部,这四个字段用作复合键,以将数据包与连接进行匹配(例如,文件描述符)。
如果客户端在同一目标上具有到同一端口的许多连接,则这些字段中的三个将相同-只是source_port
为了区分不同的连接而有所不同。端口是16位数字,因此任何给定客户端可以与任何给定主机端口建立的最大连接数为64K。
但是,多个客户端可以分别与某个服务器的端口建立多达64K的连接,并且如果服务器具有多个端口,或者其中一个是多宿主的,则可以进一步增加该数量。
因此,真正的限制是文件描述符。每个单独的套接字连接都有一个文件描述符,因此限制实际上是系统已配置为允许的文件描述符的数量和要处理的资源。最大限制通常超过300K,但可以使用sysctl进行配置。
普通机顶盒所吹嘘的实际限制约为80K,例如单线程Jabber消息传递服务器。
如果您正在考虑运行服务器并试图确定一台计算机可以服务多少个连接,则可能需要阅读C10k问题 以及同时服务多个客户端所涉及的潜在问题。