有类路由协议(classful routing protocol)中是不支持全0子网(all-zero subnets)与全1子网(all-ones subnets)的。但是具体原因是什么?

一、全0子网

在路由协议中,路由器会无法区分172.16.0.0,无法区分这个地址代表的究竟是主网络号,还是子网络号。因为有类路由协议是不识别子网掩码的。

1、172.16.0.0/16代表的是主网络号,网段内有65534个IP。

2、172.16.0.0/24代表的就是子网号了,网段内支持254个点。

二、全1子网

同样对于有类路由协议来说,区分他们倒底是哪种广播就非常困难了。还是拿172.16.255.255来看。这个IP地址是全主网广播?还是全子网广播?

1、如果是全主网广播:172.16.255.255/16,带16位的掩码,这种广播应被发给整个172.16.0.0这个B类网段,发给网段内所有65534个IP地址。

2、而如果带上了24位掩码,代表的无疑是全子网广播了,这时的广播只应被发给172.16.255.0这个网段内的254台主机

而无类路由协议不存在这个问题,不过CISCO的IOS仍然在默认情况下会拒绝尝试将全0子网配置为有效的地址/掩码的组合。我们可以通过在全局模式下输入ip subnet-zero命令实现这个目的。

附:新版本的IOS已经将ip subnet-zero也做为默认配置了。所以无类路由不必担心全0子网的问题。

很多有关IP规划的题目中会要求计算出合法的网段数,这个时候要排除全0以及全1子网,因为题目里并没有明确指定你将会使用有类路由协议,还是无类路由协议.