一、路由和路由算法简介:
路由就是通过互连的网络把信息从源地址传送到目的地址的活动。路由发生在OSI网络参考模型的第三层即网络层。
路由引导封包转送,经过一些中间的节点后,到达目的地。把该功能做成硬件的话称为路由器。路由通常根据路由表来引导封包转送。因此为了有效率的转送封包,建立存储在路由器内存的路由表是非常重要的。路由与桥接的不同在于,路由假设地址相似的结点距离相近。这使得路由表中的一项纪录可以表示到一组地址的路径。
二、路由的基本原理:
1、路由的内涵:
路由包含两个基本动作:确定最佳路径和通过网络传输信息。
(1)路径选择:metric是路由算法用已确定到达目的地最佳路径的计量标准,如路径长度。路由算法根据许多信息来填充路 由表,目的/下一跳地址对告知路由器到达目的的最佳方式是把分组发送给代表 “下一跳” 的路由器,当路由器收到一个分 组,他就检查其目标地址,尝试将此地址与其 “下一跳” 相联系。
(2)交换:交换算法相对比较简单,对于大多数路由协议而言是相同,多数情况下,某主机向另一个主机发送数据,通过某 些方法获得路由器地址后,源主机发送指向该路由器的物理地址的数据包,其协议地址指向目的主机。
2、路由算法的基本类型:
(1)静态与动态:静态算法严格意义很难算得上是算法,只不过是开始路由器前由网管建立的表映射。此算法容易设计,在 网络通信可预测及简单的网络中工作的很好,但不能适应网络状态变化。 动态路由算法可以适当的以静态算法作为补充, 可适应网络状态变化但开销大、复杂。
(2)单路径与多路径。
(3)平坦与分层.。
(4)主机智能与路由器智能。
(5)域内与域间。
(6)链接状态与距离向量。
三、几种常见的路由算法:
1、最短路径优先算法------Dijstra算法:
迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径。
它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。
基本思想
通过Dijkstra计算图G中的最短路径时,需要指定起点s(即从顶点s开始计算)。
此外,引进两个集合S和U。S的作用是记录已求出最短路径的顶点(以及相应的最短路径长度),而U则是记录还未求出最短路径的顶点(以及该顶点到起点s的距离)。
初始时,S中只有起点s;U中是除s之外的顶点,并且U中顶点的路径是"起点s到该顶点的路径"。然后,从U中找出路径最短的顶点,并将其加入到S中;接着,更新U中的顶点和顶点对应的路径。 然后,再从U中找出路径最短的顶点,并将其加入到S中;接着,更新U中的顶点和顶点对应的路径。 ... 重复该操作,直到遍历完所有顶点。
操作步骤
(1) 初始时,S只包含起点s;U包含除s外的其他顶点,且U中顶点的距离为"起点s到该顶点的距离"[例如,U中顶点v的距离为(s,v)的长度,然后s和v不相邻,则v的距离为∞]。
(2) 从U中选出"距离最短的顶点k",并将顶点k加入到S中;同时,从U中移除顶点k。
(3) 更新U中各个顶点到起点s的距离。之所以更新U中顶点的距离,是由于上一步中确定了k是求出最短路径的顶点,从而可以利用k来更新其它顶点的距离;例如,(s,v)的距离可能大于(s,k)+(k,v)的距离。
(4) 重复步骤(2)和(3),直到遍历完所有顶点。