2.2.3 子网与子网掩码
1.子网
如前所述,一个A类网络能够分配的IP地址数多达约1680万个,但很少有如此大的组织需要这么多的IP地址,即使是一个B类网络也有6万多个IP地址,因此地址的使用效率是一个问题。划分子网形成更小的网络,根据需要分配给不同的组织,就可以减少IP地址的浪费,从而更高效地利用IP地址。
什么是划分子网?就是将一个A类、B类,甚至是C类网络,利用其主机号部分的高比特位作为子网号来创建更多更小的网络,这种重新划分过的网络就称为子网。
2.子网掩码
为了区分不同子网中IP地址的网络号和主机号,就出现了子网掩码。
子网掩码的长度是32位,一个IP地址的子网掩码的比特位为1所对应的位为网络号部分,比特位为0所对应的位为主机号部分。表2-5列出了标准的A、B、C类IP地址的对应子网掩码。
表2-5 A、B、C类IP地址的子网掩码
(1)子网掩码的表示方法
例如对IP地址192.168.0.2,其子网掩码的表示方法有以下4种。
第一种方法:十六进制表示,为0xFFFFFF00。
第二种方法:二进制表示,为11111111111111111111111100000000。
第三种方法:点分十进制表示,为255.255.255.0。
第四种方法:比特数表示,为192.168.0.2/24。
在上面4种方法中,后两种表示方法最常见,也最常用。
子网掩码由32个二进制比特位组成,但不是32个1和0比特位的任意组合都是有效的。为了叙述方便,本书后文凡提及“长度为多少比特的子网掩码”指的都是子网掩码中1的个数。如长度为27位的子网掩码,就指前面27个1、后面5个0的子网掩码。
(2)子网掩码判定
1)二进制比特位1和0必须是连续的,并且1序列在前,0序列在后。例如11111111111111000111111100000111就不是有效的子网掩码,其中的1序列和0序列不连续。
2)十进制形式的子网掩码,例如240.255.255.0是无效的,因为这个十进制形式转换为二进制后为11110000111111111111111100000000,1序列和0序列不连续,所以无效。在十进制子网掩码中,凡是小于255的掩码值后必须是0,否则是无效掩码。
另外,十六进制的掩码很少使用,其判定方法与十进制形式类似。
3)一个网络的掩码长度一定大于或等于其用于划分子网的网络的掩码长度。在前面讲划分子网时讲过,“利用其主机号部分的高比特位作为子网号来创建更多更小的网络”,这句话就是指子网是从主机号部分借位产生的,借了多少位来产生子网号,掩码长度就比原网络号多了多少位。
因此,按上述规则:A类网络由于网络号有8位长,划分子网只能从后24位主机位中去划分,A类网络的子网掩码长度至少是8位;B类网络由于网络号有16位长,划分子网只能从后16位主机位中去划分,B类网络的子网掩码长度至少是16位;C类网络由于网络号有24位长,划分子网只能从后8位主机位中去划分,C类网络的子网掩码长度至少是24位。
4)子网掩码最多可以有多少位?例如针对一个C类IP地址199.3.4.0,主机号为最后8位,因此,在划分子网时就只能在最后8位中去划分,C类网络可以从主机号借位来产生子网号的位数是0~6位。0位表示不作划分,如果是6位,表示8位主机号中的前6位用作子网号,一共有30位网络号,可用于分配的主机号只剩下2位。199.3.4.0子网的主机号如图2-7所示。
图2-7 199.3.4.0子网的2位主机号
在最后的第31、32位上可能产生的主机号为00、01、10、11,其中00表示某个子网号,11表示某个子网的广播地址,真正可分配的IP地址在这个子网中就只有两个。为什么最大只能取6位作子网号,而不能是7位或8位呢?当取7位作子网号时,199.3.4.0子网的1位主机号如图2-8所示。
图2-8 199.3.4.0子网的1位主机号
在32位上只有1或0两种取值,取0表示子网号,取1表示广播地址,就没有可用于分配给主机使用的IP地址了。因此在C类网络的主机号中不能取7位作为子网号。同样,8位也没有可分配的IP地址。
从上面这个例子的分析可见:在划分子网时,为使划分的子网有意义,至少要留两位给主机号。因此可以有表2-6所示的总结。
表2-6 标准A、B、C三类网络子网掩码的长度范围