子网掩码的作用

子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。

子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。

子网掩码是标志两个IP地址是否同属于一个子网的,也是32位二进制地址,其每一个为1代表该位是网络位,为0代表主机位。它和IP地址一样也是使用点式十进制来表示的。如果两个IP地址在子网掩码的按位与的计算下所得结果相同,即表明它们共属于同一子网中。

在计算子网掩码时,我们要注意IP地址中的保留地址,即“ 0”地址和广播地址,它们是指主机地址或网络地址全为“ 0”或“ 1”时的IP地址,它们代表着本网络地址和广播地址,一般是不能被计算在内的。

从前面的文章我们知道,从 IP 数据报的首部无法看出源主机或目的主机所连接的网络是否进行了子网的划分,所以需要借助子网掩码。

示例阐述

以下面的图示举例,讲述子网掩码对路由器寻址起到的关键作用。

子网掩码的作用(三分钟网络基础-子网掩码)-科科网络

(a) 是 IP 地址为 145.13.3.10 的主机原本的两级 IP 地址结构。

(b) 是这个两级 IP 地址的子网掩码。因为是 B 类地址,所以子网掩码默认为 16 位。

(c) 是同一地址的三级 IP 地址结构,也就是说,现在从原来16位的主机号中拿出8位作为子网号,而主机号由16位减少到8位。

为了使路由器能够很方便地从数据报中的目的IP地址中提取出所要找的子网的网络地址,路由器需要借助三级IP地址的子网掩码。

(d) 是三级IP地址的子网掩码。子网掩码中的1对应于IP地址中原来二级地址中的16位网络号加上新增加的8位子网号,而子网掩码中的0对应于现在的8位主机号。

(e) 路由器把三级IP地址的子网掩码和收到的数据报的目的IP地址145.13.3.10逐位相“与”(AND),得出了所要找的子网的网络地址145.13.3.0。

总结

使用子网掩码的好处就是:不管网络有没有划分子网,只要把子网掩码和IP地址进行逐位的“与”运算(AND),就立即得出网络地址来。这样在路由器处理到来的分组时就可采用同样的算法。

思考

这里还要弄清一个问题,就是:在不划分子网时,既然没有子网,为什么还要使用子网掩码?这就是为了更便于查找路由表。

现在因特网的标准规定:所有的网络都必须使用子网掩码,同时在路由器的路由表中也必须有子网掩码这一栏。如果一个网络不划分子网,那么该网络的子网掩码就使用默认子网掩码。默认子网掩码中1的位置和IP地址中的网络号字段net-id正好相对应。因此,若用默认子网掩码和某个不划分子网的IP地址逐位相“与”(AND),就应当能够得出该IP地址的网络地址来。这样做可以不用查找该地址的类别位就能知道这是哪一类的IP地址。