CIDR前缀
CIDR全称为无类别域间路由,和子网掩码不同的是,子网掩码只是局限于在某一个子网内或一个站点内使用,而CIDR是对全球路由系统都是可见的。与子网掩码相对应,CIDR也有一个网络前缀,它消除了IP地址中网络号和主机好的预定义分隔(A类、B类等地址)。
说白了,CIDR聚合就是利用一个数字来规定了网络号所占的位数,而不是像A类、B类地址那样,有一定的标准,例如:
前缀 | 前缀(二进制) | 地址范围 |
---|---|---|
0.0.0.0/0 | 00000000 00000000 00000000 00000000 | 0.0.0.0 ~ 255.255.255.255 |
128.0.0.0/1 | 10000000 00000000 00000000 00000000 | 128.0.0.0 ~ 255.255.255.255 |
128.0.0.0/24 | 10000000 00000000 00000000 00000000 | 128.0.0.0 ~ 128.0.0.255 |
198.128.128.192/27 | 11000110 10000000 10000000 11000000 | 198.128.128.192 ~ 198.128.128.223 |
其中可以看到第二个和第三个的区别,第二个因为后缀为1,所以网络号只占了1位,主机号为31位;而第三个后缀位24,网络号占了24位,主机号只占了8位,所以这个网络中只有后八位能够分配。
聚合
首先要明白聚合的目的,聚合的目的就是要消除路由器中的路由表条目数,一个路由表条目告诉一个路由器向哪里发送流量。聚合就是将相邻的多个IP前缀合并成一个短前缀,使其覆盖更多的地址空间。因为短前缀意味着主机地址所占的位数更多,因而能覆盖更多的地址空间,那看一下聚合的过程是怎样的:
假设有两个前缀为190.154.27.0/26 和 190.154.27.64/26,这其实是看不出什么的,只有变为二进制时才能看到两者的联系:
前缀 | 前缀(二进制) |
---|---|
190.154.27.0/26 | 10111110 10011010 00011011 00000000 |
190.154.27.64/26 | 10111110 10011010 00011011 01000000 |
能够发现,两者的网络号只有最后一位不同,将其隔离出来即是两者差值为1,也即相邻。所以此时两者可以进行聚合,聚合结果为:
前缀 | 前缀(二进制) |
---|---|
190.154.27.0/26 | 10111110 10011010 00011011 00000000 |
190.154.27.64/26 | 10111110 10011010 00011011 01000000 |
190.154.27.0/25 | 10111110 10011010 00011011 00000000 |
注意前缀已经变为了25,这时候相当于将两个子网进行了聚合。那聚合后呢,有什么效果呢?这也就是这个名字无类别域间路由的由来。原来需要传递到第一个网络或第二个网络的数据包现在逗只需要传到第三个网络中,再由这个网络进行分配决定到底是传到第一个还是第二个,这样就减少了一个路由器中的条目数,转而分担到了各个“子网”中去。