# 子网掩码

子网掩码

1、概念简介
  子网掩码又叫网络掩码、地址掩码,是一个32位地址,用于屏蔽IP地址的一部分以区别网络号和主机号,并说明该IP地址是在局域网上,还是在远程网上。子网掩码不能单独存在,它必须结合IP地址一起使用。

定义规则
  子网掩码的设定必须遵循一定的规则。与二进制IP地址相同,子网掩码由1和0组成,且1和0必须分别连续。左边是网络位,用二进制数字“1”表示,1的数目等于网络位的长度;右边是主机位,用二进制数字“0”表示,0的数目等于主机位的长度。

表示方法
子网掩码通常有以下两种格式的表示方法:
①通过与IP地址格式相同的点分十进制表示,如:255.0.0.0 或255.255.255.128;
②IP地址后加上"/"符号以及1-32的数字,其中1-32的数字表示子网掩码中网络位的长度,也就是二进制数字“1”的个数,如:192.168.1.1 /24 的子网掩码也可以表示为255.255.255.0,换算成二进制为11111111.11111111.11111111.00000000,网络位共24个“1”。

2、掩码作用
子网掩码的主要作用有两个:

子网掩码是用来判断任意两台计算机的IP地址是否属于同一子网络的根据。
子网掩码之所以要求“1”和“0”必须都是连续的,是为了让子网掩码与IP地址做按位与运算时用“0”遮住原主机数,而不改变原网络号数字,此时若得出两个IP地址的网络号相同,那么就表明属于同一子网;而且这种方式很容易通过“0”的位数确定子网的主机数(2的主机位数次方-2,因为主机号全为“1”时表示该网络广播地址,全为0时表示该网络的网络地址,这是两个特殊地址)。只有通过子网掩码,才能表明一台主机所在的子网与其他子网的关系,使网络正常工作。

子网掩码用于将一个大的IP网络划分为若干小的子网络,减少IP地址的浪费。
互联网是由许多小型网络构成的,每个网络上都有许多主机,这样便构成了一个有层次的结构。随着互联网的发展,越来越多的网络产生,网络中的计算机有的多则几百台,有的只有区区几台,这样就浪费了很多IP地址,因此要划分子网,提高网络应用的效率。

3、掩码分类
子网掩码一共分为两类:

标准子网掩码,也叫做缺省(自动生成)子网掩码,即未划分子网,对应的网络号的位都置1,主机号都置0。

转换为十进制为:
A类网络标准子网掩码:255.0.0.0
B类网络标准子网掩码:255.255.0.0
C类网络标准子网掩码:255.255.255.0

非标准子网掩码,也叫做自定义子网掩码,是将一个网络划分为几个子网,需要每一段使用不同的网络号或子网号,实际上可以认为是将主机号分为两个部分:子网号、子网主机号。形式如下:

未做子网划分的ip地址:网络号+主机号
做子网划分后的ip地址:网络号+子网号+子网主机号

即ip地址在划分子网后,以前的主机号位置的一部分给了子网号,余下的是子网主机号。因为子网掩码要求“1”和“0”必须都是连续的,也就是说除去网络号之后的子网掩码,每8位二进制数只能有以下几种选择:

在实际的应用中就会有以下的子网掩码:

