5.3.3 因特网的路由协议(三)OSPF协议

news2024/12/24 3:28:13

5.3.3 因特网的路由协议(三)OSPF协议

前面我们学习了基于距离向量算法的路由信息协议RIP(5.3.2 因特网的路由协议(二)基于距离向量算法的RIP协议),为了克服RIP协议的局限性于是就有了新的内部网关协议OSPF协议,OSPF是Open Shortest Path First的缩写,又被成为开放式最短路径优先协议,最短路径优先是因为使用了Dijkstra提出的最短路径算法SPF,这个协议在选择路径的时候是基于链路的状态

一、链路状态

链路状态是指链路中一台路由器都和那些路由器相邻,以及该链路的带宽、延时、线路负荷等因素的综合,也就是说他会为每条链路去计算出它的代价,又称为Cost,综合考虑了链路状态以后OSPF将利用Dijkstra算法来选择最佳路径。

二、OSPF路由信息交换

我们知道在RIP中当前路由器只和邻居路由器去交换信息,而OSPF协议则不同,他会把链路的状态信息去通知自治系统中所有的路由器知道。那它又是如何去通知呢?其实OSPF采用的是一种洪泛法,所谓的洪泛法顾名思义就像洪水泛滥一样以当前路由器为中心把消息向四周传递,直到所有的路由器都得知了这个消息。下面我们来演示一下OSPF用洪泛法进行路由器间链路状态信息的交换的过程。

如图

路由信息交换

我们从图中看到是一个由路由器A、B、C、D四台路由器所连接形成的自治系统,经过初始化之后路由器A作为源路由器,根据洪泛法的规则,A首先将自身的链路状态信息传送给与它相邻的B与C,当然我们并没有把链路状态中所有包含内容写在上面,实际上应该还包含有与A相连的链路Cost(代价)是多少等等,B与C再将A传来的链路状态信息与自己相邻的路由器D,这样的过程就是利用洪泛法进行链路状态信息交换的过程。当网络中路由器全部相互交换过链路状态以后,OSPF会使每台路由器根据链路状态生成本自治系统的一个拓扑结构,并且也知道自己在拓扑结构中的哪个位置。图中每个方框标记的就是每个路由器在自治系统中的位置。

三、OSPF协议特点

  1. OSPF对不同的链路可以根据链路的带宽等因素设置成不同的代价,在选择走那条路的时候它不像RIP一样去选择一条经过路由器数量最少的路,而是选择了一条总的代价最低的路。
  2. 特殊情况是,如果两条路相同的情况下OSPF协议会把数据报平均分配给这两条路径,也就是说OSPF可以实现多路径间的负载平衡。
  3. 当和某个路由器相邻的链路状态发生变化的时候当前路由器会采用洪泛法去通知所有的路由器去知道这个消息。
  4. OSPF规定每隔一段时间比如30分钟就会刷新一次数据库中的链路状态。
  5. OSPF与RIP相比最大的优点就是当互联规模很大的时候由于OSPF是基于链路状态所以他只会涉及到与相邻路由器的连通的状态,而与整个互联网的规模并没有直接的关系,也解决了RIP协议解决不了的难题。

实际上如果说自治系统的规模也就是网络数量比较多的情况下,在OSPF中还可以划分成若干个区域(Area)

如图

区域

在图中的自治系统中划分了4个区域,其中周围的三个是一般的区域,中间部分是主干区域。这样做的好处是把采用洪泛法去通知链路状态的范围缩小到了一个区域内的所有的路由器。每个区域内的路由器只知道本区域的拓扑结构。区域和区域之间的路由选择是通过区域边界路由器R3、R4、R7和主干区域的路由器来完成的。

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

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

相关文章

30行代码实现通用无限列表函数

前言: 前两天接到了一个需求,主要功能是实现类似于 B站 消息页面的那种效果,右侧几个 tab 都需要使用到无限加载的功能。 大家都知道,程序员是很懒的,不可能这几个页面全都写一遍重复的逻辑。所以在接到这个需求的时…

HBuilder连接手机模拟器调试,进行抓包

hbuilder连接手机模拟器 1.adb是什么?引用 2. 进行adb路径设置,选中模拟器中的adb路径,配置好端口,夜神模拟器端口:62001 3.运行到Andriod基座 在HBuilder连接模拟器过程中,对接口进行抓包 1.安装抓包工…

Spring Security --- 自定义Filter

简介任何 Spring Web 应用本质上只是一个 servletSecurity Filter在 HTTP 请求到达你的 Controller 之前过滤每一个传入的 HTTP请求Filter请求过滤器可以帮助进行HttpServletRequest请求和HttpServletResponse响应的过滤在自定义的Filter过滤器中可以对请求进行过滤&#xff0c…

控制并发流程,做好线程间的协调

一、概述 1. 什么是控制并发流程? 线程一般是由线程调度器自动控制的,但有些场景需要按照我们程序员的意愿去实现多线程之间相互配合,从而满足业务逻辑。比如: 让线程A等待线程B执行完后再执行等一些相互合作的逻辑&#xff1b…

【表面缺陷检测】基于yolov5的钢轨表面缺陷检测(附代码和数据集,Windows系统)

写在前面: 首先感谢兄弟们的订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 路虽远,行则将至;事虽难,做则必成。只要有愚公移山的志气、滴水穿石的毅力,脚踏实地,埋头苦干,积跬步以至千里,就…

python打包后报错,无法启动,电脑缺少api-ms-win-core-path-11-1-0.dll

