从前面的文章咱们知道,从 IP 数据报的首部没法看出源主机或目的主机所链接的网络是否进行了子网的划分,因此须要借助子网掩码。算法
如下面的图示举例,讲述子网掩码对路由器寻址起到的关键做用。网络
(a) 是 IP 地址为 145.13.3.10 的主机本来的两级 IP 地址结构。spa
(b) 是这个两级 IP 地址的子网掩码。由于是 B 类地址,因此子网掩码默认为 16 位。blog
(c) 是同一地址的三级 IP 地址结构,也就是说,如今从原来16位的主机号中拿出8位做为子网号,而主机号由16位减小到8位。路由
为了使路由器可以很方便地从数据报中的目的IP地址中提取出所要找的子网的网络地址,路由器须要借助三级IP地址的子网掩码。rem
(d) 是三级IP地址的子网掩码。子网掩码中的1对应于IP地址中原来二级地址中的16位网络号加上新增长的8位子网号,而子网掩码中的0对应于如今的8位主机号。it
(e) 路由器把三级IP地址的子网掩码和收到的数据报的目的IP地址145.13.3.10逐位相“与”(AND),得出了所要找的子网的网络地址145.13.3.0。class
使用子网掩码的好处就是:无论网络有没有划分子网,只要把子网掩码和IP地址进行逐位的“与”运算(AND),就当即得出网络地址来。这样在路由器处理到来的分组时就可采用一样的算法。路由器
这里还要弄清一个问题,就是:在不划分子网时,既然没有子网,为何还要使用子网掩码?这就是为了更便于查找路由表。im
如今因特网的标准规定:全部的网络都必须使用子网掩码,同时在路由器的路由表中也必须有子网掩码这一栏。若是一个网络不划分子网,那么该网络的子网掩码就使用默认子网掩码。默认子网掩码中1的位置和IP地址中的网络号字段net-id正好相对应。所以,若用默认子网掩码和某个不划分子网的IP地址逐位相“与”(AND),就应当可以得出该IP地址的网络地址来。这样作能够不用查找该地址的类别位就能知道这是哪一类的IP地址。