1

据我所知,(单一通用)网络服务器使用端口(与任何其他 tcp/upd 应用程序一样)来识别用户/进程。因为,端口是一个 16 位无符号整数,因此范围从 0 到 65535。当它达到其限制时,服务器如何操作?

高水平样本

  1. server1 以 8080 应答!client1连接到 server1(现在它们通过随机端口连接:(但唯一)server1:5123 <--> client1:6123)

  2. 另一个client2连接到 server1 ( server1: 5124 <--> client2:7123 )

所以,问题是:对于给定的实例,服务器是否受到 65535(实际上小于)的限制?

4

1 回答 1

1

在最简单的情况下,Web 服务器只使用服务器系统上的一个 TCP 端口(通常是端口 80)。与网络服务器的所有连接都通过该单个端口进行处理。其他 65534 个端口仍可用于其他用途。

这是有效的,因为 TCP 连接不仅由服务器上的端口号识别,而且由(server IP, server TCP port, client IP, client TCP port)的组合识别。因此,服务器可以在其端口 80 上拥有大量并发 TCP 连接,使用其他三个项来识别流量属于哪个连接。如果服务器只有一个 IP 地址,因此(服务器 IP、服务器端口)部分在与 Web 服务器的所有连接上都是相同的,则各个连接仍然可以通过组合的(客户端 IP、客户端端口)部分来区分。

如果您netstat -a在繁忙的 Unix 网络服务器上运行该命令,您将看到它的实际效果。该命令将在服务器的端口 80 上显示一堆连接,但都具有不同的客户端 IP 和/或端口。它还将显示系统仍在侦听端口 80 上的新连接,同时它正在处理该端口上的所有现有连接。

与网络服务器的连接总数可能受到其他一些约束(可能是内存使用,可能是网络服务器本身或操作系统内核中的一些任意限制)或一些外部约束(可能是外部防火墙或网关中的连接表大小)但它不受 16 位 TCP 端口范围的限制。

另请注意,TCP 端口与 UDP 端口完全分开,因此将 TCP 端口 80 用于 Web 服务器并不会阻止 UDP 端口 80 用于其他目的。反之亦然。

于 2012-06-09T20:27:19.893 回答