4、可变长子网掩码(VLSM)与无类别域间路由(CIDR)
可变长子网掩码(VLSM)
  可变长子网掩码允许一个组织在同一个网络地址用多个子网掩码,可把子网继续划分为子网,使寻址效率达到最高。可变长子网掩码其实就是相对于标准的分类的IP地址来说的,每一个IP地址都包含了2部分:网络号和主机号,32位的IP地址被分为4段,每段8位来表示:A类IP地址的第一段是网络号(前8位),B类IP地址的前两段是网络号(前16位),C类IP地址的前三段是网络号(前24位)。
  当网络号是24位的时候,主机号只有8位,也就是说,最多可容纳254台主机,在现实生活中对于大多数企业来说是不够的。而比这个大一点的IP地址块是网络号为16位的时候,这个时候可容纳的主机数是65534,这个数量对于大多数公司又太多了。这导致无论企业选择哪种类型的网络,都可能对IP地址造成大量的浪费。
  可变长子网掩码就有效的解决了这个问题,从他们的主机号部分借出相应的位数来做网络号,也就是增加网络号的位数。各类网络可以用来再划分的位数为:A类IP地址有24位可以借,B类IP地址有16位可以借,C类IP地址有8位可以借。但实际上可以再划分的主机号位数不可以都借出来,因为IP地址中必须要有主机号的部分,而且主机号部分剩下一位是没有意义的,剩下1位的时候不是代表主机号就是代表广播号,所以在实际中可以借的位数是:A类IP地址有22位可以借,B类IP地址有14位可以借,C类IP地址有6位可以借。
  通过对IP地址的主机号进行再划分,把一部分划入网络号,就能划分各种类型大小的网络了。网络号也不再仅局限在8,16和24位这几个数,而是变成可以根据网络大小而灵活变化的大小了。
  举个简单的例子,如果公司网络只需要100台主机,如果申请一个C类网络地址192.168.1.0/24,那么主机地址实际上最多有254个,但实际上只是用到了100个地址,这显然对IP地址造成了一种浪费。但是利用可变长子网掩码技术,能把原来的C类网络地址划分为192.168.1.0/25,可用主机地址是126个,既满足了需求,又没有对IP地址造成大量浪费。

无类别域间路由(CIDR) 
  无类别域间路由是开发用于帮助减缓IP地址和路由表增大问题的一项技术。按照标准的网络分类来说,一个C类地址是24位网络号,如果很多个C类网络在一起,经过路由器的时候就被宣告成很多条子网掩码为255.255.255.0的路由条目,然而这样是很大数目的,同时也非常消耗路由器的资源。
  通过无类别域间路由技术可以有效的把多个C类网络地址合并为更大的网络地址范围,更长的网络位。无类别域间路由的基本思想是取消IP地址的分类结构,将多个地址块聚合在一起生成一个更大的网络,以包含更多的主机。无类别域间路由支持路由聚合,能够将路由表中的许多路由条目合并为成更少的数目,因此可以限制路由器中路由表的增大,减少路由通告。同时,无类别域间路由有助于IPv4地址的充分利用。
  通过下面这个示例可以更好地理解无类别域间路由:
  假设有一组C类地址为192.168.8.0-192.168.15.0,如果用CIDR将这组地址聚合为一个网络,其网络地址和子网掩码应该为?
  要求将192.168.8.0-192.168.15.0这组C类地址聚合为一个网络,先将该C类地址的第三个8位组转换成二进制,从下表中可以看出,只要将网络位的低三位划分出来作为主机位,这些C类地址就被聚合在一个网络之中。因此,聚合后的网络地址应该为192.168.8.0/21。

点分十进制 将第三个8位组转换成二进制
192.168.8.0 192.168.00001 000.0
192.168.9.0 192.168.00001 001.0
192.168.10.0 192.168.00001 010.0
192.168.11.0 192.168.00001 011.0
192.168.12.0 192.168.00001 100.0
192.168.13.0 192.168.00001 101.0
192.168.14.0 192.168.00001 110.0
192.168.15.0 192.168.00001 111.0

3.简单总结 
  其实无类别域间路由和可变长子网掩码在某程度上可以看做是逆过程:无类别域间路由是把几个小网络汇聚成一个大网络来做表示,而可变长子网掩码则是把一个大网络继续细分为几个小网络进行IP地址分配。前者能让路由器的路由条目得到有效的减少,而后者可以充分利用IP进行地址分配而解决IP地址不被浪费的问题。

5、相关计算
尽可能多的记住2^x的结果,在进行计算时会更简便。
在这里插入图片描述

1.判断任意两台计算机的IP地址是否属于同一子网络
假设主机A的IP地址为192.168.0.1,子网掩码为255.255.255.0;主机B的地址为192.168.0.200,子网掩码为255.255.255.0,判断主机A和主机B是否属于同一子网络?

