@
yazoox #32 @
ng29 #27
以前有一个 Socket 编程,具体是那个我也忘了,可能从来都是谬传,它的编程模型是服务器用一个端口监听,然后每来一个客户端就用另一个端口跟客户端反向连接用来维持跟客户端的连接。这种模型下,服务器端的并发连接数,自然要受端口数的限制。
但是上面这个是 Socket 编程模型的规定,不是 TCP 通信协议的规定。TCP 协议使用 4 元组来区分不同的连接的,这 4 元组是目的 IP 地址、目的端口号、源 IP 地址和源端口号,换更容易的说法,是 服务器 IP 、服务器端口、客户端 IP 、客户端端口。这意味着,你可以在服务器 IP 、服务器端口不变的情况下,通过客户端 IP + 客户端端口来区分不同的连接。故,理论上,你可以只是用一个端口,支撑无限大的并发连接。实际上当然不能支撑无限大的并发连接量,这个还要看服务器的硬件配置和操作系统对 TCP 连接的支撑模型。
另外,以上还没涉及负载均衡,如果涉及了,还要考虑负载均衡程序的编程模型。