我们知道在进行跨网段传输数据的时候会将数据交给我们的路由器。那么路由器收到这个数据之后是如何去转发的呢?
路由器工作原理
路由器在收到一个数据包之后会查表转发,这个表就叫做"路由表"。
路由表就像数据转发的一张地图一样,比如你从北京到上海有很多路能走,而地图的作用就是让你知道如何去往目的的。路由器也是一样,路由表就是让路由器知道如何将数据转发出去的。
那么路由表是怎么形成的呢?
本地直连网段
路由器上的每一个接口启用之后都会在路由器上生成一个路由条目。
静态路由
静态路由是由我们管理员手工配置的
动态路由
动态路由是我们在路由器上运行动态路由协议,运行了相同动态路由协议的路由器可以建立邻居,每个邻居会将自己知道的所有路由条目发送给对方。
动态路由协议分为两种:
距离矢量协议:每个路由器仅知道与它相连的链路信息,依靠传闻选择路径,邻居给我发什么我就会接受什么,邻居怎么走,我怎么走。
如何理解呢?比如说你从上海去往北京,别人给了你一条路线,但是你不知道要走的这条路的详细信息,会不会堵车,路况如何。
链路状态路由协议:每个路由器都必须熟悉网络中所有连接情况,以及每条链路的信息,收敛时间短。
如何理解呢?还是从上海去往北京,别人只给出了你每条路线的路况,但是没告诉你怎么去往北京,需要自己来计算出一条最快的路线
常见的路由协议:OSPF,RIP,ISIS,静态,BGP
针对不相同的协议,学到了相同的路由条目应该怎么办?
路由器只会将最优的路由放入路由表中,这时候如果路由器针对不同的协议学到了相同的路由表应该怎么做呢?
每种路由协议都会有他们的优先级,如果使用不通协议学到了相同的网段,会比较路由协议的优先级——越小越优先。
针对相同协议学到了同一个路由条目,又如何比较呢?
每个路由条目都会比较COST值,也就是开销值,开销越小越优先
针对一个路由器中,有多个条目都包含了一个ip地址,那么应该选择哪一个呢?
针对这种情况路由器使用最长掩码匹配,也就是精确优先。
路由器查表顺序:
最长掩码匹配
管理距离
COST开销值
我们来看一个路由器中路由表的样子。
我们在华为设备里输入dis ip ro查看本设备的路由表,路由表由很多路由条目形成,我们看一下里面的内容
Destination/Mask:代表着一个路由条目的前缀和它的掩码
Proto:形成这个路由条目是由什么协议形成的
Pre:代表着这个路由协议的优先级(越小越优)在使用
Cost:去往一个目的地的开销,用来计算最优路径的(越小越优)
Flags:R是relay的首字母,说明是迭代路由,会根据路由下一跳的IP地址获取出接口。
配置静态路由时如果只指定下一跳IP地址,而不指定出接口,那么就是迭代路由,需要根据下一跳IP地址的路由获取出接口。D是download的首字母,表示该路由下发到FIB表。
NextHop:下一跳的ip地址
Interface:发出数据包的接口
下一跳:路由器发送一个数据包这时候会查询路由表,路由表中会选出一条最优的路由,路由器依据最优的路由将数据发给下一台设备,这个下一台设备就是下一跳。
路由迭代:就是说路由器查询路由表的时候,会查到下一跳的ip地址,但是怎么去往这个下一跳的ip地址呢?这时候会再次进行查表,这个顺序就叫做递归,一直查到从那个接口发出数据包才能发送出数据。
收敛:网络变化之后到网络上左右的设备都响应过来的过程时间叫做收敛。