一:几个概念
1:路由器:
是连接因特网中的个局域网,广域网的设备,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号.
路由器又称网关设备是用于连接多个逻辑上分开的网络,所谓逻辑网络是代表一个单独的网络或者一个子网,当数据从一个子网传输到另一个子网时,可通过路由器的路由功能来完成.因此,路由器具有潘丹网络地址和选择IP路径的功能,它能在多个网络互联的环境中,简历灵活的连接,可用完全不同的数据分组和介质访问方法连接各种网络,路由器只接受受源站或其他路由器的信息,属于网络层的互联设备.
2:路由表
是指路由器或者其他互联网的网络设备上存储的一张信息表, 该表中存有到达特定网络终端的路径,在某些情况下,还有一些与这些路径相关的度量。
lLinux下查看路由设备
Destination:是目的网络地址
Genmask:是子网掩码
Gateway:是下一条地址
Iface是发送接口
Flags中的U标志表示此条目有效,G标志表示此条目的下一条地址是某个路由器的地址,没有G标志的条目表示目的网络地址是与本机接口直接相连的网络,不必经路由转发,因此下一条地址地址处记为*号.如果发送数据包的目的地址是192.168.0.0根第一韩的子网掩码做与运算得到192.168.0.0与第一行的目的网络地址相符.因此从etho接口发送出去,.如果要发送的数据包的目的地址跟前面库右边条目不匹配,那么就要按照缺省路由条目,从eth0接口发出去,首先发往192.168.0.1路由器,在让路由器根据它的路由表决定下一跳地址.
二:常见的路由表的生成算法
1:向量-距离算法
路由器周期性地向其相邻路由器广播自己知道的路由信息,用以通知相邻路由器自己可以到达的网络以及到达该网络的距离.相邻路由器可以根据收到的路由信息修改和刷新自己的路由表
优点:算法简单,易于实现
缺点:是慢收敛问题,路由器的路径变化需要像波浪一样从相邻路由器传输出去,过程缓慢
给个例子:
已知路由器R6有表1所示的路由表,现在收到相邻路由表R4发来路由更新消息,如表2所示.试更新路由器R6的路由表.
表1:
表2:
先把表2中距离都加1,并把下一跳路由器都改为R4,得到表3
表3和表1做比较.
第一行在表1中没有,因此把这一行添加到表1中,
第二行的Net2在表1中有,且下一跳路由器也是R4,因此要更新
第三行的Net3在表1中有,但是下一条路由器不用,于是就要比较距离,新的路由信息的距离是2,小于原来表中的4,因此要更新
更新后的R6 的路由表如下所示:
2:链路-状态算法
也叫最短路径优先算法(LS),它的思路是:
(1):路由器向相邻路由器发送查询报文,测试它和相邻路由器的链路状态,如果可以收到相邻路由器发回的相应,说明该路由器和相邻路由器可以正常通信
(2):收到该路由器和其他相邻路由器的链路状态后,还向系统找那个所有参加最短路径优先算法的路由器发送链路状态报文
(3):个路由器收到其他路由器发送的链路状态后,根据报文中的数据刷新本路由保存的网络拓扑结构图.如果链路发生变化,路由器将采用Dijkstra算法生成新的最短路径优先数并刷新路由表.
3:Dijkstra算法( 又叫狄克斯特拉算法)
(1):路由器建立一张网络图,并且确定源节点和目的节点,我们假定为V1和V2,然后路由器建立一个矩阵. 称”邻接矩阵”.在这个矩阵中,各矩阵元素表示权值,如[i,j]是节点之间链路权值如果节点Vi和节点VJ之间没有链路直接相连,它们的权值设为”无穷大”
(2)路由器为网络中每一节点建立一组状态记录.次记录包括三个字段
前序字段–表示当前节点之前的节点
长度字段–表示从源节点到当前节点的权值之和
标号字段–表示节点的状态.每个节点都处于一个状态模式:”永久”或”暂时”
3:路由器初始化(所有节点的)状态记录集参数,将它们的长度设为”无穷大”,标号设为”暂时”
4:路由器设置一个T节点.例如,如果设V1是源T节点,路由器将V1的标号更改为”永久”,当一个标号更改为”永久”后,它讲不再改变,一个T节点仅仅是一个代理而已
5:路由器更新与源T节点直接相连的所有暂时性节点的状态记录集
6: 6、路由器在所有的暂时性节点中选择距离V1的权值最低的节点。这个节点将是新的T节点。
7、如果这个节点不是V2(目的节点),路由器则返回到步骤5。
8、如果节点是V2,路由器则向前回溯,将它的前序节点从状态记录集中提取出来,如此循环,直到提取到V1为止。这个节点列表便是从V1到V2的最佳路由。