【简单】子网划分与子网掩码计算

看完理论的来点实际的应用,算法更简单,更实用

【以下内容属于转载】

  一直想搞清楚子网掩码这部分内容,以前只是含糊的知道一点儿。今天碰到这篇文章,觉得写的不错,拿出来分享里。看,我的口号就是“分享知识,共同进步!”  子网掩码是每个网络工程师必须要掌握的基础知识,只有掌握它,才能够真正理解TCP/IP协议的设置。根据寡人在不同公司面试时的考试来看,一般的公司招聘网络人员基本都会考这类题目。但是寡人发现,身边很多做网络的朋友,对子网掩码的理解还是有一种半生不熟的感觉。下面,把自己掌握的、网络搜集的关于子网掩码的资料整理出来,供大家学习参考。  想要了解子网掩码,得先了解IP的结构,IP地址在设计时就考虑到地址分配的层次特点,将每个IP地址都分割成网络号和主机号两部分,以便于IP地址的寻址操作。那么IP地址的网络号和主机号各是多少位呢?如果不指定,就不知道哪些位是网络号、哪些是主机号,这就需要通过子网掩码来实现。  什么是子网掩码?  子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。  子网掩码的设定必须遵循一定的规则。与IP地址相同,子网掩码的长度也是32位,左边是网络位,用二进制数字“1”表示;右边是主机位,用二进制数字“0”表示。例如IP地址为“192.168.1.1”和子网掩码为“255.255.255.0”的二进制对照应该为:192.168.1.1    = 1100 0000. 1010 1000. 0000 0001. 0000 0001

255.255.255.0 = 111111111. 111111111. 111111111. 00000000 

在掩码中,其中,“1”有24个,代表与此相对应的IP地址左边24位是网络号;“0”有8个,代表与此相对应的IP地址右边8位是主机号。这样,子网掩码就确定了一个IP地址的32位二进制数字中哪些是网络号、哪些是主机号。这对于采用TCP/IP协议的网络来说非常重要,只有通过子网掩码,才能表明一台主机所在的子网与其他子网的关系,使网络正常工作。默认子网掩码  在Windows系统中,如果给一个网卡指定IP地址,系统会自动填入一个默认的子网掩码:255.255.255.0,使用该子网掩码,网络内最大可容纳254台设备,如果一个网络的规模不超过254台设备,采用“255.255.255.0”作为子网掩码就可以了。  IP地址的子网掩码设置不是任意的。子网掩码设置过大:也就是说子网范围扩大,那么,根据子网寻径规则,很可能发往和本地机不在同一子网内的目的机的数据,会因为错误的判断而认为目的机是在同一子网内,那么,数据包将在本子网内循环,直到超时并抛弃,使数据不能正确到达目的机,导致网络传输错误;    子网掩码设置过小:那么就会将本来属于同一子网内的机器之间的通信当做是跨子网传输,数据包都交给缺省网关处理,这样势必增加缺省网关的负担,造成网络效率下降。根据以上两个原因,子网掩码应该根据网络的规模进行设置。  说了这么多,下面说说实际计算问题:子网掩码快速算法大家都应该知道2的x次方值吧?下面是2的0次到10次方的计算值分别是:1  2  4  8  16  32  64  128  256  512  1024。  实例  如果你希望每个子网中只有5个ip地址可以给机器用,那么你就最少需要准备给每个子网7个ip位址,因为需要加上两头的不可用的网络和广播ip,所以你需要选比7多的最近的那位,也就是8,就是说选每个子网8个ip。到这一步,你就可以算屏蔽了。  这个方法就是:最后一位屏蔽就是256减去你每个子网所需要的ip位元址的数量,那么这个例子就是256-8=248,那么算出这个,你就可以知道那些ip是不能用的了,依此类推:0-7,8-15,16-23,24-31,......,写在上面的0、7、8、15、16、23、24、31......都是不能用的,你应该用某两个数字之间的IP,那个就是一个子网可用的IP。  

 扫盲公式: 子网掩码=256-主机数量{x|2n-1<x<2n}  

 再试验一下,就拿200台机器分成4个子网来做例子吧。200台机器,4个子网,那么就是每个子网50台机器,设定为192.168.10.0,C类的IP,大子网掩码应为255.255.255.0,对吧,但是我们要分子网,所以按照上面的,我们用32个IP一个子网内不够,应该每个子网用64个IP (其中62位可用,足够了吧),然后用我的办法:子网掩码应该是256-64=192,那么总的子网掩码应该为:255.255.255.192。不相信?算算:0-63,64-127,128-191,192-255,这样你就可以把四个区域分别设定到四个子网的机器上了。  常用的子网掩码  子网掩码有数百种,这里只介绍最常用的两种子网掩码,它们分别是“255.255.255.0”和“255.255.0.0”。    1.子网掩码是“255.255.255.0”的网络:最后面一个数字可以在0~255范围内任意变化,因此可以提供256个IP地址。但是实际可用的IP地址数量是256-2,即254个,因为主机号不能全是“0”或全是“1”。    2.子网掩码是“255.255.0.0”的网络:后面两个数字可以在0~255范围内任意变化,可以提供2552个IP地址。但是实际可用的IP地址数量是2552-2,即65023个。  平时,我们经常看到192.168.1.1/24(这个24指掩码位数)下面是部分子网掩码位数和具体掩码数对照表位数  掩码地址

