CIDR:无类域间路由
作用再路由信息上,把很多个小的网段,用一个更大的网段进行概括,减少路由表项。
192.168.0.0/24 192.168.1.0/24 192.168.2.0/24 192.168.3.0/24 --- >192.168.0.0 /22
将所有的子网转换成2进制
1100 0000.1010 1000.0000 0000.0000 0000 = 192.168.0.0
1100 0000.1010 1000.0000 0001.0000 0000 = 192.168.1.0
1100 0000.1010 1000.0000 0010.0000 0000 = 192.168.2.0
1100 0000.1010 1000.0000 0011.0000 0000 = 192.168.3.0
自左向右进行比对,将相同的位数取值下来,一旦不同,立刻停止比对,将后方取值为0
1100 0000.1010 1000.0000 0000.0000 0000 = 192.168.0.0
1100 0000.1010 1000.0000 0001.0000 0000 = 192.168.1.0
1100 0000.1010 1000.0000 0010.0000 0000 = 192.168.2.0
1100 0000.1010 1000.0000 0011.0000 0000 = 192.168.3.0
1100 0000.1010 1000.0000 00xx.xxxx xxxx=192.168.0.0 /22
发现前二十二位数字相同,因此就可以把以上四个网段聚合成192.168.0.0 /22,使路由表项优化(原本有四个网段,现在变成一个网段)。
但是如果此时加入192.168.4.0/24网段
1100 0000.1010 1000.0000 0000.0000 0000 = 192.168.0.0
1100 0000.1010 1000.0000 0001.0000 0000 = 192.168.1.0
1100 0000.1010 1000.0000 0010.0000 0000 = 192.168.2.0
1100 0000.1010 1000.0000 0011.0000 0000 = 192.168.3.0
1100 0000.1010 1000.0000 0100.0000 0000 = 192.168.4.0
此时发现,前22位有些不同,有些相同,或者说以上网段前21位相同,那么是否能用21位网段来概括呢?
首先看看是否能聚合成22位的网段,发现聚合后多了一条192.168.4.0,无法全部被聚合
其次如果用21位网段概括也就是192.168.0.0/21,会发现有三个网段也被聚合进来了分别是:
1100 0000.1010 1000.0000 0101.0000 0000 = 192.168.5.0
1100 0000.1010 1000.0000 0110.0000 0000 = 192.168.6.0
1100 0000.1010 1000.0000 0111.0000 0000 = 192.168.7.0
但是我们并不需要将以上网段聚合进来,如果聚合进来的话(192.168.0.0/21),其他设备寻找以上三个网段时会把数据包丢给此设备,但是发现再细分的话,此设备并不知道以上三个网段在哪里,因此把数据包丢弃,造成黑洞。
所以要把前四个网段单独聚合成一个192.168.0.0/22,剩下一个192.168.4.0/24不能聚合,所以原本路由表项有五条:
192.168.0.0/24
192.168.1.0/24
192.168.2.0/24
192.168.3.0/24
192.168.4.0/24
被聚合后变成两条:
192.168.0.0/22(前四条聚合)
192.168.4.0/24(不能聚合)