理解子网掩码和如何计算子网掩码

理解ip地址组成

ipv4地址是32位的二进制数,通常我们会用点分十进制表示,例如:192.188.222.213
每个ip地址又可分为两部分,一部分是网络号部分,另一部分是主机号,网络号表示其所属的网络段编号,主机号则表示该网段中该主机的地址编号,按照网络规模的大小,IP地址可以分为A、B、C、D、E五类,其中A、B、C类是三种主要的类型地址,D类专供多目传送用的多目地址,E类用于扩展备用地址。A、B、C三类IP地址有效范围如下表:
类别 网络号 /占位数 主机号 /占位数 用途(X位网络断,Y位主机段)
A 1~126 / 8 0~255 0~255 1~254 / 24 国家级
根据规定,A类地址的网络标识必须以“0”开头。那么其网段数应该为0XXXXXXX.YYYYYYYY.YYYYYYYY.YYYYYYYY即后面有七位数字
B 128~191 0~255 / 16 0~255 1~254 / 16 跨过组织
根据规定,B类地址的网络标识必须以“10”开头。那么其网段数应该为10XXXXXX.XXXXXXXX.YYYYYYYY.YYYYYYYY即后面有14位数字
C 192~223 0~255 0~255 / 24 1~254 / 8 企业组织
根据规定,C类地址的网络标识必须以“110”开头。那么其网段数应该为110XXXXX.XXXXXXXX.XXXXXXXX.YYYYYYYY即后面有21位数字

虚拟Ip地址(所有路由器对于虚拟ip地址数据表一律不转发):
10.0.0.0~10.255.255.255
172.16.0.0~172.31.255.255
192.168.0.0. ~192.168.255.255

对于A类地址来说, 网络断取值编号只能是1-126(127作为回路地址使用), 主机号编号取值范围为1-2^24, 如此大的主机编号数量,但是只能对应一个ip使用,例如对于126.x.x.x这个ip来说,其实在126这个ip下面可以配置(2^24-1)个主机进行使用,但是很难全部进行使用和管理,为了高效率的使用这些主机编号,同时着互连网应用的不断扩大,原先的IPv4的弊端也逐渐暴露出来,即网络号占位太多,而主机号位太少,所以其能提供的主机地址也越来越稀缺,目前除了使用NAT在企业内部利用保留地址自行分配以外,通常都对一个高类别的IP地址进行再划分,以形成多个子网,提供给不同规模的用户群使用。

可以将126想象成一个小区的编号,然后主机号(2^32-1)想象成居民的房号,如果要管理这个小区将变得特别困难,为了方便管理,我们将这个小区内部再划分出多个子区,这就是子网的由来,如果我们想给某一个子小区的成员分发数据,我们总不可能一个个的居民找过去吧, 如果我们知道这个居民在小区的哪一个子小区,不就更容易找到居民了吗,那么子网掩码就是来帮我们找到当前ip所属哪一个子网的。

子网的组成

为了在网络分段情况下有效地利用IP地址,通过对主机号的高位部分取作为子网号,从通常的网络位界限中扩展或压缩子网掩码,用来创建某类地址的更多子网。但创建更多的子网时,在每个子网上的可用主机地址数目会比原先减少
距离来说,对于126.0.0.1,我们将其转换为32位2进制数,前8位时网络段(即126), 然后剩下的24位可以从高位截取位数来作为子网数量(以及编号),剩下的位数作为主机号,例如我们取24位前两位作为子网,则子网的数量是2^2个(也就是四个),每个子网下管理的主机编号是(1-2^22),但是对于每一个子网来说,会把主机编号的开始作为网络地址,将主机编号最后一个作为广播地址,所以每个子网可用主机数为(2^22-2)个, 此时的子网掩码(32位)11111111,11000000,00000000,00000000转换成点分十进制是:255.192.0.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(从高位截取时必须都是1),得到 255.255.248.0
即为划分成 27个子网的B类IP地址 168.195.0.0的子网掩码。
方法2:
其实我们可以想一下2^位数,刚刚大于要划分的子网数量,对于27来说,2^5=32刚刚大于27, 所以截取主机段高位的前五位作为子网掩码,上述地址是b类,因此前16位时网络段,此时的子网掩码(32位)11111111,11111111,11111000,00000000转换成点分十进制是:255.255.248.0, 注:网络段必须是都是1

