0.0.0.0是有效的IP地址吗?我希望我的程序能够存储它作为没有使用地址的指示,但如果它实际上有效,这将不起作用。
答案 0 :(得分:47)
它是有效的,因为它包含四个八位字节,每个八位字节在0到255的范围内。但是,它不是可用作为真实的IP地址。
RFC1700 (a)指出0.0.0.0/8
(0.<anything>.<anything>.<anything>
)仅作为源地址保留。你可以进入看似你有这个地址的情况,但这通常是因为没有为你分配地址(例如,通过DHCP)。
(a)虽然这个RFC现在被认为是过时的,但就给定的行为而言仍然是正确的。它的替换https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml仍然具有相同的文本,详细说明了0.0.0.0地址的使用。
答案 1 :(得分:7)
是的,它是一个IP地址,但是保留的。
此块中的0.0.0.0/8 - 地址是指“此”上的源主机 网络。地址0.0.0.0/32可用作此地址的源地址 在这个网络上主持;可以使用0.0.0.0/8内的其他地址 请参阅此网络上的指定主机
答案 2 :(得分:7)
0.0.0.0
用于绑定所有IPv4接口。所以这是一个特殊的值,就像127.0.0.1
。
答案 3 :(得分:7)
让我们看一下OP在这里提出的问题。
0.0.0.0是有效的IP地址吗?
是。这在技术上是一个有效的IP地址,其他答案描述了它的许多不同用途(我不会在这里重新发布wikipedia链接......或者我可能是)。
因此我相信上面的paxdiablo's answer是最正确的,但让我们看一下你问题的背景。
我希望我的程序能够存储它作为没有使用地址的指示,但如果它实际上有效则不会起作用。
这完全取决于您的使用案例。鉴于这是一个程序员论坛,让我们考虑一下这个观点。
如果您的软件存储实际的互联网地址 - 服务器位置,访问您的网站,复制/镜像或备份站点,Web服务或数据库服务器等等 - 那么这将是完全有效的。互联网上的任何机器都不会分配这个地址,也不会解析为有效的连接。
另一方面,如果你正在编写防火墙或路由器固件,那么这个地址确实具有特殊含义;默认路由,接受任何IP源/目的地,阻止所有IP源/目的地,全部捕获全部等,如其他人所述。但是,请允许我指出,如果您在此级别编码,您应该对网络协议有足够的了解,以便不需要首先提出这个问题。
因此,我假设大多数观看此问题的人都属于第一类,并建议此是存储空,空或缺少IP地址的完全有效方式,如果有的话是某些原因导致无法使用实际的null
值。即使您忽略了验证检查,并且您的软件确实尝试连接到此IP地址,也无法建立连接。
答案 4 :(得分:3)
它被保留为default route地址。
当没有为你分配地址时,通常会通过ipconfig看到这一点。
答案 5 :(得分:1)
您可以在应用程序中使用它来表示它没有IP地址,当机器没有IP地址时,Microsoft也使用0.0.0.0。
上面讨论的“有效”方案取决于与您的应用程序无关的特定方案。
答案 6 :(得分:1)
正如其他答案所涵盖的那样,0.0.0.0是合法且对某些目的有效的IP地址。
如果范围中的所有值均为合法值,则要定义的任何标志项都必须来自其他位置。否则,您将重载带有标志含义的合法值,并且当使用重载值时,不可能100%确定该合法值或标志含义是故意的。这将导致错误,必须通过重构来解决,这可能是一项昂贵的工作。
合法值总是无时无刻不在发生,IP地址和MAC地址(是的,00:00:00:00:00:00是合法的并已分配)是最常见的受害者。
巧合的是,我现在正在一个系统(不是基于以太网/ IP的系统)上工作,其中一帧的长度上限为40个字节。由于一个字节可以表示0-255个字节的长度,并且最大长度为40个字节,因此我可以使用一些未使用的又称为非合法值(252到255)来表示标志项。这些带内标志还可以,因为没有过载。
答案 7 :(得分:0)
出于所有意图和目的,是的。由句点分隔的四个数字中的每一个都具有0-255的值,因此0.0.0.0在技术上是有效的。
我认为世界上没有任何人真正拥有该IP。
编辑:好的,它是为默认路由保留的,但它仍然有效。
答案 8 :(得分:0)
当然是。 但它对网络上的单个主机无效。它位于本地网络的广播范围内。在这里阅读:http://tools.ietf.org/html/rfc1700
答案 9 :(得分:0)
执行网络Whois查询还可以生成非常有用的输出
例如:
的 http://whois.arin.net/rest/nets;q=0.0.0.0?showDetails=true 强>
注释:当计算机正在学习它应该使用的IP地址时,地址0.0.0.0只能用作传出数据包的地址。它永远不会用作目标地址。地址以&#34; 0开头。&#34;有时用于直接连接设备的广播。