32  255.255.255.255

31  255.255.255.254

30  255.255.255.252

29  255.255.255.248

28  255.255.255.240

27  255.255.255.224

26  255.255.255.192

25  255.255.255.128

24  255.255.255.0 (平时最常见的这个掩码)

23  255.255.254.0

22  255.255.252.0

20  255.255.240.0

19  255.255.224.0

18  255.255.192.0

17  255.255.128.0

16  255.255.0.0

15  255.255.254.0

14  255.255.252.0

13  255.255.248.0

... 

.....

.... 

......

1 128.0.0.0 

 

网划分   Internet组织机构定义了五种IP地址,用于主机的有A、B、C三类地址。其中A类网络有126个,每个A类网络可能有16,777,214台主机,它们处于同一广播域。而在同一广播域中有这么多结点是不可能的,网络会因为广播通信而饱和,结果造成16,777,214个地址大部分没有分配出去,形成了浪费。而另一方面,随着互连网应用的不断扩大,IP地址资源越来越少。为了实现更小的广播域并更好地利用主机地址中的每一位,可以把基于类的IP网络进一步分成更小的网络,每个子网由路由器界定并分配一个新的子网网络地址,子网地址是借用基于类的网络地址的主机部分创建的。划分子网后,通过使用掩码,把子网隐藏起来,使得从外部看网络没有变化,这就是子网掩码。   1. 子网掩码   RFC 950定义了子网掩码的使用,子网掩码是一个32位的2进制数,其对应网络地址的所有位都置为1,对应于主机地址的所有位都置为0。由此可知,A类网络的缺省的子网掩码是255.0.0.0,B类网络的缺省的子网掩码是255.255.0.0,C类网络的缺省的子网掩码是255.255.255.0。将子网掩码和IP地址按位进行逻辑“与”运算,得到IP地址的网络地址,剩下的部分就是主机地址,从而区分出任意IP地址中的网络地址和主机地址。子网掩码常用点分十进制表示,我们还可以用网络前缀法表示子网掩码,即“/”。如138.96.0.0/16表示B类网络138.96.0.0的子网掩码为255.255.0.0。   子网掩码告知路由器,地址的哪一部分是网络地址,哪一部分是主机地址,使路由器正确判断任意IP地址是否是本网段的,从而正确地进行路由。例如,有两台主机,主机一的IP地址为222.21.160.6,子网掩码为255.255.255.192,主机二的IP地址为222.21.160.73,子网掩码为255.255.255.192。现在主机一要给主机二发送数据,先要判断两个主机是否在同一网段。   主机一   222.21.160.6即:11011110.00010101.10100000.00000110   255.255.255.192即:11111111.11111111.11111111.11000000   按位逻辑与运算结果为: 11011110.00010101.10100000.00000000   主机二   222.21.160.73 即:11011110.00010101.10100000.01001001   255.255.255.192即:11111111.11111111.11111111.11000000   按位逻辑与运算结果为:11011110.00010101.10100000.01000000   两个结果不同,也就是说,两台主机不在同一网络,数据需先发送给默认网关,然后再发送给主机二所在网络。那么,假如主机二的子网掩码误设为255.255.255.128,会发生什么情况呢?   让我们将主机二的IP地址与错误的子网掩码相“与”:   222.21.160.73 即:11011110.00010101.10100000.01001001   255.255.255.128即:11111111.11111111.11111111.10000000   结果为 11011110.00010101.10100000.00000000   这个结果与主机的网络地址相同,主机与主机二将被认为处于同一网络中,数据不再发送给默认网关,而是直接在本网内传送。由于两台主机实际并不在同一网络中,数据包将在本子网内循环,直到超时并抛弃。数据不能正确到达目的机,导致网络传输错误。   反过来,如果两台主机的子网掩码原来都是255.255.255.128,误将主机二的设为255.255.255.192,主机一向主机二发送数据时,由于IP地址与错误的子网掩码相与,误认两台主机处于不同网络,则会将本来属于同一子网内的机器之间的通信当作是跨网传输,数据包都交给缺省网关处理,这样势必增加缺省网关的负担,造成网络效率下降。所以,子网掩码不能任意设置,子网掩码的设置关系到子网的划分。   2. 子网划分与掩码的设置   子网划分是通过借用IP地址的若干位主机位来充当子网地址从而将原网络划分为若干子网而实现的。划分子网时,随着子网地址借用主机位数的增多,子网的数目随之增加,而每个子网中的可用主机数逐渐减少。以C类网络为例,原有8位主机位,2的8次方即256个主机地址,默认子网掩码255.255.255.0。借用1位主机位,产生2个子网,每个子网有126个主机地址;借用2位主机位,产生4个子网,每个子网有62个主机地址……每个网中,第一个IP地址(即主机部分全部为0的IP)和最后一个IP(即主机部分全部为1的IP)不能分配给主机使用,所以每个子网的可用IP地址数为总IP地址数量减2;根据子网ID借用的主机位数,我们可以计算出划分的子网数、掩码、每个子网主机数,列表如下:   ① 划分子网数   ② 子网位数   ③ 子网掩码(二进制)   ④ 子网掩码(十进制)   ⑤ 每个子网主机数   ① 1~2   ② 1   ③ 11111111.11111111.11111111.10000000   ④ 255.255.255.128   ⑤ 126   ① 3~4   ② 2   ③ 11111111.11111111.11111111.11000000   ④ 255.255.255.192   ⑤ 62   ① 5~8   ② 3   ③ 11111111.11111111.11111111.11100000   ④ 255.255.255.224   ⑤ 30   ① 9~16   ② 4   ③ 11111111.11111111.11111111.11110000   ④ 255.255.255.240   ⑤ 14   ① 17~32   ② 5   ③ 11111111.11111111.11111111.11111000   ④ 255.255.255.248   ⑤ 6   ① 33~64   ② 6   ③ 11111111.11111111.11111111.11111100   ④ 255.255.255.252   ⑤ 2   如上表所示的C类网络中,若子网占用7位主机位时,主机位只剩一位,无论设为0还是1,都意味着主机位是全0或全1。由于主机位全0表示本网络,全1留作广播地址,这时子网实际没有可用主机地址,所以主机位至少应保留2位。   从上表可总结出子网划分的步骤或者说子网掩码计算步骤:   2.1 确定要划分的子网数目以及每个子网的主机数目。   2.2 求出子网数目对应二进制数的位数N及主机数目对应二进制数的位数M。   2.3 对该IP地址的原子网掩码,将其主机地址部分的前N位置 1或后M位置0 即得出该IP地址划分子网后的子网掩码。   例如,对B类网络135.41.0.0/16需要划分为20个能容纳200台主机的网络。因为16<20<32,即:2的4次方<20<2的5次方,所以,子网位只须占用5位主机位就可划分成32个子网,可以满足划分成20个子网的要求。B类网络的默认子网掩码是255.255.0.0,转换为二进制为11111111.11111111.00000000.00000000。现在子网又占用了5位主机位,根据子网掩码的定义,划分子网后的子网掩码应该为11111111.11111111.11111000.00000000,转换为十进制应该为255.255.248.0。现在我们再来看一看每个子网的主机数。子网中可用主机位还有11位,2的11次方=2048,去掉主机位全0和全1的情况,还有2046个主机ID可以分配,而子网能容纳200台主机就能满足需求,按照上述方式划分子网,每个子网能容纳的主机数目远大于需求的主机数目,造成了IP地址资源的浪费。为了更有效地利用资源,我们也可以根据子网所需主机数来划分子网。还以上例来说,128<200<256,即2^7<200<2^8,也就是说,在B类网络的16位主机位中,保留8位主机位,其它的16-8=8位当成子网位,可以将B类网络138. 96.0.0划分成256(2^8)个能容纳256-1-1-1=253台(去掉全0全1情况和留给路由器的地址)主机的子网。此时的子网掩码为11111111.11111111.11111111.00000000,转换为十进制为255.255.255.0。   在上例中,我们分别根据子网数和主机数划分了子网,得到了两种不同的结果,都能满足要求,实际上,子网占用5~8位主机位时所得到的子网都能满足上述要求,那么,在实际工作中,应按照什么原则来决定占用几位主机位呢?   在划分子网时,不仅要考虑目前需要,还应了解将来需要多少子网和主机。对子网掩码使用比需要更多的主机位,可以得到更多的子网,节约了IP地址资源,若将来需要更多子网时,不用再重新分配IP地址,但每个子网的主机数量有限;反之,子网掩码使用较少的主机位,每个子网的主机数量允许有更大的增长,但可用子网数量有限。一般来说,一个网络中的节点数太多,网络会因为广播通信而饱和,所以,网络中的主机数量的增长是有限的,也就是说,在条件允许的情况下,会将更多的主机位用于子网位。   综上所述,子网掩码的设置关系到子网的划分。子网掩码设置的不同,所得到的子网不同,每个子网能容纳的主机数目不同。若设置错误,可能导致数据传输错误。   补充:   子网划分(subnetting)的优点:   1.减少网络流量   2.提高网络性能   3.简化管理   4.易于扩大地理范围   How to Creat Subnets   如何划分子网?首先要熟记2的幂:2的0次方到9次方的值分别为:1,2,4,8,16,32,64,128,256和512.还有要明白的是:子网划分是借助于取走主机位,把这个取走的部分作为子网位.因此这个意味划分越多的子网,主机将越少   Subnet Masks   子网掩码用于辨别IP地址中哪部分为网络地址,哪部分为主机地址,有1和0组成,长32位,全为1的位代表网络号.不是所有的网络都需要子网,因此就引入1个概念:默认子网掩码(default subnet mask).A类IP地址的默认子网掩码为255.0.0.0;B类的为255.255.0.0;C类的为255.255.255.0   Classless Inter-Domain Routing(CIDR)   CIDR叫做无类域间路由,ISP常用这样的方法给客户分配地址,ISP提供给客户1个块(block size),类似这样:192.168.10.32/28,这排数字告诉你你的子网掩码是多少,/28代表多少位为1,最大/32.但是你必须知道的1点是:不管是A类还是B类还是其他类地址,最大可用的只能为30/,即保留2位给主机位   CIDR值:   1.掩码255.0.0.0:/8(A类地址默认掩码)   2.掩码255.128.0.0:/9   3.掩码255.192.0.0:/10   4.掩码255.224.0.0:/11   5.掩码255.240.0.0:/12   6.掩码255.248.0.0:/13   7.掩码255.252.0.0:/14   8.掩码255.254.0.0:/15   9.掩码255.255.0.0:/16(B类地址默认掩码)   10.掩码255.255.128.0:/17   11.掩码255.255.192.0:/18   12.掩码255.255.224.0:/19   13.掩码255.255.240.0:/20   14.掩码255.255.248.0:/21   15.掩码255.255.252.0:/22   16.掩码255.255.254.0:/23   17.掩码255.255.255.0:/24(C类地址默认掩码)   18.掩码255.255.255.128:/25   19.掩码255.255.255.192:/26   20.掩码255.255.255.224:/27   21.掩码255.255.255.240:/28   22.掩码255.255.255.248:/29   23.掩码255.255.255.252:/30   Subnetting Class A,B&C Address   划分子网的几个捷径:   1.你所选择的子网掩码将会产生多少个子网?:2的x次方-2(x代表掩码位,即2进制为1的部分,现在的网络中,已经不需要-2,已经可以全部使用,不过需要加上相应的配置命令,例如CISCO路由器需要加上ip subnet zero命令就可以全部使用了。)   2.每个子网能有多少主机?: 2的y次方-2(y代表主机位,即2进制为0的部分)   3.有效子网是?:有效子网号=256-10进制的子网掩码(结果叫做block size或base number)   4.每个子网的广播地址是?:广播地址=下个子网号-1   5.每个子网的有效主机分别是?:忽略子网内全为0和全为1的地址剩下的就是有效主机地址.最后有效1个主机地址=下个子网号-2(即广播地址-1)   根据上述捷径划分子网的具体实例:   C类地址例子:网络地址192.168.10.0;子网掩码255.255.255.192(/26)   1.子网数=2*2-2=2   2.主机数=2的6次方-2=62   3.有效子网?:block size=256-192=64;所以第一个子网为192.168.10.64,第二个为192.168.10.128   4.广播地址:下个子网-1.所以2个子网的广播地址分别是192.168.10.127和192.168.10.191   5.有效主机范围是:第一个子网的主机地址是192.168.10.65到192.168.10.126;第二个是192.168.10.129到192.168.10.190   B类地址例子1:网络地址:172.16.0.0;子网掩码255.255.192.0(/18)   1.子网数=2*2-2=2   2.主机数=2的14次方-2=16382   3.有效子网?:block size=256-192=64;所以第一个子网为172.16.64.0,最后1个为172.16.128.0   4.广播地址:下个子网-1.所以2个子网的广播地址分别是172.16.127.255和172.16.191.255   5.有效主机范围是:第一个子网的主机地址是172.16.64.1到172.16.127.254;第二个是172.16.128.1到172.16.191.254   B类地址例子2:网络地址:172.16.0.0;子网掩码255.255.255.224(/27)   1.子网数=2的11次方-2=2046(因为B类地址默认掩码是255.255.0.0,所以网络位为8+3=11)   2.主机数=2的5次方-2=30   3.有效子网?:block size=256-224=32;所以第一个子网为172.16.0.32, 最后1个为172.16.255.192   4.广播地址:下个子网-1.所以第一个子网和最后1个子网的广播地址分别是172.16.0.63和172.16.255.223   5.有效主机范围是:第一个子网的主机地址是172.16.0.33到172.16.0.62;最后1个是172.16.255.193到172.16.255.222   Variable Length Subnet Masks(VLSM)   可变长子网掩码(VLSM)的作用:节约IP地址空间;减少路由表大小.使用VLSM时,所采用的路由协议必须能够支持它,这些路由协议包括RIPv2,OSPF,EIGRP和BGP. 关于更多的VLSM知识,可以去Google.com进行搜索
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值