Apache 在每个连接上都使用 TCP 端口吗?

Apache 在每个连接上都使用 TCP 端口吗?

我们的系统管理员说

“Apache 在每个连接上使用一个 TCP 端口”

因此一台服务器可以同时服务 65534 (MAX)。对吗?

我认为 Apache 仅使用 80 或 443。但是,他使用了许多文件描述符(而不是端口)不是吗?

/sbin/sysctl -a | grep fs.file-max

fs.file-max = 123456789

我认为是最大值您能给我一些有关它的信息吗?

答案1

我认为您的系统管理员对于端口和文件描述符的具体含义有些困惑。

每个服务器有 65536 个端口,编号065535。程序可以在端口上监听来自客户端的请求并进行相应的处理。在任何给定时间,只有一个程序可以监听一个端口。在这方面,端口是一种有限的资源 - 虽然大多数端口的使用率极低。

当客户端连接到服务器时,会为代表套接字的连接创建一个文件描述符。您可以像其他普通文件一样读取和写入此套接字。可用的文件描述符数量非常多,但通常对文件描述符的数量有限制一个特定的应用可以使用。

另外,值得注意的是,Apache 可以配置为同时监听多个端口。

答案2

TCP 流由 4 个数字唯一标识:

  • 主机 A 的 IP 号码
  • 主机 A 上的端口号
  • 主机 B 的 IP 地址
  • 主机 B 上的端口号

请注意,客户端也使用端口号,这有助于保持流分离。

典型情况是,服务器具有已知(通过 DNS)IP 地址和已知端口号,然后每个客户端具有不同的 IP 号,客户端使用的端口号是半随机选择的。这样,单个服务器就可以连接到许多不同的客户端,并且单个客户端可以与同一服务器的同一端口建立多个连接,只需在客户端使用不同的端口即可。

相关内容