子网掩码的所有计算和运用都是在二进制的基础上的、所以重点讲一下子网掩码的二进制形式、通常莪们在IP属性查看虽然都是以十进制出现、但那只是为了方便用户观看、其实际上计算机都以二进制方法来计算和运用子网掩码、
通常的IP地址是由网络标识和主机标示所组成、如
192.168.0.3
网络标识为:192.168.0
主机标识为:3
而子网掩码也一样、如
255.255.255.0
但由于子网掩码是位运算的、莪们需要先转化为二进制来分析、这是一串长度为32位(简单说就是32个数啦)的二进制数字
11111111.11111111.11111111.00000000
1的数量代表子网掩码网络位的长度
0的数量代表子网掩码主机位的长度
由于子网掩码规定、只能网络位只能由连续的1组成、主机位只能由连续的0组成、而且左边只能是网络位、网络位写完后只能是主机位、
所以只能是以下的数字组合
10000000----128
11000000----192
11100000----224
11110000----240
11111000----248
11111100----252
11111110----254
11111111----255
就是说只可能出现以下这种情况的十进制子网掩码
255.255.128.0
这种是错误的!
255.255.120.0
因为二进制永远不会转换出这样的十进制数字来
这样的的子网掩码也是错误的!
255.128.128.0
转化成二进制迩就会明白了、
11111111.10000000.10000000.00000000
它不并符合网络标识位为连续1的规定
子网掩码的表现形式
1、常见的十进制表现形式、
255.0.0.0
255.254.0.0
2、linux系常见的表现形式、由IP地址后加上"/"再由1-32的数字来表示、其中数字部分为网络标识位的长度
192.168.1.1/24
因为网络标识位长度为24、也就是有24个1、也就是
11111111.11111111.11111111.00000000
转化成十进制也就是255.255.255.0咯
计算子网掩码的方法
子网掩码的作用就是用来划分子网、所以所以确定子网掩码的确切数字就是在划分子网、划分子网有两种方式、第一种是预先确定子网数来划分、第二种是预先确定每个子网的主机数来划分、
1、预先确定子网数来划分
1)将子网数目转化为二进制来表示
2)取得该二进制的位数,为 N
3)取得该IP地址的类子网掩码,将其主机地址部分的的前N位置1 即得出该IP地址划分子网的子网掩码。
如欲将B类IP地址168.195.0.0划分成27个子网:
1)27=11011
2)该二进制为五位数,N = 5
3)将B类地址的子网掩码255.255.0.0的主机地址前5位置1,得到 255.255.248.0
即为划分成27个子网的B类IP地址 168.195.0.0的子网掩码。
2、预先确定每个子网的主机数来划分
1)将主机数目转化为二进制来表示
2)如果主机数小于或等于254(注意去掉保留的两个IP地址),则取得该主机的二进制位数,为 N,这里肯定N<8。如果大于254,则 N>8,这就是说主机地址将占据不止8位。
3)使用255.255.255.255来将该类IP地址的主机地址位数全部置1,然后从后向前的将N位全部置为 0,即为子网掩码值。
如欲将B类IP地址168.195.0.0划分成若干子网,每个子网内有主机700台:
1) 700=1010111100
2)该二进制为十位数,N = 10
3)将该B类地址的子网掩码255.255.0.0的主机地址全部置1,得到255.255.255.255
然后再从后向前将后10位置0,即为: 11111111.11111111.11111100.00000000
即255.255.252.0。这就是该欲划分成主机为700台的B类IP地址168.195.0.0的子网掩码。
相关资料:https://wangyan.org/blog/ipv4-mask.html