是0.0.0.0一个有效的IP地址?

是0.0.0.0一个有效的IP地址? 我希望我的程序能够将其存储为没有地址正在使用的指示,但是如果它实际上有效,这将不起作用。

它是有效的 ,因为它包含四个八位字节,每个字节的范围在0到255之间。 但是,它不能用作真实的IP地址。

RFC1700 (a)声明0.0.0.0/8 0.<anything>.<anything>.<anything> )仅被保留为源地址。 你可以进入看起来有这个地址的情况,但这通常是因为没有地址分配给你(例如通过DHCP)。

请参阅维基百科对IPv4的条目 。


(a)虽然这个RFC现在被认为已经过时了,但在给定的行为方面仍然是正确的。 它的替代版本https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml仍然具有相同的文字,详细说明了使用0.0.0.0的地址。;

是的,这是一个IP地址, 它是保留的。

0.0.0.0/8 – 此块中的地址是指“本”networking上的源主机。 地址0.0.0.0/32可以用作该networking中该主机的源地址; 可以使用0.0.0.0/8以内的其他地址来引用该networking上的指定主机

0.0.0.0用于绑定所有IPv4接口。 所以这是一个特殊的值,就像127.0.0.1一样。

它被保留为默认路由地址。

当没有地址分配给你的时候,通过ipconfig看到这个是很常见的。

让我们看看OP在这里问的问题。

是0.0.0.0一个有效的IP地址?

是。 这在技术上是一个有效的IP地址,其他答案描述了它的许多不同用途(我不打算在这里重新发布维基百科链接…或者我是)。

因此,我相信上面的paxdiablo的答案是最正确的,但让我们来看看你的问题的上下文。

我希望我的程序能够将其存储为没有地址正在使用的指示,但是如果它实际上有效,这将不起作用。

这完全取决于你的用例。 鉴于这是一个程序员论坛,让我们考虑一下这个观点。

如果您的软件存储实际的互联网地址 – 服务器位置,访问您的网站,复制/镜像或备份站点,Web服务或数据库服务器等 – 那么这将是完全有效的。 互联网上没有机器会分配这个地址,也不会parsing成有效的连接。

另一方面,如果您正在编写防火墙或路由器固件,则此地址具有特殊含义; 默认路由,接受任何IP源/目的地,阻止所有IP源/目的地,低谷通用等,如其他人所概述的。 但是,让我指出一点,如果你在这个层次上进行编码,你应该对networking协议有足够的了解,以便不需要首先提出这个问题。

因此,我将假设大多数查看这个问题的人都属于第一类,并且build议这是存储空的,空的或缺lessIP地址的完全有效的方式 ,如果有某种原因,实际的null值不能用过的。 即使您忽略了validation检查,并且您的软件尝试连接到此IP地址,也无法build立连接。

您可以在您的应用程序中使用它来表示它没有IP地址,当机器没有IP地址时,Microsoft也使用0.0.0.0。

上面讨论的“有效”场景取决于与应用程序无关的特定场景。

对于所有意图和目的,是的。 由句点分隔的四个数字中的每一个都具有0-255的值,所以0.0.0.0在技术上是有效的。

我不认为世界上会有谁拥有知识产权。

编辑:好的,它是保留为默认路线,但它仍然有效。

当然如此。 但是对于networking上的单个主机来说这将是无效的。 它在本地networking的广播范围内。 阅读这里: http : //tools.ietf.org/html/rfc1700

进行networkingWhois查询也可以产生相当有用的输出。
例:
http://whois.arin.net/rest/nets;q=0.0.0.0?showDetails=true

注释:地址0.0.0.0只能用作计算机正在学习使用哪个IP地址时的传出数据包的地址。 它从不被用作目的地址。 地址以“0”开头的。 有时用于广播直接连接的设备。