网络掩码,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址主机地址两部分。子网掩码是一个32位地址,用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。

举个列子:

有一次参加小朋友的毕业典礼,一共33个小朋友,老师说现在玩一个小游戏,老师喊数字N,小朋友们按照数字N抱在一起,落单的小朋友就输了。 

老师喊2,小朋友们2个人抱成一团,最后有一个小朋友落单。

老师喊4,小朋友们4个人抱在一起,最后有一个小朋友落单。

老师喊8,小朋友们8个人抱在一起,最后有一个小朋友落单。 

老师喊的数字2、4、8也是一种掩码,这种掩码的作用就是将小朋友分成一个个小单元。

某个小朋友无论被分在哪个小单元里,小朋友还是哪个小朋友,但是由于掩码的变化,小朋友的单元会发生变化。

在Internet里有20亿+个IP地址,这些IP地址如果比作小朋友的学号的话,从1.0.0.0开始,1.0.0.1、1.0.0.2、1.0.0.3….,面对这×××数量一般的IP地址,如何管理他们呢? 

从幼儿园老师那里得到了启发,老师开始报数了,老师喊256,于是一个个小朋友自动找到了自己的小单元。 

1.0.0.0、1.0.0.1、1.0.0.2、1.0.0.3、 … 1.0.0.254、1.0.0.255

1.0.1.0、1.0.1.1、1.0.1.2、1.0.1.3、 … 1.0.1.254、1.0.1.255

1.0.2.0、1.0.2.1、1.0.2.2、1.0.2.3、 … 1.0.2.254、1.0.2.255 

正好每256个小朋友在一个单元。

请看以下示例:

  运算演示之一:

  I P 地址 192.168.0.1

  子网掩码 255.255.255.0

  AND运算 (AND运算法则:1 1 = 1 ,1 0 = 0 ,0 1 = 0 ,0 0 = 0 ,即当对应位均为1时结果为1,其余为0)

  转化为二进制进行运算:

  I P 地址 11000000.10101000.00000000.00000001

  子网掩码 11111111.11111111.11111111.00000000

  AND运算

  11000000.10101000.00000000.00000000

  转化为十进制后为:

  192.168.0.0

  运算演示之二:

  I P 地址 192.168.0.254

  子网掩码 255.255.255.0

  AND运算

  转化为二进制进行运算:

  I P 地址 11000000.10101000.00000000.11111110

  子网掩码 11111111.11111111.11111111.00000000

  AND运算

  11000000.10101000.00000000.00000000

  转化为十进制后为:

  192.168.0.0

  运算演示之三:

  I P 地址 192.168.0.4

  子网掩码 255.255.255.0

  AND运算

  转化为二进制进行运算:

  I P 地址 11000000.10101000.00000000.00000100

  子网掩码 11111111.11111111.11111111.00000000

  AND运算

  11000000.10101000.00000000.00000000

  转化为十进制后为:

  192.168.0.0

  通过以上对三组计算机IP地址与子网掩码的AND运算后,我们可以看到它运算结果是一样的。均为192.168.0.0

  所以计算机就会把这三台计算机视为是同一子网络,然后进行通讯的。

为何电脑配置IP,还要配置网络掩码?
那是因为互联网设计之初,是以网段为最小单元来管理互联网的,换句话说,互联网是由一个个网段组成的,对于一台计算机来说,差不多有三种场合的通信。

1)自己与自己通信

2)与本网段其它主机通信

3)与别的网段主机的通信

接下来的问题就是,如何让计算机知道是哪种场合的通信?

必然有一种技术手段,让计算机做出合理判断,这个技术手段就是网络掩码。

举个例子
10.10.10.1 255.255.255.0
其中255.255.255.0就是网络掩码,由于这个掩码全1的二进制位长为24位,我们也经常写为10.10.20.1/24。

自己与自己通信
当ping 10.10.10.1 时,计算机和自己的IP相比较,所以会发给自己,我们称之为精确匹配

与本网段其它主机通信
当ping 10.10.10.2 时,计算机和自己的IP相比较,发现并不相等,则需要退而求其次,使用模糊匹配,用自己的掩码255.255.255.0与10.10.10.2 做按位与,得到网段10.10.10,这个和自己在一个网段(一个广播域),所以可以广播ARP得到对方的MAC,完成通信。

与别的网段主机的通信
当ping 8.8.8.8 时,计算机和自己的IP相比较,发现并不相等,则需要退而求其次,使用模糊匹配,用自己的掩码255.255.255.0与8.8.8.8做按位与,得到网段8.8.8,和自己10.10.10不在一个网段,需要使用最模糊的匹配,一般会匹配0.0.0.0/0,这个是最后的选择,一般指向网关,由于网关和自己在一个网段(一个广播域),所以可以广播ARP得到网关的MAC,然后把ping 包发给网关,完成通信。