【计算机网络笔记】路由算法之链路状态路由算法

系列文章目录

什么是计算机网络?
什么是网络协议?
计算机网络的结构
数据交换之电路交换
数据交换之报文交换和分组交换
分组交换 vs 电路交换
计算机网络性能(1)——速率、带宽、延迟
计算机网络性能(2)——时延带宽积、丢包率、吞吐量/率
计算机网络体系结构概念
OSI参考模型基本概念
OSI参考模型中非端-端层(物理层、数据链路层、网络层)功能介绍
OSI参考模型中端-端层(传输层、会话层、表示层、应用层)功能介绍
TCP/IP参考模型基本概念,包括五层参考模型
网络应用的体系结构
网络应用进程通信
网络应用对传输服务的需求
Web应用之HTTP协议(涉及HTTP连接类型和HTTP消息格式)
Cookie技术
Web缓存/代理服务器技术
传输层服务概述、传输层 vs. 网络层
传输层——多路复用和多路分用
传输层——UDP简介
传输层——可靠数据传输原理之Rdt协议
传输层——可靠数据传输之流水线机制与滑动窗口协议
传输层——TCP特点与段结构
传输层——TCP的可靠数据传输
TCP连接管理(图解三次握手和四次挥手)
传输层——拥塞控制原理与解决方法
TCP的拥塞控制机制
网络层服务与核心功能
网络层服务模型——虚电路网络
网络层服务模型——数据报网络
Internet网络的网络层——IP协议之IP数据报的结构
IP分片
IP编址与有类IP地址
IP子网划分与子网掩码
CIDR与路由聚合
DHCP协议
网络地址转换(NAT)
ICMP(互联网控制报文协议)
IPv6简介


  • 系列文章目录
  • 网络抽象
  • 路由算法分类
  • 链路状态路由算法
    • 说明
    • 示例


网络抽象

我们可以将网络抽象为一个图。图是由一些结点和边构成的拓扑结构。图的抽象在网络领域应用很广泛。

在这里插入图片描述

  • 图: G = (N, E)

  • 网络中的路由器会被抽象为图中的结点。N = 路由器集合= { u, v, w, x, y, z }

  • 路由器之间的链路抽象为图中的边。E = 链路集合 ={ (u,v), (u,x), (v,x), (v,w), (x,w), (x,y), (w,y), (w,z), (y,z) }

  • 权值代表网络中链路的费用或者说距离、代价。描述了这个链路的成本大小。比如图中的c(w, z) = 5

我们在描述一个路径的费用的时候,就是从源到目的经过的每段链路的费用之和。一般原则是费用越小,路径越好。所以在路由的过程中,关键问题就是源到目的(如u到z)的最小费用路径是什么。为了解决这样的问题,需要网络中每个路由器运行路由算法即寻找最小费用路径的算法。

路由算法分类

对于不同的分类标准,分类是不一样的。

  • 静态路由 vs 动态路由?
    • 静态路由:即手工配置的路由。这种路由更新慢,但是优先级高
    • 动态路由:基于某些路由算法动态地计算而来。这种路由更新快,可以实现定期更新。优点在于能够及时响应链路费用或网络拓扑变化
  • 全局信息 vs 分散信息?
    • 全局信息:路由算法或路由协议进行计算的时候需要掌握完整的网络拓扑和链路费用信息。换句话说掌握那张抽象的图。最具代表性也是被广泛使用的是链路状态(LS)路由算法
    • 分散(decentralized)信息:路由器只掌握物理相连的邻居以及链路费用,在这个基础上通过邻居间信息交换和多次的迭代计算以后,就可以找到到达目的网络最佳的路由信息。比如距离向量(DV)路由算法

链路状态路由算法

说明

链路状态路由算法基于Dijkstra(迪杰斯特拉) 算法来设计。

首先需要考虑的问题就是结点如何掌握整张图和链路费用。那就要求每个路由器构造一个链路状态分组然后广播出去,这个分组包括这个路由器与之相连的所有邻居路由器的ID,以及与这些路由器直接相连的链路的费用。这样任何一个路由器最后都会集齐网络中所有结点广播的链路状态分组,然后路由器就可以基于这些信息构造网络完整的拓扑和费用信息。这样每一个路由器就可以基于它所构造的网络这张图去求最短路径了。

通过Dijkstra 算法,k次迭代后,就能得到到达k个目的结点的最短路径

这里给出Dijkstra 算法需要用到的一些符号及其含义:

  • c(x,y) : 结点x到结点y链路费用;如果x和y不直接相 连,则为∞
  • D(v) : 从源即计算结点到目的v的当前路径费用值。注意不一定是最短的
  • p(v) : 沿从源到v的当前路径,v的前序结点
  • N’ : 已经找到最小费用路径的结点集合