参考:《运行打包python程序时报:无法启动此程序,因为计算机中丢失 api-ms-win-core-path-l1-1-0.dll 尝试重新安装该程序以解决此问题。》 原因:python版本较高,打包时的python版本是python3.10,而运行打包…

mdBook介绍及使用——使用 Markdown 创建你自己的博客和电子书

目录 介绍一、下载与创建项目1.下载2.初始化3.结构说明 二、编写文章与启动1.编写文章2.构建3.启动 mdbook 服务 三、其他配置 介绍 mdBook 是一个使用 Markdown 创建书籍的命令行工具。它非常适合创建产品或 API 文档、教程、课程材料或任何需要清晰、易于导航和可定制的演示…

LED开关电源里的PCB回路设计应该怎么做?

LED开关电源的研发速度在最近几年中有了明显的技术飞跃,新产品更新换代的速度也加快了许多。作为最后一个设计环节,PCB的设计也显得尤为重要,因为一旦在这一环节出现问题,那么很可能会对整个的LED开关电源系统产生较多的电磁干扰&…

界面控件DevExtreme UI组件——增强的自定义功能

在本文中,我们将回顾DevExtreme UI组件在v22.2版本主要更新中一系列与自定义相关的增强。 DevExtreme拥有高性能的HTML5 / JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NET Core&#x…

6、微服务组件openfeign

1、在消费端的项目中引入openfeign依赖 首先需要确保引入了springcloud&#xff0c;因为openfeign依赖与springcloud 在消费端的pom.xml中引入openfeign&#xff0c;父项目中已经引入了springcloud了 <?xml version"1.0" encoding"UTF-8"?> <…

行云创新CloudOS助力蜂巢能源获中国信通院2023云原生应用优秀案例奖

2023 年 6 月 6 日&#xff0c;工业和信息化部主办的ICT 中国高层论坛-云原生产业高峰论坛成功举办&#xff0c;活动期间&#xff0c;中国信通院发布了“2023云原生应用优秀案例奖”获奖名单。其中&#xff0c;蜂巢能源作为中国新能源行业的代表之一&#xff0c;凭借其基于行云…

IKEA EDI项目开源介绍

近期为了帮助广大用户更好地使用 EDI 系统&#xff0c;我们根据以往的项目实施经验&#xff0c;将成熟的 EDI 项目进行开源。用户安装好知行之桥EDI系统之后&#xff0c;只需要下载我们整理好的示例代码&#xff0c;并放置在知行之桥指定的工作区中&#xff0c;即可开始使用。 …

一次 Nacos 导致的 CPU 飙高问题完整复盘

今天下午突然 出现 测试环境 cpu飙高&#xff0c;干到了 60%&#xff0c;其他项目 响应时间明显变长。。。有点吓人&#xff0c;不想背锅 项目背景 出问题的项目是 需要连接各个不同nacos 和不同的 namespace 进行对应操作的 一个项目&#xff0c;对nacos的操作都是httpClien…

【工具】Maven加强版 — mvnd的使用

【工具】Maven加强版 — mvnd的使用 下载 Releases apache/maven-mvnd (github.com) 选对应的版本 我用的Windows版 1、安装 直接解压。 然后配置环境变量&#xff1a;将 bin 目录添加到 PATH 2、测试 打开CMD终端&#xff0c;输入 mvnd -v 可以看到如下信息表示安装成…

Linux入侵检测学习笔记2

查看异常流量&#xff1a; iftop&#xff1a;动态显示网络接口流量信息&#xff1a; iftop工具是一款实时流量监控工具&#xff0c;可用于监控TCP/IP连接等&#xff0c;必须以root用户的身份运行。 安装方法&#xff1a; yum install -y epel-release yum install -y iftop…

云服务器docker方式部署JAVA微服务

党建后端java微服务部署步骤&#xff08;采用docker部署&#xff09; 开通dua 开通端口号&#xff1a;8848、6379、8000 - 8010、9848、9849 step1&#xff1a;安装必要的一些系统工具 sudo apt-get update sudo apt-get install ca-certificates curl gnupg step2&#xff1a…

Spark SQL典型案例

文章目录 一、实现任务1、准备数据文件2、创建Maven项目3、修改源程序目录4、添加依赖和设置源程序目录5、创建日志属性文件6、创建HDFS配置文件7、创建词频统计单例对象 一、实现任务 1、准备数据文件 在/home目录创建words.txt hello scala world hello spark world scala…

使用 docker 搭建 mongodb 6 单节点副本集

1、拉取 mongodb 镜像 docker pull mongo 2、启动一个 mongodb 的容器&#xff0c;通过副本集的形式运行 docker run --name mongoRs -d -p 27017:27017 mongo --replSet rs0 --name 创建容器的名称。 自定义 -d 以守护进程方式启动容器 -p 2701:27017&#xff1a;MongoD…

Dockerfile 使用介绍

我们使用 Dockerfile 定义镜像&#xff0c;依赖镜像来运行容器&#xff0c;因此 Dockerfile 是镜像和容器的关键&#xff0c;Dockerfile 可以非常容易的定义镜像内容&#xff0c;同时在我们后期的微服务实践中&#xff0c;Dockerfile 也是重点关注的内容&#xff0c;今天我们就…

Android系统的问题分析笔记(9) - Android 中的 Uri 如何使用呢 ?

问题 Android 中常用的 uri 如何使用呢 &#xff1f;&#xff08;此篇分析基础为Android 7.1.1系统源码&#xff09;&#xff0c;参看Android官方说明&#xff1a;https://developer.android.com/reference/android/net/Uri&#xff0c;代码可在此查看&#xff1a;https://git…