【问题标题】:Why do "curl 0.0.0.0" and "nc 0.0.0.0 80" work?为什么“curl 0.0.0.0”和“nc 0.0.0.0 80”有效?
【发布时间】:2017-08-05 23:19:41
【问题描述】:

当我在 bash 中输入 curl 0.0.0.0nc 0.0.0.0 80 时,我可以连接到在 localhost 上运行的 HTTP 服务器。

0.0.0.0127.0.0.1 一样吗?为什么?当我尝试在 Google 中搜索 0.0.0.0 时,它似乎是一个无效的 IP 地址。为什么指向localhost?

【问题讨论】:

  • 在某些方面,如果您了解 0.0.0.0 实际上引用了一个不可路由的地址,那么这是一个令人惊讶的深刻问题......我希望路上会有更多的答案。当您阅读 RFC 时,它说 0.0.0.0 是不可路由的,但对于大多数程序员来说,0.0.0.0 是访问绑定到端口的正在运行的应用程序的最简单方法,而 127.0.0.1 可能不会一直工作。

标签: curl networking localhost ip-address netcat


【解决方案1】:

0.0.0.0 是一个有效的 IP 地址,它不会重新映射到 127.0.0.1。 curl 和 nc 使用该地址,就像它们使用任何其他 IPv4 数字地址一样。

许多工具和系统不支持将其作为地址,因为它等于二进制全零 32 位模式,在许多 API 中被视为魔术。

有点相关:端口 0 也适用于一组类似的警告。

【讨论】:

  • 你能发布一个 RFC 的链接来证明 0.0.0.0 是一个有效的 IP 地址吗?
  • 好吧,没有 RFC 说它特殊的,这是我的观点。
猜你喜欢
  • 2018-08-10
  • 2013-06-22
  • 2014-01-02
  • 2019-10-05
  • 2014-01-13
  • 1970-01-01
  • 2018-12-03
  • 1970-01-01
  • 2017-10-29
相关资源
最近更新 更多