服务器如何使用有限数量的端口?

时间:2012-06-09 16:57:19

标签: http

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

高级样本

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

    < / LI>
  2. 另一个 client2 连接到server1(server1: 5124 &lt; - &gt; client2:7123)

  3. 所以,问题是:对于给定的实例,服务器是否受限于65535(实际上比实际上少)?

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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