路由匹配:d_IP & Mask(i) = Net(i) ;
一个目的地址可以与路由表中的多打地址匹配;(0.0.0.0 & d_IP = 0.0.0.0 默认路由端口)
因此路由表的青藏排列顺序应该为:
直连路由、主机路由、网络路由、默认路由 // 优先查找掩码值大的路由;最长匹配算法
下面是一路由表项:(最长匹配)
C:直连网络 // 可以不按最长匹配原则,因为端口间没有包含关系,两个端口不会连向同一个网络
查找过程:目的地址与掩码相与,如果与目的网络地址一样,则匹配
192.168.1.2的查找过程:
192.168.1.96/30 与掩码相与得到192.168.1.0,与 1.96不匹配;
192.168.1.100/30 得到192.168.1.0,与 1.100不匹配;
192.168.1.0/26 得到192.168.1.0,与 1.10匹配 ,因此发往以太网0口;
R:非直连路由 // 查找过程必须按最长掩码的原则来查找(网络间可以有包含关系)
192.168.1.65的查找过程:1. 0100 0001
192.168.1.96/30 与掩码相与得到192.168.1.64,与 1.96不匹配;
192.168.1.100/30 得到192.168.1.64,与 1.100不匹配;
192.168.1.0/26 得到192.168.1.64,与 1.10不匹配 ;
192.168.1.54/28 得到192.168.1.64,与 1.64匹配,由192.168.1.97 端口发往serial 0 ;
192.168.1.105的查找过程:1. 0110 1001
查找后发现没有匹配项,查找失败,发送ICMP差错报文给源端口;