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

Wireshark的OSPF报文抓包和分析(单区域ospf实验)

一、OSPF的5种数据包和7种状态机制

数据包

Hello:发现、建立邻居(邻接)关系、维持、周期保活;存在全网唯一的RID,使用IP地址表示

DBD:本地的数据库的目录(摘要),LSDB的目录(所有LSA的集合)

LSR:基于DBD包中的未知信息进行查询

LSU:携带了真正的LSA信息(链路状态通告),用于答复对端的LSR

LSack:对传递LSA信息进行确认,链路状态确认

状态机制

Down:一旦启动后发出hello包,则立即进入下一状态

Init(初始化):若收到了携带了自己的RID的hello包,则和对方一起进入下一状态

Two-way(双向通信):邻居关系建立(DR/BDR选举),此时进行条件匹配,若成功,RID大的优先进入下一状态;若失败,则保持邻居关系,hello包10s周期保活即可

Exstart(预启动):使用类hello的DBD进行主从选举,RID大的优先进入下一状态

Exchange(准交换):使用真正的DBD包进行数据库目录交换共享

Loading(加载):使用LSR/LSU/LSack来获取未知的LSA信息

Full(转发):邻接关系建立的标志

拓扑:

        

二、实验配置

R1
配置IP
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]ip add 12.1.1.1 24    
[R1]int LoopBack 0
[R1-LoopBack0]ip add 1.1.1.1 24
配置ospf    
[R1]ospf router-id 1.1.1.1
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]network 12.1.1.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]network 1.1.1.0 0.0.0.255
R2
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]ip add 12.1.1.2 24
[R2]int g0/0/1
[R2-GigabitEthernet0/0/1]ip add 23.1.1.2 24
[R2]int LoopBack 0
[R2-LoopBack0]ip add 2.2.2.2 24
[R2]ospf router-id 2.2.2.2
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network 12.1.1.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]network 23.1.1.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]network 2.2.2.0 0.0.0.255
R3
[R3]int g0/0/1
[R3-GigabitEthernet0/0/1]ip add 23.1.1.3 24
[R3]int LoopBack  0
[R3-LoopBack0]ip add 3.3.3.3 24    
[R3]ospf router-id 3.3.3.3
[R3-ospf-1]area 0
[R3-ospf-1-area-0.0.0.0]network 23.1.1.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]network 3.3.3.0 0.0.0.255

 三、数据抓包

(1)Hello包:12.1.1.1以组播的方式周期为10s向相邻的链路发送Hello包

224.0.0.5是组播地址

224.0.0.5:这是OSPF协议中用于多点广播通信的重要组播地址。它允许OSPF路由器之间通过该地址进行信息交换和路由更新。每当一个路由器在网络中发生状态改变时(例如链路故障或恢复),该路由器会将这一信息打包成LSA(链路状态通告)广播给网络中的其他路由器。因此,所有运行OSPF的路由器都会监听224.0.0.5地址。

(2)Exstart预启动和Exchange准交换

R1要进入下一个状态,要与R2比较RID,R1在第一次发送DBD时会将自己的master设置为YES,且DD-seq为48(DD报文中包含的DD-seq用于标识报文的版本和顺序,确保双方能够正确地同步数据库信息。

R2的RID比R1的大,就会给R1发送DBD时将自己的master设置为YES,且DD-seq为46

R1再发送一次DBD,因为R1的RID比R2的小,R1会将自己的master设置成NO,且会将DD-seq改成46(为了确认上一步R2发来的DD-seq,所以DD-seq是46)

R2会再发一次DBD,将M置位0,告诉R1没有DD要发送了。且DD-seq会在原基础上+1,因为是新的DD-seq,所以R1会在发来一个用于确认的报文

R1第三次发来DBD,也是将M置位0,表示R1也没有DBD要发送了。且DD-seq是47是为了确认R2发来的DD-seq

过程总结

(3)Loading::使用LSR/LSU/LSACK获取未知的LSA信息 (共享拓扑图)  

R1和R2之间相互发送LSR LSU

R2向R1以单播方式发送LSR请求

R1给R2回复LSU的确认包含了LSA、路由信息或拓扑信息

R2要给R1发送LSACK确认

到此,7个状态完成,路由与拓扑完成交换

四、总结

路由器之间先发送Hello包建立邻居关系,然后比较RID去完成DR和BDR的选举,选举完会使用真正的DBD包进行数据库的共享,再去获取未知LSA信息,进行交换加入到LSDB中,然后邻接关系建立完成,可以开始转发。


http://www.kler.cn/a/569918.html

相关文章:

  • 1114棋盘问题acwing(深度优先搜索)
  • ollama查看模型日志
  • 【Vue CLI脚手架开发】——2.ref属性
  • Arcgis中添加脚本工具箱
  • 基于nginx的灰度发布解决方案
  • AIC8800---编译环境搭建
  • 深度学习文本生成:从 GPT 到 Transformers
  • HTTP/1.1 和 HTTP/2 的区别,HTTP/2 有哪些新特性?
  • 基于springboot+vue美食与健康分享推广网站
  • 手机投屏电脑 Scrcpy
  • 【Elasticsearch】自定义内置的索引生命周期管理(ILM)策略。
  • 【蓝桥杯集训·每日一题2025】 AcWing 5439. 农夫约翰真的种地 python
  • 【Swift 算法实战】判断数组中是否存在重复元素
  • 【PyQt5】python可视化开发:PyQt5介绍,开发环境搭建快速入门
  • 通过Python编程语言实现机器学习小项目教程案例
  • 字符设备驱动需要实现的结构体
  • 【计算机视觉】手势识别
  • Git 使用教程
  • 【C语言】求2024的质因数和
  • 【星云 Orbit • STM32F4】08. 用判断数据头来接收据的串口通用程序框架