二、利用主机数来计算
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的子网掩码。

方法2:其实我们可以想一下2^位数的值,刚刚大于要划分的主机数量,对于700来说,2^11=1024, 刚刚大于700,但是主机位是低位截取, 所以截取主机段低位的后十位作为主机位,上述地址是b类,因此前16位时网络段,此时的子网掩码(32位)11111111,11111111,11111100,00000000转换成点分十进制是:255.255.252.0, 注:网络段必须是都是1

下面列出各类IP地址所能划分出的所有子网,其划分后的主机和子网占位数,以及主机和子网的(最大)数目,注意要去掉保留的IP地址(即划分后有主机位或子网位全为“0”或全为“1”的):
A类IP地址:
子网位 /主机位 子网掩码 子网最大数 /主机最大数
2/22 255.192.0.0 2/4194302
3/21 255.224.0.0 6/2097150
4/20 255.240.0.0 14/1048574
5/19 255.248.0.0 30/524286
6/18 255.252.0.0 62/262142
7/17 255.254.0.0 126/131070
8/16 255.255.0.0 254/65536
9/15 255.255.128.0 510/32766
10/14 255.255.192.0 1022/16382
11/13 255.255.224.0 2046/8190
12/12 255.255.240.0 4094/4094
13/11 255.255.248.0 8190/2046
14/10 255.255.252.0 16382/1022
15/9 255.255.254.0 32766/510
16/8 255.255.255.0 65536/254
17/7 255.255.255.128 131070/126
18/6 255.255.255.192 262142/62
19/5 255.255.255.224 524286/30
20/4 255.255.255.240 1048574/14
21/3 255.255.255.248 2097150/6
22/2 255.255.255.252 4194302/2
B类IP地址:
子网位 /主机位 子网掩码 子网最大数 /主机最大数
2/14 255.255.192.0 2/16382
3/13 255.255.224.0 6/8190
4/12 255.255.240.0 14/4094
5/11 255.255.248.0 30/2046
6/10 255.255.252.0 62/1022
7/9 255.255.254.0 126/510
8/8 255.255.255.0 254/254
9/7 255.255.255.128 510/126
10/6 255.255.255.192 1022/62
11/5 255.255.255.224 2046/30
12/4 255.255.255.240 4094/14
13/3 255.255.255.248 8190/6
14/2 255.255.255.252 16382/2
C类IP地址:
子网位 /主机位 子网掩码 子网最大数 /主机最大数
2/6 255.255.255.192 2/62
3/5 255.255.255.224 6/30
4/4 255.255.255.240 14/14
5/3 255.255.255.248 30/6
6/2 255.255.255.252 62/2

我们看一个考试中常见的题型:一个主机的IP地址是202.112.14.137,掩码是255.255.255.224,要求计算这个主机所在网络的网络地址和广播地址。
方法1. 常规办法是把这个主机地址和子网掩码都换算成二进制数,两者进行逻辑与运算后即可得到网络地址,得出202.112.14.128, 上述是1个c类地址,因此主机号位后8位, 将224转为二进制的11100000, 也就说截取了前3位作为子网,所以子网数位2^3=8个,主机数一个2^8=256个,分为8份,则一个子网为32个主机数,因为网络地址是一个子网的开始地址,广播地址是一个子网的结束地址,所以128+32-1 = 159,因为广播地址为202.112.14.159
方法2: 每个子网的主机数 = 总的主机数(2^8) - 子网值(224)=32, 题中的ip主机号为137, 你可想一下,一个子网主机数32,则每一子网的开始都是32的倍数,因为主机编号从0开始,所以只需要想一下哪个值比137小且是32倍数,得出是128,所以网络地址为202.112.14.128(主机位(不包含子网位)全是0), 广播地址如上为202.112.14.159(主机位(不包含子网位)全是1), 该子网下的主机范围为202.112.14.129-202.112.14.158 = 30台

  • 22
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值