前两天突然想到一个问题,默认路由是干吗用的?
按理说,这很简单,顾名思义,默认的嘛,那什么时候会选择这条路由呢?就是与路由表其他表项都不匹配的时候。
到这我开始有点晕了,与其他表项都不匹配?这怎么可能呢?所谓最长匹配不就是从所有路由记录里选择最匹配的那个吗?那么岂不是每个路由记录都与目标地址是匹配的,只是匹配位数长短不一样而已。
今天查资料,认真看了一下,终于发现问题所在了,注意!最长匹配是指在匹配的情况下,选择子网掩码最长的那个记录。
换句话说,还有很多路由记录与目标地址并不匹配!!!
比如:目标地址172.16.2.1
路由记录1:172.16.1.0/24
路由记录2:172.16.2.0/24
路由记录3:172.16.0.0/16
以上3条路由记录,第一个172.16.1.0换成二进制是172.16.00000001.0,目标地址172.16.2.1换成二进制是172.16.00000010.1,看起来双方匹配位数不少啊,实际上!大错特错!这俩根本不匹配!!!
为什么?因为这里的匹配是指子网掩码部分完全相同才叫匹配!!! 这里172.16.1.0/24的子网掩码部分就是前24位,也就是172.16.1,而按照相同标准的目标地址172.16.2.1的子网掩码部分就成了172.16.2。
172.16.1与172.16.2根本不一样,所以两条记录并不匹配!!!
而路由记录2和路由记录3与目标地址才叫匹配。
细想一下,为什么规定子网掩码部分的地址相同才叫匹配呢?因为子网掩码部分的地址代表着网络号,路由记录表面上是IP地址,其实记录的是网络号,也就是网段地址,这部分相同,就说明目标IP地址肯定在这个网段里边,至于最长匹配,就是寻找分的最细的网段了,这样找的更快。举个例子,已知某人住在合肥市蜀山区,我们现在有三个人口记录册子----安徽省人口记录,合肥市人口记录,蜀山区人口记录,那肯定是找蜀山区人口记录能最快找到这个人的记录了。
反过来,如果子网掩码部分不同,说明目标IP地址肯定不在这个网络号的网段里边,也就是我们说的不匹配了。