在最简单的情况下,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 用于其他目的。反之亦然。