| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> OSPF协议包类型和状态 -> 正文阅读 |
|
[网络协议]OSPF协议包类型和状态 |
首先是OSPF协议发包的目的地址是两个多播地址,224.0.0.5和224.0.0.6,224.0.0.5是所有的OSPF路由器都能够收到,这就意味着DR路由器使用这个地址对所有的路由器进行路由的通告。 而224.0.0.6是只有DR路由器才能够收到,这就意味着DRother通过这个地址于DR路由器进行交换路由信息的。 OSPF总共有五个大类的数据包:1、hello:这是路由器之间互相发现,建立关系以及保活的数据包。 2、DD:数据库描述包,这个数据包就像是一份路由条目的清单列表,里面包含着LSA的头部信息,当其他路由器发现有自己缺少的路由条目,就会发送LSR。 3、LSR:用于向OSPF邻居请求LSA,来补充自己的路由条目的空缺。 4、LSU:LSU承载着LSA,而LSA正是包含着路由信息的数据媒介 5、LSAck:当收到对端的LSU,需要回送一个LSAck表示确认,否则路由器会启用重传机制,默认是4秒。关于OSPF相关的timer,可以在发送OSPF相关协议包的接口上进行设置。 OSPF的所有报文都有统一的报文头部,如下图所示:里面包含着许多通常的信息。其中类型字段总共有五种,代表着上述描述的五类协议包。 然后还需要注意的地方就是验证类型,验证类型表明了这个路由器是否对它的OSPF的进程设置了相关的验证信息,只有验证信息相互符合才能互相接收到对方的路由信息。 1、hello报文? hello包除了携带OSPF的包头,也就是一些通常的信息之外,还包含着DR和BRD,自身的hello timer,以及路由优先级,等等信息。 hello包作为发现邻居关系,建立full状态的第一步,它会判断双方的路由器的一些参数是否是相同的,比如hello包的发送间隔,路由器失效的时间,区域ID,版本类型,双方接口的子网掩码总的来说就是参与OSPF的路由器都要有一致的活动规律和身份,确保大家都是属于同一种方式去维护整个网络。 我们还需注意的在发送hello包的时候,设计两个状态的变化,第一个状态是init状态,当路由器互相发现对端的hello包的时候,它们的状态转变为init,需要注意的是,这个时候它们发送的hello包中的邻居字段是全0,也就是没有发现任何的邻居,当接收到对方的hello包后会将route-id填入字段,当对方收到包含自己的route-id的hello包后会知道对端已经发现自己了,于是就建立起two-way状态。 DD报文? ? DD报文用于描述数据库的整体概况,以及用于DR于BDR和DRother的选举,一般的DD数据包会携带LSA头部用于描述大致的路由信息,但是当DD数据包用于选举的时候,是不会承载任何的LSA信息。 当他们的选举角色都确立之后,双方就使用DD报文描述各自的LSDB,在这种DD报文中包含着LSDB的LSA的头部。路由器可以使用多个DD报文描述LSDB,同时注意DD数据包的结构,它有一个序号的字段,当主的路由向其他路由送DD报文描述LSDB的时,接收到这个DD报文的路由器,当它要发送自己的DD报文的时候,需要使用之前接收的DD报文的序号,也就是说DR作为DD的发送主导者,其他路由器使用的都是DR发送的DD报文的序号。当DR和DRother互相发送DD报文一段时间之后,就结束了DD报文的互相发送。 在DD包中的可选项表达了它是如何进行DR的选举以及LSDB的描述结束。 同样在DD报文发送的过程中也会涉及状态的改变,当开始发送DD报文去描述自身的LSDB的时候,路由器的状态就转变为exstart,当DD传送结束后就变为loading阶段。 LSR报文? 该报文表达了请求的LSA的类型,比如它的LSA的类型,链路状态ID,链路状态ID是LSA的信息的标识,而通告路由器是通告该LSA的路由器。 LSU报文? 当DR在接收到所有路由器的LSA后,就会将完整的LSDB的信息以LSU的信息会议其他路由器的LSR的请求。 LsAck报文? LSA包含着对LSA的确认,同时一个LSAck内部可能包含着多个LSA确认。 重要的知识点,ABR只能将自己的区域内部的路由通告给area0,而不能通告自己到达其他区域的路由。 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 3:28:07- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |