当前位置: 首页 > news >正文

网络通信——OSPF协议(基础篇)

这里基础是因为没有讲解OSPF中的具体算法过程,以及其中很多小细节。后续会更新。

目录

一.OSPF的基础信息

二.认识OSPF中的Router ID 

 三.OSPF中的三张表

四.OSPF中的度量方法(计算开销值)

五. OSPF选举DR和BDR(就是这个区域的老大和老二)

(1)首先我们需要知道在OSPF中为什么需要这个DR和BDR。

(2)如何选举DR和BDR 

(3) 区分选举Router ID和选举DR/BDR

六. OSPF邻接建立过程(五种数据包,七中状态过程)

(1)五种数据包

(2)OSPF的Hello包(这个hello包的作用)

(3)OSPF的建立过程 


一.OSPF的基础信息

OSPF的链路类型:链路状态路由协议

注意:距离矢量协议(如RIP)不同,OSPF使用链路状态算法,所有路由器都有相同的网络拓扑视图,从而计算出最短路径。可以说是RIP的超级升级版本。

OSPF是由IETF开发链路(邻居路由器的线路 )状态(ip地址,子网掩码) 路由协议

采用SPF算法(Dijkstra算法)计算到达目的地最短路径

链路(link)——路由器接口

状态(state)——描述接口及邻居路由器之间的关系

二.认识OSPF中的Router ID 

首先R1开始只知道直连的网段(10,20,30),相互交换,通过路由学习,放在链路状态数据库。当链路收敛时,每个路由器都对网络有个完整的认识。每个路由器都有一个编号,表示路由器本身,叫Router ID 

Router ID(RID):是OSPF区域内唯一标识一台路由器的IP地址

重点:Router ID 选取规制

1.手动自己用命令选定的Router ID,最优先

2.路由器上的回环地址(就是虚拟接口的ip    eg:-int  l0)

3.活动的物理接口最大的IP地址为Router ID

 三.OSPF中的三张表

1.邻居表

列出本地路由器全部的已经建立邻接关系的邻居路由器信息

2.链路状态数据库(LSDB)LSA:链路状态信息

列出网络中所有的路由器的信息,有一个完整的网络拓扑认识

3.路由表

通过SPF算法,计算出到达每个网络的最佳路径。

四.OSPF中的度量方法(计算开销值)

之前的RIP的开销值是通过条数决定,这其实是有局限性的,由于是根据条数,如果说这条链路的宽带一条是100M(条数为2),另外一条是200M(条数为3)。由于RIP根据条数决定优先路线,导致流量会走100M这条路线,但其实最优的应该是200M。这就是RIP其中的局限性。

为了解决这个问题,OSPF的度量值计算要更加科学合理。

Metric    Cost= 参考带宽(10^8b/s=100mb)/   接口带宽     (<1的Cost=1);

OSPF协议的最短路径就是基于路由器的每一个接口指定的开销(cost)置计算出来的;

一条路由的开销:是指沿着到达目的网络的路由路径上的所有出站接口的开销之和

五. OSPF选举DR和BDR(就是这个区域的老大和老二)

DR(Designated Router)指定路由器

BDR(Backup DR)备用指定路由器(当老大DR挂掉的时候,BDR就会接任DR的位置)

DRother(除了DR和BDR的其他路由器)

(1)首先我们需要知道在OSPF中为什么需要这个DR和BDR。

DR的作用:多路访问中减少邻接关系;

BDR其到备份的作用(备胎)

 上面是一个简单的网络拓扑,我前面也讲了由于OSPF协议最优路径是通过STP算法进行的计算,既然是计算,肯定是需要参数的,这里参数就是通过数据包进行传递,如果说没有DR和BDR,想要让这个区域的路由器知道整个的网络拓扑,意味着,一个路由器,会将自己的路由信息发送给除它外其他的路由器,这样意味着整个网络中会充斥这个数据包,影响网络效率。