下面来看一下这个算法的伪代码:

在这里插入图片描述

示例

通过一个例子看一下这个过程:

在这里插入图片描述

  • 初始化,从u结点开始。v、w、x都与u相邻,所以它们的D值和p都能够准确确定。而y、z与u不相邻,记为∞

    在这里插入图片描述

  • 进入循环。目前除了u以外的结点都不在N‘ 中,并且D(w)是最小的,所以将w加入N‘ 中。然后更新w的所有邻居。可以看到,到达v的路径费用原先是7,如果通过w到达v就是6,以此类推更新与w相邻的结点路径的费用

    在这里插入图片描述

  • 以此类推,经过5次迭代就找到了从u到其他结点的最短路径。这里u到v的最短路径大小是6,到w是3,到x是5……

    在这里插入图片描述

下面再看一个例子:

在这里插入图片描述

大家可以自行计算一下。最终u就可以获得一个最短路径树:

在这里插入图片描述

然后将这个树反映在转发表中。比如这个例子中,如果要把数据送到v,就从(u,v)这条链路发送,而发向x、y、w、z的数据都要从(u,x)这条链路发送。

在这里插入图片描述

但是使用链路状态路由算法可能会产生震荡(oscillations)现象。因此使用这种算法的路由协议往往会采用一些机制去避免这种现象的发生。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/152921.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++二分算法:找到最接近目标值的函数值

本文涉及的基础知识点 二分查找算法合集 题目 Winston 构造了一个如上所示的函数 func 。他有一个整数数组 arr 和一个整数 target ,他想找到让 |func(arr, l, r) - target| 最小的 l 和 r 。 请你返回 |func(arr, l, r) - target| 的最小值。 请注意&#xff0c…

基于 Junit 的接口自动化测试框架实现!

分层的自动化测试 5~10 年前,我们接触的自动化测试更关注的是 UI 层的自动化测试,Mercury 的 WinRunner/QTP 是那个时代商业性自动化测试产品的典型代表,在那个时代大家单纯想的都是能用一个自动化操作的工具替代人力的点击,商业…

【教3妹学编辑-mysql】详解数据库三大范式

什么是范式 简单地理解就是:数据库设计时遵循的规范 三大范式 数据库三大范式包含:1、第一范式(1NF);2、第二范式(2NF);3、第三范式(3NF)。其中,第一范式(1NF)的要求是属性不可分割,第二范式(2NF)的要求是…

Java基础-----正则表达式

文章目录 1.简介2.目的3.学习网站4.常用匹配字符5.String类中用到正则表达式的方法 1.简介 又叫做规则表达式。是一种文本模式,包括普通字符和特殊字符(元字符)。正则使用单个字符来描述、匹配一系列某个句法规则的字符串,通常用…

[架构之路-247]:目标系统 - 设计方法 - 软件工程 - 结构化方法的基本思想、本质、特点以及在软件开发、在生活中的应用

目录 前言: 一、什么是非结构化方法 1.1 什么是非结构化方法 1.2 非结构化方法的适用场合 二、什么是结构化方法 1.1 结构化方法诞生的背景:软件规模发展:大规模、复杂系统的需要 1.2 概述 1.3 主要特点与核心思想 三、结构化方法在…

【Web】Flask|Jinja2 SSTI

目录 ①[NISACTF 2022]is secret ②[HNCTF 2022 WEEK2]ez_SSTI ③[GDOUCTF 2023] ④[NCTF 2018]flask真香 ⑤[安洵杯 2020]Normal SSTI ⑥[HNCTF 2022 WEEK3]ssssti ⑦[MoeCTF 2021]地狱通讯 ①[NISACTF 2022]is secret dirsearch扫出/secret 明示get传一个secret ?…

Wireshark抓包:理解TCP三次握手和四次挥手过程

TCP是一种面向连接、端到端可靠的协议,它被设计用于在互联网上传输数据和确保成功传递数据和消息。本节来介绍一下TCP中的三次握手和四次挥手。 文章目录 1 TCP头部格式2 wireshark抓包分析2.1 SEQ和ACK2.2 三次握手2.3 四次挥手 3 程序 1 TCP头部格式 TCP头部占据…

【FPGA】Verilog:实现 RS 触发器 | Flip-Flop | 使用 NOR 的 RS 触发器 | 使用 NAND 的 RS 触发器

目录 0x00 RS 触发器(RS Flip-Flop) 0x01 实现 RS 触发器 0x02 使用 NOR 的 RS 触发器 0x03 使用 NAND 的 RS 触发器 0x00 RS 触发器(RS Flip-Flop) 触发器(Flip-Flop)是一种带有时钟的二进制存储设备…

C/C++多级指针与多维数组

