如何表示未指定的IPv4地址?

问题描述 投票:-1回答:1

我正在研究用Node.js编写的分布式应用程序,其中面向公众的服务器不时通过HTTP从客户端接收消息。收到后,消息将转换为以下JSON结构:

{
  "message": {
    // The actual message's content
  },
  "metadata": {
    "client": {
      "ip": "192.168.0.1",
      "user": {
        "token": {
          "sub": "[email protected]"
        }
      }
    }
  }
}

由于每个连接都使用OpenID Connect进行身份验证,因此我将客户端发送的令牌添加到元数据部分,以及发送消息的客户端的IP地址。到目前为止,这很有效。

现在,其中一个非面向公众的服务器也能够发送消息,但它没有通过HTTP线路。相反,它通过消息队列发送消息(在我的案例中是RabbitMQ,但这与此无关)。面向公众的服务器使用此队列作为消息的第二个传入通道。

我希望消息具有相同的结构,无论它们是通过HTTP从客户端接收还是通过内部服务器的队列接收。内部服务器有一个令牌,所以这不是问题。当然它可以使用自己的IP地址作为源,但这并没有多大意义。

我想要实现的是提供一个正式的IP地址,但基本上说我是占位符,不要把我当作真实的。

我在IPv6看到有地址块::的地址::/128,维基百科称之为unspecified address。实际上,这几乎听起来像我在寻找,但我不需要它作为IPv6,而是作为IPv4。

现在的问题是:IPv4中的这个相当于什么?是0.0.0.0?我是否可以将此地址用于我的目的,或者这在网络中具有语义上不同的含义?

ip-address ipv6 ipv4 reserved-ip-addresses
1个回答
2
投票

我认为将IPv4地址0.0.0.0用于此目的是完全没问题的。

IANA reservation0.0.0.0/8引用了RFC 1122的描述“此网络上的此主机”,它与您的应用程序中的使用非常匹配。

另外,address 0.0.0.0 has various similar uses,例如,作为DHCP协议中的源地址,由尚未拥有地址的主机,或作为服务器进程的通配符地址,意味着“在所有本地IPv4源地址上运行”。

more detailed answer可以找到问题“127.0.0.1和0.0.0.0之间有什么区别?”在超级用户身上。

© www.soinside.com 2019 - 2024. All rights reserved.