为了解决这个问题,就在这个区域选举DR和BDR这两个话事人,DRother们只需要于DR和BDR说就行,再通过DR和BDR汇众之后,同一发给DRother们,这样大大减少了网络中的数据包。

(2)如何选举DR和BDR 

通过组播发送Hello包 

1.具有最高OSPF优先级(路由器的接口优先级(越大越优先)(默认情况下是1(范围0~255)))的路由器会选为DR

2.若最高OSPF优先级相同,那具有最高Router ID的路由器选为  DR

组播地址

224.0.0.5    DRother和DR,BDR之间通信(员工与管理员一起的群)

224.0.0.6    DR和BDR通信(管理员们的群)

(3) 区分选举Router ID和选举DR/BDR

Router ID:这个区域中,路由器的标识号ID,也就是你的身份证号。

DR和BDR:这个区域中,管理者,类似你工作的工位号。

所以说是两个不同的概念。

六. OSPF邻接建立过程(五种数据包,七中状态过程)

(1)五种数据包

Hello数据包:用于邻居或邻接之间建立和维护邻居关系,10秒周期  40(4倍关系)秒死亡 这里10秒可以更改

DBD-数据库描述包:(相当于书本目录) 每台OSPF路由器的LSDB的信息,写了每个网段。

LSR-数据链路请求:请求OSPF邻居的链路状态信息。比方说路由器A收到路由器B发送的DBD包,拆开发现没有10.0.0.0这个网段,路由器A就会发送LSR包 给路由器B。

LSU-链路状态更新包:传SA(包含一条或多条给邻居) 比方说路由器B收到LSR请求包,路由器B就会发送这个LSU包给路由器A,这个包就具体的网段内容。

LSAck-链路状态确认包:回应并确认收到对方的LSU包中的LSA。

(2)OSPF的Hello包(这个hello包的作用)

1.OSPF的邻接关系的建立和维护依赖于Hello包

2.Hello包的发送周期与OSPF类型有关

3.管理Hello包交换的规则是Hello协议

4.Hello用来确定DR,BDR路由器的选择

(3)OSPF的建立过程 

首先路由器A,和B启动,此时是第一个状态down state状态 。

接着路由器A发送Hello包给路由器B,告诉它路由器A的Router ID。此时是init state状态。

然后路由器B发送Hello包给路由器A,告诉它路由器B的Router ID。此时由init状态变成了Twoway state 状态。此时邻居关系建立(不是邻接关系)

接下来进入exstart state状态(涉及到DBD包,商量哪一个是老大,谁先发)

这里路由器A先发送一个没有具体信息的DBD包给路由器B,路由器B收到之后,返回一个DBD给路由器A,意思就是说我的优先级比你大,我先发,所以后面发送具体的DBD包由路由器B先发送。

紧接着来到exchange state 状态

这里有时交换详细的DBD包,只不过由优先级高的先发,比如这里路由器B先发,都收集到对方的链路数据状态后。

进入到loading state状态

比如说路由A发现这段链路信息没有,于是就发送LSR包给路由器B,请求此路由信息,路由器B接收到这条信息之后,发送LSU返还给路由器A,最后路由器A接收到后,返还Lsack包过去表示说我接收了。

最后进入Full state 状态

邻接建立成功,链路收敛,进行SPF算法,计算最优的路由。

相关文章:

网络通信——OSPF协议(基础篇)

这里基础是因为没有讲解OSPF中的具体算法过程&#xff0c;以及其中很多小细节。后续会更新。 目录 一.OSPF的基础信息 二.认识OSPF中的Router ID 三.OSPF中的三张表 四.OSPF中的度量方法&#xff08;计算开销值&#xff09; 五. OSPF选举DR和BDR&#xff08;就是这个区域…...

Kubernetes从零到精通(15-安全)