第一步,将IP地址和子网掩码分别换算成二进制:

192.168.0.1  换算成二进制为 11000000·10101000·00000000·00000001
192.168.0.200 换算成二进制为 11000000·10101000·00000000·11001000
255.255.255.0 换算成二进制为 11111111·11111111·11111111·00000000 

第二步,将两个IP地址分别于对应的子网掩码进行按位与运算,求得网络地址:

主机A:

11000000·10101000·00000000·00000001
11111111·11111111·11111111·00000000
————————按位与————————
11000000·10101000·00000000·00000000
网络地址换算成十进制为 192.168.0.0 <br />
主机B:
11000000·10101000·00000000·11001000
11111111·11111111·11111111·00000000
————————按位与————————
11000000.10101000.00000000.00000000
网络地址换算成十进制为 192.168.0.0 <br />

第三步,比较两个网络地址是否相同:

主机A的网络地址为 192.168.0.0
主机B的网络地址为 192.168.0.0
相同,因此判断为属于同一子网络。

假设主机A的IP地址为192.168.0.1,子网掩码为255.255.255.192;主机B的地址为192.168.0.200,子网掩码为255.255.255.192,判断主机A和主机B是否属于同一子网络?

第一步,将IP地址和子网掩码分别换算成二进制:

192.168.0.1   换算成二进制为 11000000·10101000·00000000·00000001
192.168.0.200  换算成二进制为 11000000·10101000·00000000·11001000
255.255.255.192 换算成二进制为 11111111·11111111·11111111·11000000 <br />

第二步,将两个IP地址分别于对应的子网掩码进行按位与运算,求得网络地址:

主机A:
11000000·10101000·00000000·00000001
11111111·11111111·11111111·11000000
————————按位与————————
11000000·10101000·00000000·00000000
网络地址换算成十进制为 192.168.0.0 <br />
主机B:
11000000·10101000·00000000·11001000
11111111·11111111·11111111·11000000
————————按位与————————
11000000.10101000.00000000.11000000
网络地址换算成十进制为 192.168.0.192 <br />

第三步,比较两个网络地址是否相同:

主机A的网络地址为 192.168.0.0
主机B的网络地址为 192.168.0.192
不相同,因此判断为不属于同一子网络。

注意:
选取这两个例子主要想说明:
第一,不要简单认为网络地址就是将IP地址的后几组数改为“0”即可,仅仅是子网掩码对应IP地址的主机位,用二进制数字“0”表示而已;
第二,不要简单认为当IP地址看起来属于同一网段,且子网掩码也相同的情况下,这两个IP地址就一定属于同一子网。


2.通过IP地址和子网掩码计算相关地址
假设IP地址为128.36.199.3,子网掩码是255.255.240.0,计算出网络地址、广播地址、可用地址范围、主机数。

第一步,将IP地址和子网掩码换算为二进制:

128.36.199.3  换算成二进制为 10000000·00100100·11000111·00000011
255.255.240.0 换算成二进制为 11111111·11111111·11110000·00000000 <br />

子网掩码中二进制位连续全“1”的是网络地址,共有20位;后面二进制位连续全“0”的是主机地址,共有12位。

第二步,IP地址和子网掩码进行按位与运算,求得网络地址:

10000000·00100100·11000111·00000011
11111111·11111111·11110000·00000000
————————按位与————————
10000000.00100100.11000000.00000000
网络地址换算成十进制为 128.36.192.0 <br />

第三步,根据子网掩码,在第二步结果中网络地址二进制位不变的情况下,将主机地址二进制位置为“1”,求得广播地址:

网络地址 128.36.192.0
10000000.00100100.11000000.00000000
根据子网掩码,主机地址是后12位二进制位,将其置为“1”
10000000.00100100.11001111.11111111
广播地址 128.36.207.255

第四步,可用地址范围是指包含在本网段内的所有主机:

网络地址+1为第一个主机地址,即起始地址为128.36.192.1;
广播地址-1为最后一个主机地址,即结束地址为128.36.207.254。
地址范围是128.36.192.1——128.36.207.254

