我们都学过把原本大网络分成若干小网络的划分子网。但是大家可曾听说过把原本数量众多的小网络汇聚成一个大网络的超网吗?
没有错!我们今天的主角——构成超网,就是通过对IP地址的原有格式进行升级重组,进而产生的一种更为神奇的组网方式。
究竟有多“神奇”呢?让我们接着往下看
构成超网也称CIDR(Classless Inter-Domain Routing,无类别域间路由选择)。
简单来说,它就是一种将多个同类IP地址聚合成一个”地址块“的方法。超网的诞生使我们可以更加有效地分配 IPv4地址空间。
超网的运用可以使IPv6在大规模使用前容许互联网的规模继续增长。
在传统的按照IP地址分类的方法中,不管是哪一类地址,网络号和主机号所占的长度都是固定不变的,只要确定了这个地址的网络号,那就是固定长度。
这种“顽固”的分类方法不仅使用起来不太灵活,同时也直接导致了路由器在交换路由表时所产生信息的冗余。
因此采用路由聚合构造超网,有利于减少路由器之间的路由选择信息的交换,从而提高了整个互联网的性能,避免路由信息的冗余。构成超网在进行一番聚合操作后,原本包含成千上万条转发信息的路由表摇身一变,“瘦”成了可能只有几条路由表项的路由表Mini。
接下来让我们看个小例子,如下图所示,在没有进行构造超网之前, 路由器每进行一次路由信息交换,R2就会收到R1更新的5条路由信息。
(此处省略十进制与二进制的转换关系,毕竟我们都是机智的通信人)
而构成超网会把网络前缀都相同的IP地址组成一个“CIDR地址块”,又称聚合地址块。
将上图的五条地址转为二进制后,我们发现它们的前20位都是相同的,于是乎,将这20位取出来作为地址块中的共同前缀,而剩余的12位将默认补0作为地址块中的主机号。
这五条地址信息进行聚合后,就形成了一个CIDR地址块:168.100.128.0/20。此时,R2在接收R1的路由转发表时,就只会收到一条CIDR地址信息了。
CIDR还使用“斜线记法”,即在IP地址后面加上斜线“/”,然后写上网络前缀所占的位数。
我们只要知道CIDR地址块中的任何一个地址,再将地址中的主机号改成全0或全1,就可以得到这个地址块中的最小地址和最大地址,而最大地址和最小地址之间所包含的这一片连续的地址,都可以用这个CIDR地址块来表示。同时,根据地址块中主机号的位数n,我们也可以得到这个地址块中可以指派的地址数:2n-2。
“减2”是因为主机号为全0和全1的两个地址为特殊地址,一般不作为源地址或者目的地址使用。
聚合得出的168.100.128.0/20,把它展开成二进制后,这个地址所在的地址块中的最小地址和最大地址可以很方便地得出,如下表所示。
最小地址 | 168.100.128.0 | 10101000.01100100.1000 0000.00000000 |
最大地址 | 168.100.143.255 | 10101000.01100100.1000 1111.11111111 |
不难算出,这个地址块中能够包含4096个地址(4094个可以指派的地址)。我们可以用地址块中的最小地址和网络前缀的位数指明这个地址块。例如,上面的最小地址块可记为168.100.128.0/20。
我们惊奇地发现,这个最小地址居然与前文提到的聚合地址时一模一样的呀!
那既然提到了CIDR地址块,就不能不提到与之相对应的最长前缀匹配机制。
这是因为我们在查找路由表项进行路由选择时可能得到不止一个匹配结果。这样就带来一个问题:我们应当从这些匹配的结果中选择哪一条路由呢?
直接公布正确答案:应当从匹配结果中选择具有最长网络前缀的路由。
当路由器收到一个IP数据包时,它会将数据包的目的IP地址与自己本地路由表中的所有路由表项分别进行逐位对比,对比完毕后,选择与之匹配度最长的路由表项。
举个例子:
假如本座5楼现在收到了一封X部门发往Y部门的邮件,已知Y部门的IP地址为:192.31.71.128,途经5楼的一个路由器现有的路由表项信息分别为:192.31.71.0/26、192.31.68.0/22,那么该路由器在收到这封邮件后应该发往哪个下一跳地址呢?
路由表项 | 对应的子网掩码 | 下一跳地址 |
192.31.71.0/26 | 11111111.11111111.11111111.11000000 | 192.31.31.19 |
192.31.68.0/22 | 11111111.11111111.11111100.00000000 | 192.31.31.89 |
目的地址 :192.31.71.128 所对应的二进制数为:11000000.00011111.01000111.10000000 |
这里需要解释的是,虽然CIDR不使用子网了,但由于目前仍有一些网络还在使用子网划分和子网掩码,为了更方便地进行路由选择,CIDR所使用的32位地址掩码也可继续称为子网掩码。
将每一个路由表项所对应的子网掩码与目的地址的二进制展开式两两进行“逻辑与”运算后再转换为十进制可得:192.31.71.0、192.31.68.0,运算步骤如下图所示:
我们发现:经过运算后所得到的地址都与对应路由表项相匹配,说明表中两条路由信息都可以作为下一跳地址进行分配。
But!根据最长前缀匹配机制,我们应该选择路由表项1所对应的下一跳地址作为转发地址,这是因为网络前缀越长,地址块越小,路由就越具体。
CIDR消除了传统的A,B,C类地址和划分子网的概念,更有效地分配IPv4的地址空间,使IP地址从三级编址(网络号,子网号,主机号)又回到无分类的两级编址,如下图所示。
CIDR还使用“斜线记法”,即在IP地址后面加上“/”然后指明网络前缀所占的位数。CIDR把网络前缀都相同的连续IP地址组成一个“CIDR地址块”,即构成超网。
在使用CIDR时,在路由表中可能会有不止一个匹配结果,这时应当从所有匹配结果中选择能够匹配更长网络前缀的路由,因为网络前缀越长,其地址块就越小,所得路由就越具体。
今天超网就说到这儿啦~有疑问欢迎评论区留言喔!
风里雨里,小编评论区等你~
我们是一群平均从业年限5+的通信专业工程师。 关注我们,带你了解通信世界的精彩!