目录 一、Kubernetes API访问控制 1.传输安全(Transport Security) 2.认证(Authentication) 2.1 认证方式 2.2 ServiceAccount和普通用户的区别 2.3 ServiceAccount管理方式 自动ServiceAccount示例 手动ServiceAccount示例 3.鉴权 (Authorization) 3.1鉴权方式 3.2 …...

《蓝桥杯算法入门》(C/C++、Java、Python三个版本)24年10月出版

推荐&#xff1a;《算法竞赛》&#xff0c;算法竞赛大全书&#xff0c;网购&#xff1a;京东 天猫  当当 文章目录 《蓝桥杯算法入门》内容简介本书读者对象作者简介联系与交流《蓝桥杯算法入门 C/C》版目录 《蓝桥杯算法入门 Java》版目录 《蓝桥杯算法入门 Python》版目录 …...

Soar项目中添加一条新的SQL审核规则示例

soar是一个开源的SQL规则审核工具&#xff0c;是一个go语言项目&#xff0c;可以直接编译构建成一个可执行程序&#xff0c;而且是一个命令行工具&#xff0c;我们可以利用archey来调用soar进行sql规则审核以及sql的分析&#xff0c;包括执行计划的查看及sql建议等。 soar中已…...

RISC-V开发 linux下GCC编译自定义指令流程笔记

第一步&#xff1a;利用GCC提供了内嵌汇编的功能可以在C代码中直接内嵌汇编语言 第二步&#xff1a;利用RSIC-V的中的.insn模板进行自定义指令的插入 第三步&#xff1a;RISC-V开发环境的搭建 C语言插入汇编 GCC提供了内嵌汇编的功能可以在C代码中直接内嵌汇编语言语句方便了…...

java代码是如何与数据库通信的?

Java代码与数据库通信的过程主要通过Java Database Connectivity&#xff08;JDBC&#xff09;来实现。JDBC是Java与数据库之间的标准接口&#xff0c;提供了用于执行SQL语句和处理数据库结果的API。以下是Java代码与数据库通信的详细步骤&#xff1a; 一、导入JDBC库 在Java…...

gateway--网关

在微服务架构中&#xff0c;Gateway&#xff08;网关&#xff09;是一个至关重要的组件&#xff0c;它扮演着多种关键角色&#xff0c;包括路由、负载均衡、安全控制、监控和日志记录等。 Gateway网关的作用 统一访问入口&#xff1a; Gateway作为微服务的统一入口&#xff0c…...

北京数字孪生工业互联网可视化技术,赋能新型工业化智能制造工厂

随着北京数字孪生工业互联网可视化技术的深入应用&#xff0c;新型工业化智能制造工厂正逐步迈向智能化、高效化的全新阶段。这项技术不仅实现了物理工厂与数字世界的精准映射&#xff0c;更通过大数据分析、人工智能算法等先进手段&#xff0c;为生产流程优化、资源配置合理化…...

土地规划与区域经济发展:筑基均衡未来的战略经纬

在新时代背景下&#xff0c;土地规划不仅是空间布局的艺术&#xff0c;更是推动区域经济均衡发展的关键引擎。土地资源的合理配置对于激发区域潜能、促进经济结构优化有着重要意义。本文将深入剖析土地规划如何成为促进区域经济均衡发展的强大动力。 一、土地规划与区域经济的…...

wsl(2) -- ubuntu24.04配置

1. 常用脚本及别名配置 修改的文件内容参考另一篇文章常用bash脚本。 修改~/.bashrc&#xff0c;在文件末尾追加以下内容。 # Add by user export MYTOOLS$HOME/tools export MYBINS$HOME/bin # 系统中其他地方已经添加过了&#xff0c;暂不清楚是哪里添加的 #export PATH$M…...

python快速搭建https服务器