第五步,主机数量:

主机的数量 = 2^二进制主机位的个数-2
根据子网掩码,主机地址是12位二进制位
因此主机数量为2^12-2,即4094。


3.子网划分问题
假设X公司申请了一个C类的IP地址,要连接6个子公司,每个子公司在一个网段中,则子网掩码应该为多少?

第一步,连接6个子公司就是划分为6个子网:

划分的子网数量 = 2^x (x是掩码位,即掩码位中二进制位是“1”的位数)
因此,根据公式可得 2^x >= 6 , x = 3

第二步,得到C类IP地址的缺省子网掩码:

子网掩码为 255.255.255.0
换算成二进制为:
11111111.11111111.11111111.00000000

第三步,将C类IP地址的缺省子网掩码的主机地址前3位置“1”,可得结果:

缺省子网掩码:
11111111.11111111.11111111.00000000
置1后子网掩码:
11111111.11111111.11111111.11100000
换算成十进制为: 255.255.255.224
划分子网就是把主机号前几位当做子网号,并添加到网络号里扩充网络号,可参见本篇之前第四部分“可变长子网掩码(VLSM)”中的描述。

假设依然是X公司,要求每一个子公司要容纳800台主机,则子网掩码应该为多少?

第一步,根据公式求出实际主机数:

主机数 = 2^y-2(y是主机位,即子网掩码中二进制位是“0”的位数)
因此,根据公式可得 2^y-2 >= 800,y = 10

第二步,得到C类IP地址的缺省子网掩码,并将主机地址全部置为“1”:

子网掩码为 255.255.255.0
换算成二进制为:
11111111.11111111.11111111.00000000
主机地址置为“1”后:
11111111.11111111.11111111.11111111

第三步,将主机地址置为“1”后的子网掩码,从最后依次向前数10个二进制位,置为“0”,可得结果:

主机地址置为“1”后:
11111111.11111111.11111111.11111111
从最后依次向前数10个二进制位,置为“0”:
11111111.11111111.11111100.00000000
换算成十进制为: 255.255.252.000


4.快速划分练习
已知:
①IP地址为C类
②子网掩码为255.255.255.128 /25
③网络地址为192.168.10.0
求:
①可划分多少子网
②每个子网中可容纳多少台主机
③有哪些合法子网地址
④每个子网的广播地址
⑤有多少有效主机地址

回答问题①:

划分的子网数量 = 2^x (x是掩码位,即掩码位中二进制位是“1”的位数)
C类IP地址的缺省子网掩码为255.255.255.0,共24个二进制位是“1”,已知条件②表示共有25个二进制位是“1”,多的1个就是掩码位扩充得到的。
因此,划分的子网数量 = 2^1,即可划分2个子网。

回答问题②:

主机数 = 2^y-2(y是主机位,即子网掩码中二进制位是“0”的位数)
子网掩码一共只有32个二进制位,其中25个二进制位是“1”,那么二进制位是“0”的位数有32-25,即7个。
因此,可容纳的主机数 = 2^7-2,即126台主机。

回答问题③:

合法子网号 = 256-十进制的子网掩码掩码位
已知是C类IP地址,且子网掩码是255.255.255.128,则十进制掩码位是128。
因此,合法子网号 = 256-128 = 128,即合法子网地址为192.168.10.0、192.168.10.128。

回答问题④:

子网广播地址 = 下一个子网地址-1
已知合法子网地址为192.168.10.0、192.168.10.128。
因此,子网的广播地址分别是192.168.10.127、192.168.10.255。

回答问题⑤:

有效主机地址 = 介于子网地址和广播地址之间的所有地址
因此,有效主机地址是192.168.10.1-192.168.10.126、192.168.10.129-192.168.10.254。

已知:
①IP地址为B类
②子网掩码为255.255.255.128 /25
(此时子网掩码指使用了9位来进行子网划分的B类子网掩码,并不是C类子网掩码)
③网络地址为172.16.0.0
求:
①可划分多少子网
②每个子网中可容纳多少台主机
③有哪些合法子网地址
④每个子网的广播地址
⑤有多少有效主机地址

