网络层核心:路由和路由生成算法

本文介绍了网络层的路由概念及其基本原理,包括路由的两个基本动作:确定最佳路径和通过网络传输信息。重点讲解了Dijkstra算法,这是一种用于计算最短路径的典型算法,通过广度优先搜索逐步扩展找到从起点到所有其他顶点的最短路径。文中还提到了扩散算法和距离向量路由算法,并提供了查看Linux内核路由表的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、路由和路由算法简介:

路由就是通过互连的网络把信息从源地址传送到目的地址的活动。路由发生在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),直到遍历完所有顶点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值