本文介绍了在ubuntu操作系统上搭建https服务器的过程 在一台连接到网络的主机上搭建https服务器&#xff0c;假设该主机的ip地址为&#xff1a;10.98.69.174 创建证书example.crt和私钥example.key openssl req -newkey rsa:2048 -nodes -keyout example.key -x509 -days 365…...

网络原理3-应用层(HTTP/HTTPS)

目录 DNSHTTP/HTTPSHTTP协议报文HTTP的方法请求报头、响应报头(header)状态码构造HTTP请求HTTPS 应用层是我们日常开发中最常用的一层&#xff0c;因为其他层&#xff1a;传输层、网络层、数据链路层、物理层这些都是操作系统和硬件、驱动已经实现好的&#xff0c;我们只能使用…...

JVM(HotSpot):堆空间(Heap)以及常用相关工具介绍

文章目录 一、内存结构图二、堆的定义三、堆内存溢出四、堆内存排查工具 一、内存结构图 二、堆的定义 1、通过new关键字创建的对象&#xff0c;都会放到堆空间中。 2、它是线程共享的&#xff0c;堆中的对象都要考虑线程安全问题。 那有同学肯定会问&#xff0c;方法内通过n…...

【Python语言初识(六)】

一、网络编程入门 1.1、TCP/IP模型 实现网络通信的基础是网络通信协议&#xff0c;这些协议通常是由互联网工程任务组 &#xff08;IETF&#xff09;制定的。所谓“协议”就是通信计算机双方必须共同遵从的一组约定&#xff0c;例如怎样建立连接、怎样互相识别等&#xff0c;…...

使用root账号ssh登录虚拟机ubuntu

在C:\Users\Administrator\.ssh目录下的config中&#xff0c;添加ubuntu会在根目录中&#xff0c;建立一个root文件夹。在该文件夹中建一个.ssh目录。像免密登录ubuntu设置中&#xff0c;把公钥考进去。在vscode中打开文件夹中选择要打开的文件夹&#xff0c;就可以不需要在ubu…...

五子棋双人对战项目(1)——WebSocket介绍

目录 一、项目介绍 如何实现实时同步对局&#xff1f; 二、WebSocket 1、什么是WebSocket&#xff1f; 2、WebSocket的报文格式 opcode payload len payload data 3、WebSocket握手过程 4、WebSocket代码的简单编写 三、WebSocket 和 HTTP的关系 1、相同点&#xf…...

rabbitMq------信道管理模块

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言信道管理的字段申明/删除交换机申明/删除队列绑定/解绑消息的发布消息确认订阅队列取消订阅信道内存管理类打开信道关闭信道/获取指定信道 总结 前言 信道是在…...

如何只用 CSS 制作网格?

来源&#xff1a;how-to-make-a-grid-like-graph-paper-grid-with-just-css 在看 用于打印到纸张的 CSS 这篇文章时&#xff0c;对其中的网格比较好奇&#xff0c;作者提供了 stackoverflow 的链接&#xff0c;就看到了来源的这个问题和众多回复。本文从里面挑选了一些个人比较…...

Linux安装RabbitMQ安装

1. RabbitMQ介绍 1.1 RabbitMQ关键特性 异步消息传递&#xff1a;允许应用程序在不直接进行网络调用的情况下交换消息。 可靠性&#xff1a;支持消息持久化&#xff0c;确保消息不会在系统故障时丢失。 灵活的路由&#xff1a;支持多种路由选项&#xff0c;包括直接、主题、…...

SpringBoot驱动的社区医院信息管理平台

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理社区医院信息平台的相关信息成为必然。开发…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...

GitHub 趋势日报 (2025年06月06日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...

前端调试HTTP状态码

1xx&#xff08;信息类状态码&#xff09; 这类状态码表示临时响应&#xff0c;需要客户端继续处理请求。 100 Continue 服务器已收到请求的初始部分&#xff0c;客户端应继续发送剩余部分。 2xx&#xff08;成功类状态码&#xff09; 表示请求已成功被服务器接收、理解并处…...