为什么主机 http 服务器需要指定它托管的 IP?

Why host http server needs to specify the IP on which it is hosting?

我在 Python 上使用 BaseHTTPServer 模块托管一个 http 服务器。

我想了解为什么需要指定您托管 http 服务器的 IP,例如 127.0.0.1/192.168.0.1 或其他。 [可能是一个通用的 http 服务器概念,并不特定于 Python]

为什么不能像知道本机IP的人一样连接http服务器呢?

当我的 http 服务器同时连接到两个网络时,我会遇到问题,我想在两个网络上为 http 服务器提供服务。当我从 http 服务器计算机上的热点模式切换到连接到另一个 wifi 路由器时,我的 IP 通常会即时更改。

在 0.0.0.0 上尝试 运行 它,它接受来自所有接口的连接。明确指定 IP 通常是一个很好的做法(负载平衡、缓存服务器、安全、仅内部网络的微服务等),但根据您的故事判断,这不是生产服务器,而是一些内部 LAN 应用程序。

您必须指定服务器的IP地址,主要是因为监听套接字的底层系统调用需要它。在较低级别,您声明要使用的对(IP 地址、端口),监听它并接受传入连接。

另一个原因是专业级服务器往往有多个网络接口和多个IP地址,有些服务只需要监听一些接口地址。

希望有特殊地址:

  • localhost 或 127.0.0.1 是环回地址,只能从本地机器访问。目前用于本地服务的测试
  • 0.0.0.0(any)是一个特殊的地址,用来声明你要监听所有的本地接口。我认为这就是您想要的。