解释如何将服务绑定到 IP 和端口

解释如何将服务绑定到 IP 和端口

昨天我讨论了在服务器上的同一端口上运行相同服务(例如 SMTP)。我认为这可以通过为服务器分配多个 IP 地址并将服务绑定到每个 IP/端口组合来实现。然而,我们最终进行了讨论并得出结论,我们错过了理论背景。

我们被这样的比喻所困扰:服务器是房子,可以通过多个 (ip) 地址访问,端口是房间。房间有编号,但每个编号只有一个房间。这意味着无论使用哪个地址访问房子,您最终都会进入同一个房间。

我认为它不是那样工作的,请求的 ip/port 端口组合使请求唯一。只要服务绑定到 ip 地址,操作系统就可以处理同一端口号上的多个服务。

这不是如何在 Y 型操作系统的 80 端口上运行两个 X 型 Web 服务器的问题。我想知道这在概念层面上是如何工作的,这样我就可以理解并向别人解释这一点

[编辑]

也许我的问题有点毛茸茸的。问题是:是否可以在一台服务器上拥有多个 IP 地址并按 IP 地址拆分流量,从而在一台服务器上拥有多个端口 25。

如果是这样,我该如何向那些不相信的人解释呢?也许可以打个好比的比喻?

答案1

我认为“每个服务器都是一所房子”这个比喻需要改正为“每个 IP 地址都是一所房子”。例如,假设你的服务器有 2 个 IP 地址理论上您有 2 * (2^16) 个 131072 个服务器套接字的唯一组合可供您使用。

由于您有不同的 IP:端口组合可用,您可以在同一台服务器 (IP_Address_2:25) 上配置 Sendmail (IP_Address_1:25) 和 Postfix

答案2

系统上的每个 IP 地址都会有可供使用的端口。

可以将许多服务配置为侦听一个或多个 IP:Port 对。如果某个服务侦听所有 IP:25,则负载可以分摊到每个 IP 上。

然而,你忽略了连接设备如何知道要连接哪里?也许可以使用DNS 循环提供不同的 IP 地址,或者在 SMTP(端口 25)的情况下提供同等权重MX 记录

事实上,我越是尝试回答你的问题,我就越意识到你的理解不足需要改进,所以我会再次向你推荐优秀的TCP/IP 指南

相关内容