子网划分为什么全0全1子网号不能使用?CIDR为什么能使用全0全1子网号?

1.子网划分为什么全0全1子网号不能使用?

看看RFC950提到的原因:
假设我们有一个网络:192.168.0.0/24,我们现在需要两个子网,那么按照RFC950,应该使用使用两位子网号,即/26,得到两个可以使用的子网192.168.0.64/26和192.168.0.128/26
对于主网络192.168.0.0/24,网络地址是192.168.0.0,广播地址是192.168.0.255
对于子网192.168.0.0/26(子网号全0),网络地址是192.168.0.0,广播地址是192.168.0.63
对于子网192.168.0.64/26,网络地址是192.168.0.64,广播地址是192.168.0.127
对于子网192.168.0.128/26,网络地址是192.168.0.128,广播地址是192.168.0.191
对于子网192.168.0.192/26(子网号全1),网络地址是192.168.0.192,广播地址是192.168.0.255

  可以看出,对于第一个子网,网络地址和主网络的网络地址是重叠的,对于最后一个子网,广播地址和主网络的广播地址也是重叠的。这样的重叠将导致极大的混乱。比如,一个发往192.168.0.255的广播是发给主网络的还是子网的?这就是为什么在当时不建议使用全0和全1子网。

2.CIDR为什么能使用全0全1子网号?

  在严格按照TCP/IP A.B.C.D给IP地址分类的环境下,为了避免二意性,全0和全1网段都不能使用。这种环境叫作Classful。在这种环境下,子网掩码只在所定义的路由器内有效,掩码信息到不了其它路由器。例如RIP-1在做路由广播时便不带掩码信息,收到路由广播的路由器因为无从知道这个网络的掩码,只能按照标准TCP/IP的定义赋予它一个掩码。
  但在Classless的环境下,掩码任何时候都和IP地址成对地出现,这样,前面谈到的二意性就不会存在。是Classful还是Classless取决于路由器运行的路由协议,一个路由器可同时运行Classful和Classless路由协议。RIP是Classful,OSPF、EIGRP、BGP4是Classless,它们可以同时运行在同一台路由器上。
  以上面的情况为例。在子网划分下,一个发往192.168.0.255的广播不能确认是发给主网络的还是子网;然而采用CIDR后,由于CIDR在路由时采取最长前缀匹配,目的地址192.168.0.255和地址块192.168.0.192/26的前缀匹配长度最长,所以广播发送到192.168.0.192/26地址块。

你可能感兴趣的:(计算机理论与基础)