路由掩码最长匹配原则是指IP网络中当路由表中有多条条目可以匹配目的ip时,一般就采用掩码最长(最精确)的一条作为匹配项并确定下一跳。(也叫最长前缀匹配,是路由器在查找路由表进行选路的算法)

例如,考虑下面这个IPV4的路由表:

192.168.20.16/28 e0

192.168.0.0/16 s0

在要查找地址192.168.20.19时,不难发现上述两条都“匹配”,即这两条都包含要查找的目的地址。此时就应该根据最长掩码匹配原则,选择第一条进行匹配(更明确),所以数据包将通过e0发送出去。

 

再来看一个例子:

ip route 10.1.0.0 255.255.255.0 192.168.2.2

ip route 10.1.0.0 255.255.0.0 192.168.3.3

ip route 0.0.0.0 0.0.0.0 192.168.1.1

 

对于三条目标地址10.1.0.14 ,10.1.4.6 ,10.2.1.3

10.1.0.14有两条路由都符合,根据最常掩码匹配原则,下一跳地址应该是192.168.2.2

10.1.4.6 只与第二条路由网段匹配,所以下一跳地址 192.168.3.3

10.2.1.3与那条都不匹配所以扔到默认路由 下一跳 192.168.1.1

IP classless的作用:
1、ip classless这条命令是作用于路由转发进程的,告诉路由器工作在无类环境下
2、它能让路由器超越有类网络的边界而根据最长匹配条目来转发数据包;
3、当目的网络没有出现在路由表中时通过默认路由转发数据包,而不是简单的丢弃
4、如果路由器工作在有类环境下,当目的网络出现在路由表中,但没有具体的网络 匹配时,防火墙将丢弃数据包。
例如:

                                    2、   IP Classless

ip classless命令最早在cisco IOS 10.0被介绍,在cisco IOS 11.3后。ip classless就缺省有效了(enable)。
为什么呢?
原因是这样的,当在路由器中使用了classful的路由协议(如:RIP)时,而在路由表里有子网时,问题就出现了。
当no ip classless的时候,假设现在路由器里有10.0.0.0/8,10.1.0.0/16,10.2.0.0/16的路由记录,这时路由器收到了
一个目的地为10.4.0.0/16的IP包,路由器发现10.4.0.0/16不在路由表中,那么这个包将被路由器丢弃。即使有缺省路由也没有用。
现在假设 ip classless命令被启动了,那么这个10.4.0.0/16包将怎样被转发呢?它将会按照10.0.0.0/8的路由记录来转发这个包。因为它是10.4.0.0/16的超网。当然,如果路由器里连这个10.0.0.0/8的路由记录也不存在,10.4.0.0/16的包就会按照缺省路由来
总结:
加一条ip classless命令,那么路由器成为无类路由环境,当目的数据包到达时,不进行有类匹配,而是进行无类匹配,即进行最长匹配原则;当用最长匹配时不在路由表内,那么路由器将把它交给默认路由,通过默认路由,把数据包送出。
使用有类路有,当一个路由器收到一个数据包,而它的目的地址在路由表中不存在的话,它就会丢弃这个数据包。如果你使用了缺省路由,就必须使用ip classless命令,因为远端子网并不存在于你的路由表中。