又称网络掩码 (Netmask),告知主机或路由设备,地址的哪一部分是网络号,包括子网的网络号部分,哪一部分是主机号部分。
子网掩码使用与IP地址相同的编址格式,即32 bit—4个8位组的32位长格式
在子网掩码中,网络部分和子网络部分对应的位全为“1”,主机部分对应的位全为“0”
网络掩码一般与IP地址结合使用,其中值为1的比特对应IP地址中的网络位;值为0的比特对应IP地址中的主机位,以此来辅助我们识别一个IP地址中的网络位与主机位。即网络掩码中1的个数就是IP地址的网络号的位数,0的个数就是IP地址的主机号的位数。
例如:172.31.128.255/18
其中18就是子网掩码,表示32位中高18位是1,其它位为0。它的二进制形式为11111111.11111111.11000000.000000,转为十进制就是255.255.192.0。
可以根据IP地址的前四位来判别IP地址属于哪个类别。简单明了,选路简单。
同⼀⽹络下没有地址层次,⽐如⼀个公司⾥⽤了 B 类地址,但是可能需要根据⽣产环境、测试环境、开发环境来划分地址层次,⽽这种 IP 分类是没有地址层次划分的功能,所以这就缺少地址的灵活性。
A、B、C类有个尴尬处境,就是不能很好的与现实⽹络匹配。
C 类地址能包含的最⼤主机数量实在太少了,只有 254 个,估计⼀个⽹吧都不够⽤。
⽽ B 类地址能包含的最⼤主机数量⼜太多了,6 万多台机器放在⼀个⽹络下⾯,⼀般的企业基本达不到这个规模,闲着的地址就是浪费。这两个缺点,都可以在 CIDR ⽆分类地址解决,因此也引入了子网掩码的概念。
CIDR中已经废弃了IP地址的分类,无分类编址的命名也是由此得来的,所以目前基本已经不再采用所谓的A类、B类、C类的IP地址分类表示法,引入一个额外的子网掩码(subnet mask)来区分网络号和主机号;子网掩码也是一个32位的正整数. 通常用一串 “0” 来结尾;将IP地址和子网掩码进行 “按位与” 操作, 得到的结果就是网络号;网络号和主机号的划分与这个IP地址是A类、B类还是C类无关。所以新的方式下,IP地址的表示方式为: IP地址 ::= {<网络号>, <子网号>, <主机号>}
将IP地址的二进制和子网掩码的二进制进行“&”(and)运算,得到的结果就是网络号。
ip: 10101100.00011111.10000000.11111111
子网掩码: 11111111.11111111.11000000.00000000
----------------------------------------------------
网络号: 10101100.00011111.10000000.00000000 &
网络号点分法表示: 172.31.128.0
用IP地址的二进制和(子网掩码的二进制的反码(0变1,1变0))进行“&”运算,得到的结果就是主机号。
ip: 10101100.00011111.10000000.11111111
子网掩码: 11111111.11111111.11000000.00000000
子网掩码取反: 00000000.00000000.00111111.11111111
----------------------------------------------------
主机号: 00000000.00000000.00000000.11111111 &
主机号点分法表示: 0.0.0.255
在得到网络号的基础上,将网络号右边的表示IP地址的主机部分的二进制位全部填上1,再将得到的二进制数转换为十进制数就可以得到广播地址。
例如:子网掩码是11111111.11111111.11000000.00000000, 0有14个,主机位是14,网络号172.31.128.0,转换为二进制是 10101100.00011111.10000000.00000000,从右边数起,将14个0全部替换为1, 即:10101100.00011111.10111111.11111111,这就是这个子网的广播地址的二进制表示法。将这个二进制广播地址转换为十进制就是172.31.191.255。
网络号: 10101100.00011111.10000000.00000000
子网掩码: 11111111.11111111.11000000.00000000
----------------------------------------------------
广播地址: 10101100.00011111.10111111.11111111 网络号从右向左0填为1,个数为掩码中的0
广播地址点分法表示: 172.31.191.255
通过子网掩码划分出网络号和主机号,那实际上子网掩码还有⼀个作⽤,那就是划分子网。
子网划分实际上是将主机地址分为两个部分:子网网络地址和子网主机地址。形式如下:
假设对 C 类地址进⾏子网划分,⽹络地址 192.168.1.0,使⽤子网掩码 255.255.255.192 对其进⾏子网划分。
C 类地址中前 24 位是网络号,最后 8 位是主机号,根据子网掩码可知从 8 位主机号中借⽤ 2 位作为子网号(对应4个子网)。