背景
关于设置 IP 网段,我们常见到的 192.168.1.0/24 是什么意思,24是什么意思?这里的 “192.168.1.0” 的末尾0是,一定是0吗?跟 192.168.1.5/24 所表示的网段是一样的吗?
补充:其实/24类似这种写法,其实叫做斜线记法,是比较简短的方式记录子网掩码的方法。你经常会看到一个词,叫CIDR,这是什么?请参考:
请参考阿里云文档
解答
/24 这种写法
/24
的写法是子网掩码的写法。表示有多少位是1的意思,比如表示前面24位是1,即
11111111 11111111 11111111 00000000
/24
其实也就是 255.255.255.0
(等价的写法)
注意是从开头开始且必须是连续是1,一共32位。常见的其他写法还有
/8
,/16
,当然也有一些特别的,如/28
。子网掩码规定1表示网络号,0的表示主机号,1和0都是连续的,且网络号在前面,所以掩码一定是连续1开头,连续0结尾。所以不存在这种掩码
11111111 11000111 11111111 00000000
或者11111111 11111111 11111111 00000010
IP 和掩码怎么运算得到网络号?
按位与(&)
例如:192.168.1.0/24
IP是 192.168.1.0,二进制是
11000000 10101000 00000001 00000000
掩码是24,二进制是
11111111 11111111 11111111 00000000
两者按位与之后得到
11000000 10101000 00000001 00000000
即网络号是 192.168.1.0
网络号 192.168.1.0 代表什么意思
即代表主机的IP的范围是 192.168.1.1~ 192.168.1.254
因为主机号全0和全1是保留的。所以 192.168.1.0和 192.168.1.255 不能作为主机IP
这里两种写法是一样的效果吗?
192.168.1.0/24 和 192.168.1.5/24,是的。所以说配置IP段的时候,不一定需要IP的末尾是0
非8整数的写法表示什么 192.168.1.0/28
说明
例如:192.168.1.0/28
IP是 192.168.1.0,二进制是
11000000 10101000 00000001 00000000
网络号是28,二进制是
11111111 11111111 11111111 11110000
按位与(&)得到
192.168.1.0 网络号,网络号跟 192.168.1.0/24 是一样的,
但是主机号的范围是不一样的,主机号的范围只有4位,即
11111111 11111111 11111111 11110000 到 11111111 11111111 11111111 11111111
扣除全0和全1,则主机IP可以从 192.168.1.241~192.168.1.254,一共14个
补充
什么是子网掩码
子网掩码是一个32位的2进制数, 其对应网络地址的所有位都置为1,对应于主机地址的所有位都置为0。
子网掩码的设定必须遵循一定的规则。与二进制IP地址相同,子网掩码由1和0组成,且1和0分别连续。
子网掩码的长度也是32位,左边是网络位,用二进制数字“1”表示,1的数目等于网络位的长度;右边是主机位,用二进制数字“0”表示,0的数目等于主机位的长度。
这样做的目的是为了让掩码与IP地址做按位与运算时用0遮住原主机数,而不改变原网络段数字,而且很容易通过0的位数确定子网的主机数(2的主机位数次方-2,因为主机号全为1时表示该网络广播地址,全为0时表示该网络的网络号,这是两个特殊地址)。通过子网掩码,才能表明一台主机所在的子网与其他子网的关系,使网络正常工作。
杂谈之我谈
我以前认为
所谓子网掩码(mask),我一直想不明白的是为什么叫掩码,“掩” 是掩盖的意思,mask 也有口罩的意思,似乎真的要掩盖什么。
掩盖什么?将IP中的主机号掩盖起来,因为按位与,所以子网掩码中的主机号都是0就能够把IP的主机号掩盖起来,那剩下的就是网络号。