什么是路由
路由器提供了将异构网互联的机制,实现将一个数据包从一个网络发送到另一个网络。路由就是指导IP数据包发送的路径信息。 在互联网中进行路由选择要使用路由器,路由器只是根据所收到的数据报文头中目的地址选择一个合适的路径(通过某一个网络),将数据包传送到下一个路由器,路径上最后的路由器负责将数据包送交目的主机。 数据包在网络上的传输就好像是体育运动中的接力赛一样,每一个路由器只负责将数据包在本站通过最优的路径转发,通过多个路由器一站一站地接力将数据包通过最优路径转发到目的地。当然也有一些例外的情况,由于一些路由策略的实施,数据包通过的路径并不一定是最优的。 路由器的特点就是逐跳转发。上图所示的网络中,RTA收到PC发往Server的数据包后,将数据包转发给RTB,RTA并不负责指导RTB如何转发数据包。所以,RTB必须自己将数据包发给RTC,RTC再转发给RTD,依次类推 路由器转发数据包的依据是路由表。每个路由器中都保存着一张路由表,表中每条路由项都致命数据包到某子网或某主机应通过路由器的哪个物理端口转发,然后就可到达该路径下的一个路由器,或者不再经过别的路由器而传送到直接相连的网络中的目的主机
- 目的地址/掩码(Destination/Mask):用来标识IP数据报文的目的地址或目的网络。如上图所示,10.0.0.0/24范围为10.0.0.0~10.0.0.255,也就意味着只要IP报文的目的地址在此范围内,就可以匹配这条路由信息进行转发
- 出接口(Interface):指明IP包将从路由器哪个接口转发
- 下一跳地址(Next-hop):更接近目的网络的下一个路由器地址。如果只配置了出接口,下一跳IP地址是出接口的地址
- 度量值(Cost):度量值分开销和跳数,但均说明IP包需要花费多大的代价才能到达目标。主要作用是当网络存在到达目的网络的多个路径时,路由器可依据度量值而选择一条较优的路径发送IP报文,从而保证IP报文能更快更好的到达目的
- 协议(Protocol):也称路由的来源,分别有直连路由、静态路由、动态路由协议
- 优先级(Preference):标识路由优先级,数值越小越优先,取值范围为0-255
当路由表中存在多个路由项可以同时匹配目的IP地址时,路由查找进程会选择其中掩码最长的路由项用于转发,此为最长匹配原则 如上图所示,PC将目的地址为40.0.0.2的报文发给路由器时,此时路由器表项中有40.0.0.0/24和40.0.0.0/8的路由信息,分别匹配的范围是40.0.0.0~40.0.0.255和40.0.0.0~40.255.255.255,匹配的范围是不一样的。根据最长掩码匹配原则,掩码越长,范围越小越精确,所以此时选择40.0.0.0/24这条路由信息进行匹配转发 当匹配路由信息的下一跳地址不在本机的直连链路上,路由器还需要拿这个非直连链路的IP地址作为目的地址继续查询路由表项,直到查询到的下一跳地址与本机直连,按此记录进行转发 如果路由表中没有路由信息能够匹配数据包,则丢弃该数据包。但是,如果在路由表中缺省路由存在,则路由器按照缺省路由来转发数据包。缺省路由又称为默认路由,其目的地址为0.0.0.0,掩码为0,匹配的范围为0.0.0.0~255.255.255.255