IP数据包的目的地是否设置为子网IP地址?
是。这是有效的IP,因此可以使用。
如果是,在什么情况下以及为什么?
它只是/ 24中255个可用IP之一
如果没有,那为什么不释放该地址供任何主机使用呢?
如果您使用的是较旧的硬件,则需要检查其是否使用第一个或最后一个地址作为网络地址。(对于带掩码FF.FF.FF.00的网络,为.0或.255)
这是跳过该IP的好习惯。很久以前学到的习惯很难忽略。
不知道背景的人不会使用它,因为其他人也不会使用它,因此使用它一定是错误的,或者是因为他们没有意识到“ 0”可以是第一个数字。
[编辑] Grezzo刚刚在Windows XP上对其进行了测试,其中Windows网络GUI“有效地”阻止了此设置。Windows 7具有相同的行为。然后,我在可以正常工作的非Windows主机上进行了尝试。如果使用Windows,则可能必须通过IPconfig手动配置网络以将其设置为全零。
[编辑2]
我花的时间越长,我就越困惑。
Rfc4632-无类域间路由
似乎没有禁止它,但也没有明确允许它。
这篇ServerFault帖子中提到:“由于历史原因,许多操作系统将第一个地址视为广播。例如,从本地(/ 24)网络上的OS X,Linux和Solaris ping xxx0会收到响应。Windows不允许您ping默认情况下是第一个地址,但是您可以使用SetIPUseZeroBroadcast WMI方法启用它。我想知道您是否可以在全Windows网络上使用.0作为主机地址。。
这是相同的问题,但不是答案。
网络地址也用于路由表中。但是我看不到为什么它因此不起作用。路由表中的相同符号将路由到正确的网络。一旦在正确的网络上,它将到达IP 0的PC。
(所有这些都用于192.168.1 / 24。
如果使用192.168.0 / 23,则192.168.1.0将是范围中间的有效和安全值)
[编辑3]
还有一个链接指向同一问题。在堆栈交换中似乎有些流行:
/superuser/379451/why-can-a-network-address-not-be-a-valid-host-address
一想到:
Destination_IP可能是与被比较的所述路由表中的条目之前与网络桅杆(在硬件中快速操作)编 但:
(半随机IP)192.168.0.42和255.255.255.0会产生192.168.0.0
但192.168.0.0和255.255.255.0也会产生192.168.0.0
[编辑4-撰写此答案后很长-由于此新信息,我可能需要重写整个帖子]
RFC923在第3页上指出:
In certain contexts, it is useful to have fixed addresses with
functional significance rather than as identifiers of specific
hosts. When such usage is called for, the address zero is to be
interpreted as meaning "this", as in "this network". The address
of all ones are to be interpreted as meaning "all", as in "all
hosts". For example, the address 128.9.255.255 could be
interpreted as meaning all hosts on the network 128.9. Or, the
address 0.0.0.37 could be interpreted as meaning host 37 on this
network.
在我们的网络工程站点上引用@ylearn
我相信其中的第一个文档来自RFC950,该文档引用了RFC943(已废除上面的RFC923,但对特殊地址使用相同的语言):
It is useful to preserve and extend the interpretation of these
special addresses in subnetted networks. This means the values
of all zeros and all ones in the subnet field should not be
assigned to actual (physical) subnets.
ifconfig
将24网络的主机地址设置为0或255时不会抱怨。只需尝试使用它。