使用指针访问数组 指针类型的加减运算可以使指针内保存的首地址移动。 指针类型加n后。首地址向后移动 n * 步长 字节。 指针类型减n后。首地址向前移动 n * 步长 字节。 步长为指针所指向的类型所占空间大小。 例如: int *p (int *)100;p 1,结果为首…

Autox.js和Auto.js4.1.1手机编辑器不好用我自己写了一个编辑器

功能有 撤销 重做 格式化 跳转关键词 下面展示一些 内联代码片。 "ui"; ui.layout( <drawer id"drawer"><vertical><appbar><toolbar id"toolbar"title""h"20"/></appbar><horizontal b…

Linux环境搭建(tomcat,jdk,mysql下载)

是否具备环境&#xff08;前端node&#xff0c;后端环境jdk&#xff09;安装jdk,配置环境变量 JDK下载 - 编程宝库 (codebaoku.com) 进入opt目录 把下好的安装包拖到我们的工具中 把解压包解压 解压完成&#xff0c;可以删除解压包 复制解压文件的目录&#xff0c;配置环境变量…

【opencv】debug报错HEAP CORRUPTION DETECTED

运行至第一句涉及矩阵运算的代码&#xff08;如cv::multiply&#xff09;时报错 HEAP CORRUPTION DETECTED: after Normal block (#45034) at 0x000001BDC586F0E0. CRT detected that the application wrote to memory after end of heap buffer.release下不会报错&#xff0…

PDF控件Spire.PDF for .NET【转换】演示:自定义宽度、高度将 PDF 转 SVG

我们在上一篇文章中演示了如何将 PDF 页面转换为 SVG 文件格式。本指南向您展示如何使用最新版本的 Spire.PDF 以及 C# 和 VB.NET 指定输出文件的宽度和高度。 Spire.Doc 是一款专门对 Word 文档进行操作的 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻…

MyBatis 快速入门

MyBatis 快速入门 前言什么是 MyBatis简介核心特性使用示例配置文件Mapper 接口SQL 映射文件使用 MyBatis 如果大家对以上的导读很懵怎么办&#xff01;没关系 往下阅读&#xff01; 1. MyBatis 介绍1.1. 什么是MyBatis1.2. 持久层1.3. 框架1.4. JDBC 弊端1.5.…

如何解决网站被攻击的问题:企业网络攻防的关键路径

在当今数字化时代&#xff0c;企业面临着不断升级的网络威胁&#xff0c;网站遭受攻击的风险也与日俱增。解决网站被攻击的问题对企业发展至关重要&#xff0c;不仅关系到企业的信息安全&#xff0c;也直接影响到企业的声誉和利益。从企业发展的角度出发&#xff0c;我们将探讨…

科技云报道:全球勒索攻击创历史新高,如何建立网络安全的防线?

科技云报道原创。 最简单的方式&#xff0c;往往是最有效的&#xff0c;勒索软件攻击就属于这类。 近两年&#xff0c;随着人类社会加速向数字世界进化&#xff0c;勒索软件攻击成为网络安全最为严重的威胁之一。今年以来&#xff0c;勒索软件攻击在全球范围内呈现快速上升态…

HDCTF2023 - Reverse方向全WP

文章目录 [HDCTF 2023]easy_re[HDCTF 2023]easy_asm[HDCTF 2023]fake_game[HDCTF 2023]enc[HDCTF 2023]double_code[HDCTF 2023]买了些什么呢[HDCTF2023]basketball [HDCTF 2023]easy_re UPX壳&#xff0c;脱壳 一个base64编码。 [HDCTF 2023]easy_asm ida打开后可以看到xor 10…

数据库管理工具,你可以用Navicat,但我选DBeaver!

大家好&#xff0c;我是豆小匠。数据库GUI工具哪家强&#xff0c;众人遥指Navicat。 可是Navicat老贵了。 如果公司有正版授权的还好&#xff0c;如果没有正版授权&#xff0c;还不给你用盗版&#xff0c;那才叫绝绝子。 好了&#xff0c;主角登场&#xff0c;DBeaver&#x…

基于安卓android微信小程序美容理发店预约系统app

项目介绍 为美容院设计一个系统以减少员工的工作量就成为了想法的初始状态。紧接着对美容院进行进一步的调查发现我的想法已然落后。基本上每个美容院都以有了自己的信息系统&#xff0c;并且做的已经较完善了。 在这时我突然想到&#xff0c;现在关注美容养生的人越来越多&am…

智能井盖传感器建设信息化时代智慧城市

近年来随着信息技术的快速发展和城市化进程的加速推进&#xff0c;智慧城市的概念逐渐成为现实。作为智慧城市生命线建设中的重要组成部分&#xff0c;智能井盖传感器的应用正在为城市的可持续发展和居民的生活质量提供新的解决方案。 智能井盖传感器能够实时监测井盖状态&…