回答问题①:

划分的子网数量 = 2^x (x是掩码位,即掩码位中二进制位是“1”的位数)
B类IP地址的缺省子网掩码为255.255.0.0,共16个二进制位是“1”,已知条件②表示共有25个二进制位是“1”,多的9个就是掩码位扩充得到的。
因此,划分的子网数量 = 2^9,即可划分512个子网。

回答问题②:

主机数 = 2^y-2(y是主机位,即子网掩码中二进制位是“0”的位数)
子网掩码一共只有32个二进制位,其中25个二进制位是“1”,那么二进制位是“0”的位数有32-25,即7个。
因此,可容纳的主机数 = 2^7-2,即126台主机。

回答问题③:

合法子网号 = 256-十进制的子网掩码掩码位
已知是B类IP地址,那么缺省子网掩码是255.255.0.0,已知的子网掩码是255.255.255.128,则十进制掩码位是255和128。
因此,合法子网号 = 256-255 = 1,256-128 = 128,即合法子网地址为176.16.0.0、172.16.0.128,172.16.1.0、172.16.1.128,172.16.2.0、172.16.2.128……共512个。

回答问题④:

子网广播地址 = 下一个子网地址-1
已知合法子网地址为172.16.0.0、172.16.0.128,172.16.1.0、172.16.1.128,172.16.2.0、172.16.2.128……
因此,子网的广播地址分别是172.16.0.127、172.16.0.255,172.16.1.127、172.16.1.255,172.16.2.127、172.16.2.255……。

回答问题⑤:

有效主机地址 = 介于子网地址和广播地址之间的所有地址
因此,有效主机地址是172.16.0.1-172.16.0.126、172.16.0.129-172.16.0.254,172.16.1.1-172.16.1.126、172.16.1.129-172.16.1.254,172.16.2.1-172.16.2.126、172.16.2.129-172.16.2.254……

已知:
①IP地址为A类
②子网掩码为255.255.240.0 /20
(此处子网掩码是B类子网掩码)
网络地址为10.0.0.0
求:
①可划分多少子网
②每个子网中可容纳多少台主机
③有哪些合法子网地址
④每个子网的广播地址
⑤有多少有效主机地址

回答问题①:

划分的子网数量 = 2^x (x是掩码位,即掩码位中二进制位是“1”的位数)
A类IP地址的缺省子网掩码为255.0.0.0,共8个二进制位是“1”,已知条件②表示共有20个二进制位是“1”,多的12个就是掩码位扩充得到的。
因此,划分的子网数量 = 2^12,即可划分4096个子网。

回答问题②:

主机数 = 2^y-2(y是主机位,即子网掩码中二进制位是“0”的位数)
子网掩码一共只有32个二进制位,其中20个二进制位是“1”,那么二进制位是“0”的位数有32-25,即12个。
因此,可容纳的主机数 = 2^12-2,即4094台主机。

回答问题③:

合法子网号 = 256-十进制的子网掩码掩码位
已知是A类IP地址,那么缺省子网掩码是255.0.0.0,已知是B类子网掩码255.255.240.0,则十进制掩码位是240。
因此,合法子网号 = 256-240 = 16,即合法子网地址为10.0.0.0、10.0.16.0、10.0.32.0、10.0.48.0……共4096个。

回答问题④:

子网广播地址 = 下一个子网地址-1
已知合法子网地址为10.0.0.0、10.0.16.0、10.0.32.0、10.0.48.0……
因此,子网的广播地址分别是10.0.15.255、10.0.31.255、10.0.47.255……。

回答问题⑤:

有效主机地址 = 介于子网地址和广播地址之间的所有地址
因此,有效主机地址是10.0.0.1-10.0.15.254、10.0.16.1-10.0.31.254、10.0.32.1-10.0.47.254、10.0.48.1-10.0.62.254……

作者:黒猫
链接:https://www.jianshu.com/p/907c4cd5d33b
來源:简书

猜你喜欢

转载自blog.csdn.net/weixin_43097301/article/details/84329268