在第一个八位字节中全零的IP地址是否有效?
例如, 0.1.2.0/24
是一个有效的子网,networking地址是0.1.2.0
,广播地址是0.1.2.255
,可用地址范围是0.1.2.1
到0.1.2.254
?
它看起来应该是有效的,但至less在Windows系统上是行不通的。
如果无效,那为什么?
RFC1122 , 互联网主机的要求 – 通信层 ,说:
{ <Network-number>, <Host-number> } (a) { 0, 0 } This host on this network. MUST NOT be sent, except as a source address as part of an initialization procedure by which the host learns its own IP address. See also Section 3.3.6 for a non-standard use of {0,0}. (b) { 0, <Host-number> } Specified host on this network. It MUST NOT be sent, except as a source address as part of an initialization procedure by which the host learns its full IP address.
看起来像0.0.0.0/8在IANA保留子网列表中。
根据RFC 5735,0.0.0.0 /8是一个保留的IP地址范围,如下所示:
0.0.0.0/8 – 此块中的地址是指“本”networking上的源主机。 地址0.0.0.0/32可以用作该networking中该主机的源地址; 可以使用0.0.0.0/8以内的其他地址来引用该networking上的指定主机[RFC1700,第4页]。
根据RFC 1700 – “分配号码” ,“特殊地址”部分,networking号码0只能用作源地址,表示同一networking上的主机。 因此,将该types的地址分配给接口是无效的。
“0”。 networking用于SNM(系统networkingpipe理),不能用于别的东西
对于任何人想知道为什么在这种情况下networking号是0,0.1.2.0/24分解如下:
Network = (8 bits) 0 Subnetwork (16 bits) = 1.2 Host part = remaining 8 bits
假设第一个字节的MSB是0,它必须是A类,隐含的8位networking部分。 它再划分16位(接下来的两个八位字节)。
考虑到CIDR和有类地址的死亡,0.1.2.0/24 应该是一个有效的子网(如果考虑前24位,则在networking部分设置比特)。