子网划分
上一节讲了IP地址的范围、分类、主机位的可用IP的计算,这章也不是特别的重点,这章要学习的是子网的划分。
子网划分,在实际中网络应用的非常广泛,初学者一般学完会有一些疑问,都规定了ABC三类地址是内部地址,可容纳那么大的范围主机IP使用,直接使用其中的地址段就可以了,为什么还需要进行子网划分。
——————————————————————————————————————————————————————
子网划分的原因
这样理解,如某公司网络有300台主机,分配一个C类地址是不够的(254),分类一个B类地址(65534)又太浪费了,为了更好的利用资源,避免IP地址造成浪费。可以把IP地址进一步划分为更小的网络,即子网划分,为了创建子网,需要将掩码中的主机位划分到网络位来使用,这种做法通常叫借位或者租位。
——————————————————————————————————————
题外话:
其实这里可能会有人有疑问,我也在这里阐述下,私网地址和公网地址不同,私网地址只在企业、公司等内部使用,至于你想规划成什么样,都可以,哪怕10台电脑呢,配置A类地址都可以,它只是一个地址而已,能通信即可。子网划分的真正意义只会有两个点,第一个点在于在公网,只有全球的公网地址才是唯一的,为了节省公网IP,运营商机构分配地址时,都会考虑进行地址划分,以缩小范围,让IP地址最大化利用。第二个点:经过子网划分的私网地址,会存在逻辑上的优势,可以让网络的规划很具有层次感,管理员便于维护。
——————————————————————————————————————
经过划分子网后,IP地址的子网掩码则不是规定的标准掩码。A类地址/8,B类地址/16,C类地址/24。就不是之前规定说的形式了。
掩码分两种,标准的叫有类地址,非标准的叫无类地址。
有类地址就是前面说的/8,/16,/24,是规范标准好的地址掩码。
无类的就是经过子网划分后的掩码。
子网划分的原理
子网划分是通过把主机位借位给网络位,从而使主机位减少,网络位增大。也可以反过来说,把网络位借位给主机位,网主机位增大。子网划分的核心就是改变掩码的变化来实现的。
子网划分呢就像一块大饼,用刀子进行切割,一张饼可以分为几份,每份有多少,完全取决于你要切多少次。如下图:
看到这张图是不是就特别好理解了。我们在具体到IP地址上,看看如何划分?
如:192.168.1.0/24网段,这是一个C类地址的网段,可容纳的IP是0-255=256,可分配的主机IP:1-254
我们先说最原始的办法,来讲解如何划分。还会利用到之前的逻辑关系数字:128 64 32 16 8 4 2 1
先把这个地址转换成二进制展开,在结合逻辑关系数字来看
网络位 主机位
128 64 32 16 8 4 2 1
192.168.1.0 = 1 1 0 0 0 0 0 0 . 1 0 1 0 1 0 0 0 . 0 0 0 0 0 0 0 1 . | 0 0 0 0 0 0 0 0
255.255.255.0 = 1 1 1 1 1 1 1 1 . 1 1 1 1 1 1 1 1 . 1 1 1 1 1 1 1 1 . | 0 0 0 0 0 0 0 0
联想下,我们切一刀。分成2分,每份128个可用IP,子网划分同理,我们将主机位借1位至网络位。
网络位 主机位
128 | 64 32 16 8 4 2 1
192.168.1.0 = 1 1 0 0 0 0 0 0 . 1 0 1 0 1 0 0 0 . 0 0 0 0 0 0 0 1 . 0 | 0 0 0 0 0 0 0
255.255.255.0 = 1 1 1 1 1 1 1 1 . 1 1 1 1 1 1 1 1 . 1 1 1 1 1 1 1 1 . 0 | 0 0 0 0 0 0 0
现在呢?网络位由24变成25位了,主机位8位变成7位了。那我们算算这个IP地址192.168.1.0/25位掩码的可用主机?
网络位 主机位
128 | 64 32 16 8 4 2 1
192.168.1.0 = 1 1 0 0 0 0 0 0 . 1 0 1 0 1 0 0 0 . 0 0 0 0 0 0 0 1 . 0 | 0 0 0 0 0 0 0
255.255.255.0 = 1 1 1 1 1 1 1 1 . 1 1 1 1 1 1 1 1 . 1 1 1 1 1 1 1 1 . 0 | 0 0 0 0 0 0 0
开始计算: = 1 1 0 0 0 0 0 0 . 1 0 1 0 1 0 0 0 . 0 0 0 0 0 0 0 1 . 0 | 0 0 0 0 0 0 0 = 192.168.1.0
= 1 1 0 0 0 0 0 0 . 1 0 1 0 1 0 0 0 . 0 0 0 0 0 0 0 1 . 0 | 0 0 0 0 0 0 1 = 192.168.1.1
= 1 1 0 0 0 0 0 0 . 1 0 1 0 1 0 0 0 . 0 0 0 0 0 0 0 1 . 0 | 0 0 0 0 0 1 0 = 192.168.1.2
= 1 1 0 0 0 0 0 0 . 1 0 1 0 1 0 0 0 . 0 0 0 0 0 0 0 1 . 0 | 0 0 0 0 0 1 1 = 192.168.1.3
= 1 1 0 0 0 0 0 0 . 1 0 1 0 1 0 0 0 . 0 0 0 0 0 0 0 1 . 0 | 0 0 0 0 1 0 0 = 192.168.1.4
.............................................
= 1 1 0 0 0 0 0 0 . 1 0 1 0 1 0 0 0 . 0 0 0 0 0 0 0 1 . 0 | 1 1 1 1 1 1 0 = 192.168.1.126
64+32+16+8+4+2=126
= 1 1 0 0 0 0 0 0 . 1 0 1 0 1 0 0 0 . 0 0 0 0 0 0 0 1 . 0 | 1 1 1 1 1 1 1 = 192.168.1.127
64+32+16+8+4+2+1=127
此刻借1位就到此为止。网络位还是192.168.1.,主机位借位1次(切开一次),主机位范围缩小了一半,此时,可用IP范围:192.168.1.0-192.168.1.127,主机可用IP:192.168.1.1-192.168.1.126,0代表网络IP,127代表广播IP。
一张大饼被切1次,分为两块小饼,上面只列出了一张饼的范围。下面在列出第二张饼的范围。注意下表在网络位的变动!!!
网络位 主机位
128 | 64 32 16 8 4 2 1
192.168.1.0 = 1 1 0 0 0 0 0 0 . 1 0 1 0 1 0 0 0 . 0 0 0 0 0 0 0 1 . 0 | 0 0 0 0 0 0 0
255.255.255.0 = 1 1 1 1 1 1 1 1 . 1 1 1 1 1 1 1 1 . 1 1 1 1 1 1 1 1 . 0 | 0 0 0 0 0 0 0
开始计算: = 1 1 0 0 0 0 0 0 . 1 0 1 0 1 0 0 0 . 0 0 0 0 0 0 0 1 . 0 | 1 1 1 1 1 1 1 = 192.168.1.127
64+32+16+8+4+2+1=127
————————————————————————————————————————————————————————————————————————————————————————————————————————————
进入下一块饼,注意借位的数字变动在网络位。
= 1 1 0 0 0 0 0 0 . 1 0 1 0 1 0 0 0 . 0 0 0 0 0 0 0 1 . 1 | 0 0 0 0 0 0 0 = 192.168.1.128
128+1= 1 1 0 0 0 0 0 0 . 1 0 1 0 1 0 0 0 . 0 0 0 0 0 0 0 1 . 1 | 0 0 0 0 0 0 1 = 192.168.1.129
128+2= 1 1 0 0 0 0 0 0 . 1 0 1 0 1 0 0 0 . 0 0 0 0 0 0 0 1 . 1 | 0 0 0 0 0 1 0 = 192.168.1.130
128+2+1= 1 1 0 0 0 0 0 0 . 1 0 1 0 1 0 0 0 . 0 0 0 0 0 0 0 1 . 1 | 0 0 0 0 0 1 1 = 192.168.1.131
..............................................................
= 1 1 0 0 0 0 0 0 . 1 0 1 0 1 0 0 0 . 0 0 0 0 0 0 0 1 . 1 | 1 1 1 1 1 1 1 = 192.168.1.255
128+64+32+16+8+4+2+1
所以第二段子网IP范围:192.168.1.128-192.168.1.255,主机可用IP:1.129-.1.254,网络IP:1.128,广播IP:1.255。
那么掩码应该怎么表示?192.168.1.0/24,借1位变成192.168.1.0/25,一个C类大段地址被分为两个小的子网。
那么展开来说就是第一段子网:192.168.1.0/255.255.255.128,第二段子网:192.168.1.128/255.255.255.128
这里的192.168.1.128是代表一个网段。
结论:当一个C类地址借位1次,可用的主机IP成倍减少。那么借2位,借3位都是一个逻辑。
在举例借4位,192.168.1.0/24+4,192.168.1.0/28,看看步骤
网络位 主机位
128 64 32 16 | 8 4 2 1
192.168.1.0 = 11000000.10101000.00000001. 0 0 0 0 | 0 0 0 0
255.255.255.0 = 1111111.11111111.11111111. 0 0 0 0 | 0 0 0 0
————————————————————————————————————————————————————————————————————————————————————————————————————————————
开始计算第一段:
= 11000000.10101000.00000001. 0 0 0 0 | 0 0 0 0 = 192.168.1.0
= 11000000.10101000.00000001. 0 0 0 0 | 0 0 0 1 = 192.168.1.1
= 11000000.10101000.00000001. 0 0 0 0 | 0 0 1 0 = 192.168.1.2
= 11000000.10101000.00000001. 0 0 0 0 | 0 0 1 1 = 192.168.1.3
= 11000000.10101000.00000001. 0 0 0 0 | 0 1 0 0 = 192.168.1.4
.........................................................
= 11000000.10101000.00000001. 0 0 0 0 | 1 1 1 1 = 192.168.1.15
————————————————————————————————————————————————————————————————————————————————————————————————————————————
开始计算第二段:
= 11000000.10101000.00000001. 0 0 0 1 | 0 0 0 0 = 192.168.1.16
= 11000000.10101000.00000001. 0 0 0 1 | 0 0 0 1 = 192.168.1.17
= 11000000.10101000.00000001. 0 0 0 1 | 0 0 1 0 = 192.168.1.18
........................................................
= 11000000.10101000.00000001. 0 0 0 1 | 1 1 1 1 = 192.168.1.31 16+8+4+2+1=31
————————————————————————————————————————————————————————————————————————————————————————————————————————————
开始计算第三段:
= 11000000.10101000.00000001. 0 0 1 0 | 0 0 0 0 = 192.168.1.32
= 11000000.10101000.00000001. 0 0 1 0 | 0 0 0 1 = 192.168.1.33
= 11000000.10101000.00000001. 0 0 1 0 | 0 0 1 0 = 192.168.1.34
.........................................................
= 11000000.10101000.00000001. 0 0 1 0 | 1 1 1 1 = 192.168.1.47 32+8+4+2+1=47
————————————————————————————————————————————————————————————————————————————————————————————————————————————
开始计算第四段:
= 11000000.10101000.00000001. 0 0 1 1 | 0 0 0 0 = 192.168.1.48
..........................................................
= 11000000.10101000.00000001. 0 0 1 1 | 1 1 1 1 = 192.168.1.63 32+16+8+4+2+1=63
————————————————————————————————————————————————————————————————————————————————————————————————————————————
开始计算第五段:
= 11000000.10101000.00000001. 0 1 0 0 | 0 0 0 0 = 192.168.1.64
.........................................................
= 11000000.10101000.00000001. 0 1 0 0 | 1 1 1 1 = 192.168.1.79 64+8+4+2+1=79
————————————————————————————————————————————————————————————————————————————————————————————————————————————
开始计算第六段:
= 11000000.10101000.00000001. 0 1 0 1 | 0 0 0 0 = 192.168.1.80
.........................................................
= 11000000.10101000.00000001. 0 1 0 1 | 1 1 1 1 = 192.168.1.95
————————————————————————————————————————————————————————————————————————————————————————————————————————————
开始计算第七段:
= 11000000.10101000.00000001. 0 1 1 0 | 0 0 0 0 = 192.168.1.96
.........................................................
= 11000000.10101000.00000001. 0 1 1 0 | 1 1 1 1 = 192.168.1.111
第八段:......................................112-127
第九段:......................................128-143
第十段:......................................144-159
第十一段:....................................160-175
第十二段:....................................176-191
第十三段:....................................192-207
第十四段:....................................208-223
第十五段:....................................224-239
开始计算第十六段:
= 11000000.10101000.00000001. 1 1 1 1 | 0 0 0 0 = 192.168.1.240
.........................................................
= 11000000.10101000.00000001. 1 1 1 1 | 1 1 1 1 = 192.168.1.255
看懂了这些简单的逻辑,以上只是还原了如何借位的原理,我们可以通过口算,快速计算IP借位包含有多少个子网,子网的网络IP和广播IP,以及每个子网包含的可用主机IP。
举例:随便说一个地址,192.168.20.59/27。计算出子网个数、每个子网的范围及包含的主机IP。
看到27,就知道借了3位。2的3次方就是子网的个数,222=8个子网。
子网的范围:想到逻辑关系数字:128 64 32 16 8 4 2 1 ,借3位,第三位是32,每个子网范围就是0-31的范围,以32的倍数递增。0-31,32-63以此类推,包含的主机IP,很简单就是1-30。。。
B类地址的借位和C类地址同理。我简单的介绍下。
172.16.0.0/18,来看看怎么借位
网络位 主机位
128 64 32 16 8 4 2 1
172.16.0.0 = 11000000.10101000. 0 0 | 0 0 0 0 0 0 . 0 0 0 0 0 0 0 0
255.255.0.0 = 1111111 .11111111. 0 0 | 0 0 0 0 0 0 . 0 0 0 0 0 0 0 0
—————————————————————————————————————————————————————————————
第一段
= 11000000.10101000. 0 0 | 0 0 0 0 0 0 . 0 0 0 0 0 0 0 0 =172.16.0.0
= 11000000.10101000. 0 0 | 0 0 0 0 0 0 . 0 0 0 0 0 0 0 1 =172.16.0.1
......................................
= 11000000.10101000. 0 0 | 1 1 1 1 1 1 . 1 1 1 1 1 1 1 1 =172.16.63.255
—————————————————————————————————————————————————————————————
第二段
= 11000000.10101000. 0 1 | 0 0 0 0 0 0 . 0 0 0 0 0 0 0 0 =172.16.64.0
= 11000000.10101000. 0 1 | 0 0 0 0 0 0 . 0 0 0 0 0 0 0 1 =172.16.64.1
......................................
= 11000000.10101000. 0 1 | 1 1 1 1 1 1 . 1 1 1 1 1 1 1 1 =172.16.127.255
—————————————————————————————————————————————————————————————
第三段
= 11000000.10101000. 1 0 | 0 0 0 0 0 0 . 0 0 0 0 0 0 0 0 =172.16.128.0
= 11000000.10101000. 1 0 | 0 0 0 0 0 0 . 0 0 0 0 0 0 0 1 =172.16.128.1
......................................
= 11000000.10101000. 1 0 | 1 1 1 1 1 1 . 1 1 1 1 1 1 1 1 =172.16.191.255
—————————————————————————————————————————————————————————————
第四段
= 11000000.10101000. 1 1 | 0 0 0 0 0 0 . 0 0 0 0 0 0 0 0 =172.16.192.0
= 11000000.10101000. 1 1 | 0 0 0 0 0 0 . 0 0 0 0 0 0 0 1 =172.16.192.1
......................................
= 11000000.10101000. 1 1 | 1 1 1 1 1 1 . 1 1 1 1 1 1 1 1 =172.16.255.255
看看,第一段:172.16.0.0-172.16.63.255,主机的范围被缩小。网络IP:172.16.0.0,广播IP:172.16.63.255,可用主机:172.16.0.1-172.16.63.254
——————————————————————————————————————————————————————
补充
个人的理解,判断一个IP地址是ABC三类中哪一类,取决于掩码是多少位掩码,而不是规定的10、172、192的定义IP。
在有一次考试中,出现的题,说172.16.0.0/24是C类还是B类,然而我答了C类,直接提示错误。
个人理解吧,因为有子网掩码的借位,才能真正的判断到底是否是哪一类的IP。