如何表示未指定的 IPv4 地址?
How to represent an unspecified IPv4 address?
我正在开发一个用 Node.js 编写的分布式应用程序,其中面向 public 的服务器不时通过 HTTP 从客户端接收消息。收到后,消息将变成以下 JSON 结构:
{
"message": {
// The actual message's content
},
"metadata": {
"client": {
"ip": "192.168.0.1",
"user": {
"token": {
"sub": "jane.doe@example.com"
}
}
}
}
}
由于每个连接都使用 OpenID Connect 进行身份验证,因此我将客户端发送的令牌以及发送消息的客户端的 IP 地址添加到元数据部分。到目前为止,效果很好。
现在,其中一个不面向 public 的服务器也能够发送消息,但它不会为此通过 HTTP 线路。相反,它通过消息队列发送消息(在我的例子中是 RabbitMQ,但这与这里无关)。 public 面向服务器使用此队列作为消息的第二个传入通道。
我希望消息具有相同的结构,无论它们是通过 HTTP 从客户端接收的还是通过队列从内部服务器接收的。内部服务器有令牌,所以这不是问题。当然它可以使用自己的 IP 地址作为来源,但这并没有太大意义。
我想实现的是提供一个形式上正确的IP地址,但基本上是说我是一个占位符,不要以为我是真的.
我看到 IPv6 中有来自地址块 ::/128
的地址 ::
,维基百科称之为 unspecified address
。实际上,这听起来很像我正在寻找的东西,但我不需要它作为 IPv6,而是作为 IPv4。
现在的问题是:这在 IPv4 中的等价物是什么?是0.0.0.0
吗?我可以将这个地址用于我的目的吗,或者这在网络中有不同的语义含义吗?
我认为为此目的使用 IPv4 地址 0.0.0.0
完全没问题。
IANA reservation for the block 0.0.0.0/8
cites RFC 1122 带有描述“此网络上的此主机”,与您的应用程序中的使用非常匹配。
此外,address 0.0.0.0
has various similar uses,例如作为 DHCP 协议中还没有地址的主机的源地址,或作为服务器进程的通配符地址,意思是“运行 在所有本地 IPv4 源地址上。”
A more detailed answer 可以找到问题“127.0.0.1 和 0.0.0.0 之间有什么区别?”在超级用户上。
我正在开发一个用 Node.js 编写的分布式应用程序,其中面向 public 的服务器不时通过 HTTP 从客户端接收消息。收到后,消息将变成以下 JSON 结构:
{
"message": {
// The actual message's content
},
"metadata": {
"client": {
"ip": "192.168.0.1",
"user": {
"token": {
"sub": "jane.doe@example.com"
}
}
}
}
}
由于每个连接都使用 OpenID Connect 进行身份验证,因此我将客户端发送的令牌以及发送消息的客户端的 IP 地址添加到元数据部分。到目前为止,效果很好。
现在,其中一个不面向 public 的服务器也能够发送消息,但它不会为此通过 HTTP 线路。相反,它通过消息队列发送消息(在我的例子中是 RabbitMQ,但这与这里无关)。 public 面向服务器使用此队列作为消息的第二个传入通道。
我希望消息具有相同的结构,无论它们是通过 HTTP 从客户端接收的还是通过队列从内部服务器接收的。内部服务器有令牌,所以这不是问题。当然它可以使用自己的 IP 地址作为来源,但这并没有太大意义。
我想实现的是提供一个形式上正确的IP地址,但基本上是说我是一个占位符,不要以为我是真的.
我看到 IPv6 中有来自地址块 ::/128
的地址 ::
,维基百科称之为 unspecified address
。实际上,这听起来很像我正在寻找的东西,但我不需要它作为 IPv6,而是作为 IPv4。
现在的问题是:这在 IPv4 中的等价物是什么?是0.0.0.0
吗?我可以将这个地址用于我的目的吗,或者这在网络中有不同的语义含义吗?
我认为为此目的使用 IPv4 地址 0.0.0.0
完全没问题。
IANA reservation for the block 0.0.0.0/8
cites RFC 1122 带有描述“此网络上的此主机”,与您的应用程序中的使用非常匹配。
此外,address 0.0.0.0
has various similar uses,例如作为 DHCP 协议中还没有地址的主机的源地址,或作为服务器进程的通配符地址,意思是“运行 在所有本地 IPv4 源地址上。”
A more detailed answer 可以找到问题“127.0.0.1 和 0.0.0.0 之间有什么区别?”在超级用户上。