0.0.0.0是一个有效的IP地址吗?我希望我的程序能够将其存储为没有使用地址的指示,但如果它实际上是有效的,这将行不通。
答案:是的,0.0.0.0是一个有效的IP地址。在网络编程中,它用于表示所有可用的IP地址或表示服务器端监听所有网络接口的请求。因此,您可以将其用作未使用地址的指示。0.0.0.0是一个有效的IP地址吗?我希望我的程序能够将其存储为没有使用地址的指示,但如果它实际上是有效的,这将行不通。
答案:是的,0.0.0.0是一个有效的IP地址。在网络编程中,它用于表示所有可用的IP地址或表示服务器端监听所有网络接口的请求。因此,您可以将其用作未使用地址的指示。该IP地址在有效性方面是合法的,因为它包含了四个八位字节,每个字节的值均在0到255之间(包括0和255)。但是,作为真实的IP地址,它是不可用的。
RFC1700(a)中指出,0.0.0.0/8
(0.<anything>.<anything>.<anything>
) 保留为仅用作源地址。当你似乎使用了这个地址时,通常是因为尚未给你分配任何地址(例如由DHCP),而造成的情况。
请参见Wikipedia IPv4词条。
(a)虽然此RFC现已被认为已过时,但其所述行为在技术层面上仍然是正确的。它的替代品https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml仍然具有相同的描述,详细说明了0.0.0.0地址的用途。
让我们来看一下提问者所问的问题。
0.0.0.0是一个有效的IP地址吗?
是的。从技术上讲,这是一个有效的IP地址,其他答案描述了它的许多不同用途(我不打算在这里重新发布wikipedia的链接...或许我会)。因此,我认为paxdiablo的答案是最正确的,但我们也要考虑你问题的背景。
我想让我的程序能够将其存储为没有使用地址的指示,但如果它实际上是有效的,这将无法实现。
这完全取决于您的用例。鉴于这是一个程序员论坛,让我们考虑这个角度。
如果您的软件正在存储实际的互联网地址 - 服务器位置、访问者到您的网站、复制/镜像或备份站点、Web服务或数据库服务器等 - 那么这将是完全有效的。互联网上没有任何机器分配这个地址,也不会解析为有效的连接。
如果你正在编写防火墙或路由器固件,那么这个地址确实具有特殊意义;默认路由、接受任何IP源/目的、阻止所有IP源/目的、全捕获等等,正如其他人所概述的那样。但是,让我指出,如果你在这个层次上编程,你应该有足够的网络协议理解能力,以至于不需要首先问这个问题。0.0.0.0
用于绑定所有IPv4接口。因此,它就像127.0.0.1
一样是一个特殊值。
是的,它是一个IP地址,但它是保留地址。
0.0.0.0/8 - 此块中的地址是指“此”网络上的源主机。地址0.0.0.0/32可以用作该网络上此主机的源地址;0.0.0.0/8内的其他地址可用于引用此网络上指定的主机。
这个地址被保留为默认路由地址。
当你没有分配到任何地址时,通过ipconfig命令可以常见地看到它。
进行网络Whois查询还可以产生非常有用的输出。
例如:
http://whois.arin.net/rest/nets;q=0.0.0.0?showDetails=true
注释:当计算机正在学习应使用哪个IP地址时,地址0.0.0.0只能用作出站数据包的地址。它从不用作目标地址。以“0.”开头的地址有时用于直接连接的设备广播。
就所有目的而言,是的。由句点分隔的四个数字中的每一个都有一个值,范围从0到255,因此0.0.0.0在技术上是有效的。
我不认为世界上会有任何人实际拥有那个IP地址。
编辑:好吧,它被保留用于默认路由,但仍然有效。
您可以在应用程序中使用它来表示它没有IP地址,当机器没有IP地址时,Microsoft也使用0.0.0.0。
上述“有效”场景取决于特定的情况,与您的应用程序无关。
正如其他答案所述,0.0.0.0是一个合法且对某些目的有效的IP地址。
如果范围内的所有值都是合法值,则您想要定义的任何标志项必须来自其他地方。否则,您将会用标志的含义超载一个合法值,并且在使用超载值时,无法100%确定是想要合法值还是标志含义。这将导致错误,必须通过重新设计来解决,这可能是一项昂贵的工作。
合法值的超载经常发生,IP地址和MAC地址(是的,00:00:00:00:00:00是合法的并已分配)是最常见的受害者之一。
巧合的是,我现在正在开发一个不基于以太网/IP的系统,其中帧的长度被限制在约40个字节左右。由于一个字节可以表示0-255个字节的长度,而最大长度为40个字节,因此我可以使用一些未使用的非法值(252到255)来表示标志项。这些带内标志是可以的,因为没有超载。
当然是这样的。 然而对于网络中的单个主机来说是无效的。它位于本地网络的广播范围内。在这里阅读:https://www.rfc-editor.org/rfc/rfc1700
0.0.0.0
是有效的IP地址,则无法实现。 - James McNellis0.0.0.0
地址。 - Ron Maupin