|
虽然上面已经把一个网络划分为若干个子网,但路由器R1必须知道数据报中目的IP地址的网络号net-id、子网号subnet-id和主机号host-id各是多少位,这就需要通过子网掩码(Subnet Mask)来实现。
|
|
|
子网掩码和IP地址一样,也是32位长,由一串1和跟随的一串0组成。子网掩码中的1对应于IP地址中的网络号net-id和子网号subnet-id,而子网掩码中的0对应于IP地址中的主机号host-id。要得到网络或子网地址,只需将IP地址和子网掩码进行按位"与"(AND)运算即可。下图说明了子网掩码的工作方式。
|
|
|
|
|
上图(a)表示在未划分子网情况下,网络地址是IP地址与它默认的子网掩码(255.255.0.0)按位"与"运算的结果,即将主机号host-id设置为0的IP地址。上图(b)表示在划分子网情况下,当主机号借用8位作为子网号subnet-id,子网掩码中"1"的个数相应地增加8,即255.255.255.0。这时将子网掩码和IP地址按位"与"运算就得到了子网地址。这里要注意是:网络地址(在划分子网时常称为子网地址)并不仅仅是一个子网号subnet-id,而是将主机号host-id设置为0的IP地址。可以看出,子网掩码不能单独存在,它必须结合IP地址一起使用。
|
|
|
与IP地址相同,子网掩码通常也使用点分十进制表示法表示,如255.255.255.0、255.255.255.240等。有时为了表示方便,通常在IP地址后加一个"/网络号和子网号位数"。例如,210.45.12.58/28就表示该IP地址的网络号net-id和子网号subnet-id共占用28位,主机号占用32-28=4位,如果用点分十进制表示法表示,则子网掩码是255.255.255.240(11111111.11111111.11111111.11110000)。
|
|
|
使用子网掩码的好处是:不管网络是否划分子网,也不管IP地址中的网络号net-id和子网号subnet-id是多少位,只要将子网掩码和IP地址进行按位"与"运算,就可立即得出网络地址。这样在路由器处理到来的IP分组时就可采用同样的算法。
|
|
|
如果一个网络不划分子网,那么该网络的子网掩码就使用默认子网掩码。默认子网掩码中值为1的位与IP地址的网络号net-id所占位正好相对应。因此默认子网掩码和不划分子网的IP地址按位"与"(AND)运算,就得出该IP地址的网络地址,这样做可以不用查找该地址的分类位就能知道这是哪一类的IP地址。显然,A类、B类和C类网络默认子网掩码分别是255.0.0.0(/8)、255.255.0.0(/16)、255.255.255.0(/24),如下图所示。
|
|
|
|
|