看到网上有人询问路由表匹配路由的问题,解答一下:
路由器A的路由表如下所示,确定进入路由器A的目的Ip地址是132.19.237.5的分组的最佳路由?
网络地址 下一跳
1 132.0.0.0/8 132.20.1.1
2 132.19.0.0/11 132.20.0.1
3 132.19.233.0/22 132.20.1.1
看到有人说2,有人说3,其实,我觉得:
第一条是匹配路由。
首先:路由选择优先次序,直连优先,静态次之,再次其他类型如ospf生成路由,同类路由是路由表里掩码长度大的路由条目优先被匹配查询。
一个数据包首先判断是否目的ip是本地数据包,检查本地ip的路由表表项,一般掩码为32位,再检查其他级别次长的掩码路由。就像邮局收到信件,首先判断邮编是否是本地辖区的,是就留下投递,不是再送出处理。
路由是确定一个ip数据包的处理的传输路径,需要ip统一编码和路由判断来实现,终端,经过传输链路,节点到达另一个终端的目的。
路由选择过程:
是用目的ip和路由表条目的掩码进行与运算,再和路由条目里路由表项ip地址比较,完全一致就匹配。
ip地址为二进制32位,为了方便记忆,分成每8位一段,分成四段,用0-255的数字和.分成四段,如192.168.10.5。ip地址分成两段分级结构,网络地址+主机地址,ip地址有寻址功能,公网中的网络地址和具体的一个硬件节点是对应的。如大学的学号,51200431,前面51是专业,2004是年级,512004就相当于网络地址,31是学生的编号。
ip地址有32位2^32个地址,路由表项不可能把所有的ip都一一列举出来,所以就用掩码来屏蔽主机地址位,获得网络地址来实现ip分层结构来缩减路由条目。如11.0.0.0/8 f0就代表从一个目的ip中头部向右取出8位若是11符合某一种规则从f0口送出。这就代表屏蔽了11.0.0.0到11.255.255.255,后三位是2^24个ip都按照这一个规则处理。
掩码有数字和ip两种表达方式,数字方式就是32位ip地址二进制中网络位的个数,取值在0-32间。掩码的ip方式表达方式就是网络位为1,主机位为0的ip地址四段方式。每段取值为0,128,192,224,240,248.252,255中选择。全网络地址段为255,全主机位段为0,变长掩码规则里,ip四段里既有网络位,又有主机位的段的值就是,主机为n,值位256-2^n。默认abc类地址掩码是8,16,24,主机地址位32,若小于这几个值主机位就是掩码ip四段中的那一段全是网络地址作为掩码的上限,如11就是,ip地址中第二段有三位是网络地址位,第二段全是网络地址就是16,主机位16-11=5;22就是第三段24-22=2;26就是第四段32-26=6;5就是第一段8-5=3。
为啥ip地址既有网络地址位,又有主机地址位的掩码值为256-2^n,n是主机位数,因为这段8位中,前面是8-n个1,后面是n个零,我们把网络位看成一个整体,它的权值就是2^n,整个这段的值就是(2^(8-n)-1)x2^n+0=256-2^n。
变长掩码的掩码表示方法中,既有网络位,又有主机位的ip段存在的话,只能有一段。因为掩码的表示方法是网络位是连续的1,主机位是连续的0,当0出现后,后面就不能出现1了,所以当ip四段中,第一段有主机位,其他第二三四段就只能是主机位了,第二段有主机位,第三四段就全是主机位,第三段有主机位,第四段段就是纯主机位,第四段有网络位和主机位,前三段就是纯网络位。
本例中,三条路由掩码长度分别为8,11和22,所以根据路由表掩码长度先检查第三条路由是否匹配,掩码为22,就是ip第三段主机位为2位,掩码值就是255.255.252.0,这个掩码和目的ip132.19.237.5与的结果为132.19.236.0,和第三条路由条目的132.19.233.0不一样,所以此路由不匹配。
再检查掩码为11的路由,掩码位11,掩码的第二段就是256-2^5=224,就是255.224.0.0,目的ip132.19.237.5与的结果为132.0.0.0.与路由条目2的132.19.0.0不匹配。
显然,第一条的路由条目,掩码为8,就是255.0.0.0,目的ip132.19.237.5与的结果为132.0.0.0,与第一条路由表项完全匹配,所以第一条路由是匹配路由。