我最近非常惊讶地发现0.0.0.0 是一个有效的 IP 地址,并且实际上具有定义的“含义”和用途。
IANA 分配 0.0.0.0/32表示“此网络上的主机”,如RFC 1122 第 3.2.1.3 节所定义。虽然 RFC 1122 规定不得将其作为网络上的目的地在 IP 数据包中发送,但它没有定义如何在主机内部解释该地址。
除了... RFC 1122 将其命名为“此网络上的此主机”,暗示与“localhost”的含义非常相似。
在 Linux 上,尝试连接到 0.0.0.0 会导致连接到 localhost(假设有东西正在侦听)。这似乎与 RFC 1122 名称一致。但是我没有看到它在标准中定义(我什至不确定哪个标准会涵盖它,因为它是操作系统内部的)。
所以我的问题是:Linux对connect()0.0.0.0的解释与其他操作系统一致吗?它们在众所周知的操作系统内核(Windows / UNIX / ...)中是否有任何显着的例外。
我对此特别感兴趣,因为 DNS 服务器“错误地”使用 0.0.0.0 作为黑洞,导致与本地主机的虚假连接。
networking ×1