什么是【子网掩码】

半兽人 发表于: 2017-07-27   最后更新时间: 2023-11-08 17:33:24  
{{totalSubscript}} 订阅, 3,941 游览

从前有一个地主,有256间房子,地主家的门牌号码是 "192.168.1",那么他家第一间房子的门牌号码是192.168.1.0,第二间是192.168.1.1 … 第256间的编号是192.168.1.255。

地主老了,需要把256间房子分给4个儿子,平均分配,每个儿子可以分64间。请来一位先生主持公道,先生这么来操作:

192.168.1.0-192.168.1.63 分给大儿子
192.168.1.64-192.168.1.127 分给二儿子
192.168.1.128 -192.168.1.191 分给三儿子
192.168.1.192-192.168.1.255 分给四儿子

那如何来描述四个儿子的子网网段呢?

192.168.1.0/26
192.168.1.64/26
192.168.1.128/26
192.168.1.192/26

/26是什么?

255.255.255.192的二进制是多少? “11111111-11111111-11111111-11” 大家数数一共多少个1?不用数了,是26个1,为了简化子网掩码的表示,用/26代替255.255.255.192。

按位与运算

我们来看大儿子的网段 192.168.1.0/26 是如何得到的?

以大儿子的房间为例: 192.168.1.0 - 192.168.1.63

二进制表示:

192.168.1.0
11000000.10101000.00000001.00000000

192.168.1.63
11000000.10101000.00000001.00111111

首尾地址完全相同的是多少?

11000000.10101000.00000001.00

数数一共多少位?26位!那么用这个“192.168.1.0/26”就可以表示大儿子所有房间。对照房间的门牌号码“192.168.1.199”,很显然属于四儿子的。

一个主机192.168.1.199/26 能否和直连主机192.168.1.200/24 通信?

可以的,因为都是四儿子的房间。

一个主机192.168.1.199/26 能否和直连主机192.168.1.1/24 通信?

答案是:不可以,因为一个是大儿子的房间,一个是四儿子的房间,无法直连通信!

什么子网掩码中的“子网”?

网络上,数据从一个地方传到另外一个地方,是依靠 IP 寻址。

从逻辑上来讲,是两步的。

第一步,从 IP 中找到所属的网络,好比是去找这个人是哪个小区的;
第二步,再从 IP 中找到主机在这个网络中的位置,好比是在小区里面找到这个人。

第一步中的网络,就称之为「子网」(Subnet)。从逻辑上来讲,一般同一子网(Subnet)是使用相同的网关。就好比,一个小区的入口。IPv4 的 IP 地址是 32 位的,形式如 xxx.xxx.xxx.xxx,每一个 xxx 取值都是 0 - 255。到底是前三个 xxx 相同,就代表同一个子网,还是前两个,还是其他?这个并不一定。就好比小区有大有小,有的小区有上千户人家,有的小区只有区区几个。所以,就引入「子网掩码」(Subnet Mask)来标识该子网的大小

我们一般看到的 IP 地址是十进制的编码,所以如果换一个视角,从二进制的角度看,每一个 IP 地址就是 32 位 1 或 0。

子网掩码,就是用来告诉这个子网的覆盖区间。这 32 位中,前多少位是网络段?当然,余下的就是主机段。

举典型的例子:IP 中前 24 位代表子网号,后 8 位代表主机号。

所以子网掩码就是 24 个 1(代表前 24 位是子网部分),加 8 个 0(后 8 位是主机部分)。如果沿用 IP 的标识方式,就是 255.255.255.0 。

每一个 255 对应 8 个二进制 1,最后一个 0 对应 8 个二进制 0。该子网可以容纳最多 256 台主机,也就是主机号从 0 到 255。

当然,实际情况没有这么多,有一些特殊数字有保留用处(广播、网关等)。

子网掩码的作用是什么?

一个IP地址必然属于某一个网络,或者叫子网。子网掩码就是用来指定某个IP地址的网络地址的,换一句话说,就是用来划分子网的。

例如,一个A类网络可以容纳16777214台主机。但是在实际运用中,不可能把一个A类网络只用于一个子网,因为那样管理起来很不方便,也会出现广播风暴等种种问题,所以需要根据实际需求把它划分为若干个较小的子网。

一个B类网络可以容纳65534台主机,往往也是需要划分子网的。即便一个小型企业内部,为了部门之间的职能的需要,配置那些电脑可以互相访问,哪些不能互相访问,就需要通过划分子网的方法来实现。子网划分的问题看起来很复杂,其实也不是很复杂。只要把IP地址的位数、网络位数、主机位数、子网掩码的位数这几个概念搞清楚,就觉得很简单了。IP地址位数=网络位数+主机位数=32位。子网掩码的位数就是网络的位数。A类网络的网络位数是8位,子网掩码就是255.0.0.0,B类网络的网络位数是16位,子网掩码是255.255.0.0,C类是24位,255.255.255.0。

A类网络加长子网掩码到16位就把一个A类网络划分为256个B类网络同样大小的网络,再加长到24位就又把每个B类大小的子网划分为256个C类网络大小的子网。就是这个道理。一个大的网络,通过把子网掩码加长,使网络位多了,也就是网络数目多了,子网就多了。 当然你也可以不划分为256个子网,而划分为128个,64个,32个,16个,8个,4个,2个。

一个B类网络的默认子网掩码为255.255.0.0,你如果想把它划分为2个子网,网络位数就成立17位,也就是说子网掩码就变成了255.255.128.0;想划分为16个子网,因为16是2的4次方,所以网络位数加4变成了20位,也就是说子网掩码加长,成了20位,就是255.255.240.0。依此类推。

REF

ip掩码计算工具

更新于 2023-11-08
在线,2小时前登录

查看Linux更多相关的文章或提一个关于Linux的问题,也可以与我们一起分享文章