OSPF基础,抓包理解消息数据包与邻居状态机制

网络 专栏收录该内容
10 篇文章 0 订阅

一、定义

(Open Shortest Path First)开放式最短路径优先
1.使用范围:IGP(内部网关协议)

IGP与EGP(域间网关协议)的区别
IGP:同一个AS之中的路由协议的统称,RIP,OSPF、EIGRP等,主要为了计算最佳路由,防环等来生产路由
EGP:不同AS之间的路由协议的统称,BGP协议,主要为了作用于AS边界,传递大量路由,力求路由不兜圈子,费用较高
AS自治系统,是一个被统一管理的由多个路由器组成的一个网络群体,可以自主的统一选择使用的路由协议,在一个AS中所有的路由器必须互联(全网可达),每个自治系统都有一个全局的AS号,范围为0-65535
举个例子:电信运营商于移动运营商就相当于两个不同的AS,电信内部为了通信有自己规定的统一的路由协议,来规范电信用户之间传递信息的速率与效率,移动同样也有自己的内部规定,这些自身内部的规范就是IGP协议要做的事,但电信用户需要与移动用户通讯,且要保证通讯效率,IGP就管不了了,这是就是BGP起作用

2.协议算法特点:链路状态型路由协议

距离矢量型协议与链路状态型协议的区别
距离矢量只传递路由,不传递拓扑,就是每个路由器不了解这个网络的拓扑信息,只根据通告自己的路由信息来选择路径,也同要会收到别的路由器类似的通告,通过跳数来计算度量值,来计算到达目标网络的需要经过的路由器数。30S更新发送路由信息,90S未收到就判断为相邻站点不可达,每个路由器都通过这种路由通告来传播它的路由表。在之后的通告周期中,各路由器仅通告其路由表的变更,收敛较缓慢。包括路由信息协议(RIP)内部网关路由协议(IGRP)
链路状态既传递路由,也传递拓扑,因为该型协议都有自己计算最佳路径的算法,每个路由器都了解整个网络拓扑信息,每个节点都会通过自身的算法计算到目的节点之间的最短路径,这些路径就添加到该路由器的路由表信息中,这些信息用于与邻接节点之间共享网络联通信息,加快了路由表的收敛速度,但比较消耗资源。包括开放式最短路径优先协议(OSPF),中间系统到中间系统路由交换协议(IS-IS)

3.该协议传递网络掩码
4.该协议基于IP协议封装,协议号为89,
5.更新方式:触发更新+30分钟的链路状态刷新

触发更新:网络结构稳定时不发送路由信息,当网络结构发生变化时,会立即发送路由更新信息,不需要等待更新计时器超时
会发生触发更新的情况:接口状态开启或关闭,增加路由或者路由不可达

6.更新地址:单播和组播

单播更新与组播、广播更新地址的区别
单播:一对一交流
组播:一对

二、OSPF区域

为了减少LSA的数量和LSA的传播范围,该协议基于路由器的不同接口划分了不同的区域,用一组32位二进制来标记区分不同的区域,叫做区域ID。

简单介绍常见LSA:
一类LSA:在某一个区域产生路由信息和直连拓扑信息,每台路由器都通告
二类LSA :用于在MA网络中,描述本网络路由器的数量以及本MA网络的网络掩码,只能在本区域之内传输,终止于ABR;只会出现在MA网络,用于补充1类LSA
三类LSA: 在不同区域传递路由信息与拓扑信息,有其他的ABR重新产生,是一条汇总LSA
四类LSA:在穿越不同区域时,由新的ABR重新产生,用于通告ASBR的位置
五类LSA:用于在整个OSPF中传递外部路由(原本不属于OSPF域)
七类LSA:携带FA地址(转发地址),在NSSA区域中,传递外部路由
(解释一下NSSA:是ospf的一个扩展属性,作用于非骨干且有ASBR的区域,不允许外部LSA进入,引入了汇总LSA,七类LSA在一个NSSA区域内携带外部信息,在ABR中将7类LSA转为5类LSA。)

划分区域的规则
必须存在且唯一的骨干区域(单区域就不讲究了,你就一个区域你还谁跟谁是老大就没意思了),非骨干区域必须与骨干区域直连.

这就有了OSPF协议中路由器扮演的角色:
骨干路由器:每个接口都在骨干区域中的路由器
非骨干路由器:每个接口堵在非骨干区域中的路由器
ABR:每个区域之间的路由器,也就是既有接口在骨干区域,也有接口在非骨干区域,能够产生3类LSA的路由器

那么上边提到的EGP,路由器的两个接口在两个不同的AS中的就叫做ASBR,自治系统边界路由器,能够产生5类或7类LSA的路由器

三、OSPF消息数据包与邻居状态机制

消息数据包:Hello、DBD、LSR、 LSU、 LSACK
邻居状态机制:Down 、init、attempt(过渡期)、two-way、exstart、exchange、loading、full

建立一个简单的OSPF区域抓包理解OSPF工作机制
在这里插入图片描述在这里插入图片描述

Down状态:关闭状态
华为中定义OSPF协议开启之前,最开始就是Down状态
思科定义邻居关系需要记录状态,邻居状态没有建立成功就会退回到Down状态。

hello包:周期性发送(时间为10S或者30S),发现、建立并维持OSPF 邻居关系,在邻居建立后充当保活包周期性发送,如果超过周期时间的4倍,邻居关系就为Down状态
在这里插入图片描述

OSPF Header
第一行:版本号(1表示实验室环境,2表示基于ipv4封装,3表示ipv6)
第二行:包的类型
第三行:包的长度大小
第四行:router-id(描述本路由器在OSPF的唯一性标识,链路状态型需要构建最短路径树,需要了解节点的位置,选取router-id顺序,手工指定>环回接口最大的ip>物理接口最大的ip)
第五行:接口所在的区域
第六行:校验和
第七行:认证类型(明文认证用1表示,MD5认证就是2)
第八行:认证密码内容
Hello Packet
第一行:网络掩码
第二行:hello时间10s(网络类型的不同hello时间不同,有10s也有40s)
第三行:可选项(重点有个NP与E位为特殊区域位)
第四行:DR优先级
第五行:死亡时间40S
第六行:选举的DR(在MA网络中DR与BDR选举,先比优先级,在比接口ip地址)
第七行:选举的BDR 

Init:初始化状态,一旦开始发送hello报文,进入初始化状态
two-way:双向通讯关系,当R2收到R1的Hello包时,要检测确认包中信息是否可以建立邻居关系,R2同意之后,R2也会给R1发送一个Hello包,R1也要检测是否建立邻居关系,如果双方都同意,则进入two-way状态,不可以就不建立邻居关系

建立邻居关系的条件
1.router-id 必须不同
2.area ID 相同
3.认证: 认证类型 (不认证=0 明文认证=1 MD5=2) 认证数据 一致
4.hello时间,dead时间 一致
5.Hello可选项中的特殊区域标识一致(E(外部路由位)=1 ; N(NSSA外部路由位)=0 ; P=0)
6.MA网络中,网络掩码必须一致
7.必须同时使用单播或组播更新
8.更新源检测(双方的IP地址必须在同一网段)

在two-way 状态下,MA网络中会选举DR与BDR,规则:
DR选举
1.先比较优先级 ,优先级越大越优(范围:0-255,默认优先级为1 )
2.再比较各自的router-id,越大越优

DR与BDR是什么?
作用理解:在一个OSPF网络中,选举一个路由器作为指定路由器DR。所有其他路由器只和它一个交换整个网络的一些路由更新信息,再由它对邻居路由器发送更新报文。这样节省网络流量。再指定一个备份指定路由器BDR,当DR出现故障时,BDR起着备份的作用,确保网络的可靠性。
具体指:DR与BDR虽然指的是路由器,但其实指的是该路由器的接口
选举顺序:优先选举的是BDR,在一定时间内没有比该BDR优的路由器接口,就让此路由器成为DR,再选举BDR

DBD包:数据库描述数据包;

双发都需要给对方发送DBD数据包,此时就进入exstart状态
Exstart状态:预启动状态,一旦开始发送主从DBD,则进入预启动状态。

主从选举DBD: 比较双方的router-id ,router-id大的一方为主(master ),小的一方为从 (slave);主要用于控制LSA的交互,控制更新量,也就是说双方都要学习对方的LSA,LSA发送一个确认一个,和双方谁先发送自己的LSA给对方

在这里插入图片描述

第一行:MTU值,双方MTU需要一致,才能继续建立邻居关系(思科中默认开启启此功能,华为中默认不开启,手工开启需要注意建邻双方需要相同)
DBD包中
第二行:I位,表示这是否是发送的第一个DBD包,1表示是,0表示不是
第三行:M位,表示还有更多的DBD包需要发送
第四行:MS位,表示主从选举,1表示Master主,0表示Slave从(因为这是第一个DBD包,还未进行主从选举,默认都为1)
DD Sequence表示序列号,用来做隐式确认的

主从选举之后,就会发送携带LSA头部信息的DBD
在这里插入图片描述
Exchange状态 :预交换,主从选举完成,则发送携带LSA头部信息的DBD,进入预交换状态,会发送LSR 数据包。(但是没有LSU)此时不会用LSACK确认,是有一个隐性确认,是根据组的序号确认组的DBD包。

LSR包: 链路状态请求,按照DBD中报文的未知LSA头部进行请求
在这里插入图片描述
LSU包:链路状态更新,携带LSA信息
在这里插入图片描述
Loading状态 加载状态,一旦发送LSU数据包,进入了加载状态,进行大量LSA的学习。

此处双方在学习LSA时会有一个请求列表和重传列表

请求列表:比如R2向R1发送了DBD包之后里边有许多的LSA,比如有100条LSA,R2在读取收到的DBD包之后发现有70条LSA是自己不知道,这70条LSA就生成一个请求列表,每当他向R2请求一次学习到了请求列表中的LSA,就会删除请求列表中的LSA
重传列表:R2收到R1请求的,也会生成R1不知道的这70条LSA列表,,需要重新传递给R1,称为重传列表,每当R1确认收到发给R2确认包时重传列表才会删除这条LSA

LSACK包:链路状态请确认在这里插入图片描述
Full状态 :邻接状态,双方LSA同步,就是LSA全部学习完成就会进入邻接状态,(LSA全部学习完就是请求列表与重传列表全部删除完全,就进入此状态)

数据包串起来简单记hello包发现你,认识,我要建邻;认识你之后我把我的DBD给你,我把我的数据库目录给你看;你看完后,发现我有,你没有的东西,你就找我要,发LSR请求;我再给你发个LSU给你你没有的信息;你再给我发个LSACK确认一下你收到了。
链路状态机制举例巧记:我们开始互相不认识,就是陌生人,Down状态;我要认识你,(发了hello包)打了招呼,就是init初始化状态,马上就要交盆友了;(有了对方的router-id)我们双方加了对方微信就是two-way状态我们就可以私聊了;加了微信回去聊天的时候也得(主从选举DBD包)有个人主动发消息问候,这就是一个extart状态预启动;基本上每次的聊天都是我先主动(主从DBD选举完成),我还会跟你聊一下最近我有什么开心的事不开心的事(发送携带LSA头部信息的DBD),你可能也想给我分享一下你一天的喜怒哀乐,也会问我为什么不开心呀(发送LSR请求包),你愿意与我聊天,就进入预交换exchange状态;之后我还会告诉一些你不知道的事(发送LSU数据包)我们会了解彼此的喜好,性格,家庭背景,进入(进行大量LSA的学习)各种嗨聊模式,就是loading状态;我们了解了彼此,觉得我们还挺聊得来,就确认了恋爱关系,full状态

总结图:在这里插入图片描述

四、特殊区域

末梢(stub),完全末梢,NSSA,完全NSSA
详情了解特殊区域与LSA

华为特殊区域与思科的区别
华为下放七类缺省,思科不下放七类缺省

五、接口网络类型

点到点,点到多点,broadcast,none brosdcast

六、选路规则

内部(一二类)优于外部(三四五六七类),一类优于二类,五类优于七类

  • 2
    点赞
  • 0
    评论
  • 7
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
<p style="color:#666666;"> <span style="font-size:14px;">本门课程重实战基础知识拆解到项目里让你在项目情境里学知识。</span> </p> <p style="color:#666666;"> <span style="font-size:14px;">这样的学习方式能让你保持兴趣、充满动力时刻知道学的东西能用在哪、能怎么用。</span> </p> <p style="color:#666666;"> <span style="font-size:14px;">平时不明白的知识点放在项目里去理解就恍然大悟了。</span> </p> <p style="color:#666666;"> <span></span> </p> <p style="color:#666666;"> <span style="font-size:14px;"> </span> </p> <p style="color:#666666;"> <span style="color:#FF0000;font-size:14px;"><strong>一、融汇贯通</strong></span> </p> <p style="color:#666666;"> <span style="font-size:14px;">本视频采用了前后端分离的开发模式前端使用Vue.js+Element UI实现了Web页面的呈现后端使用Python 的Django框架实现了数据访问的接口前端通过Axios访问后端接口获得数据。在学习完本章节后真正理解前后端的各自承担的工作。</span> </p> <p style="color:#666666;"> <span style="font-size:14px;"> </span> </p> <p style="color:#666666;"> <span style="color:#FF0000;font-size:14px;"><strong>二、贴近实战</strong></span> </p> <p style="color:#666666;"> <span style="font-size:14px;">本系列课程为练手项目实战:学生管理系统v4.0的开发项目包含了如下几个内容:项目的总体介绍、基本功能的演示、Vuejs的初始化、Element UI的使用、在Django中实现针对数据的增删改查的接口、在Vuejs中实现前端增删改查的调用、实现文件的上传、实现表格的分页、实现导出数据到Excel、实现通过Excel导入数据、实现针对表格的批量化操作等等所有的功能都通过演示完成、贴近了实战</span> </p> <p style="color:#666666;"> <span style="font-size:14px;"> </span> </p> <p style="color:#666666;"> <span style="color:#FF0000;font-size:14px;"><strong>三、课程亮点</strong></span> </p> <p style="color:#666666;"> <span style="font-size:14px;">在本案例中最大的亮点在于前后端做了分离真正理解前后端的各自承担的工作。前端如何和后端交互</span> </p> <p style="color:#666666;"> <span style="font-size:14px;"> </span> </p> <p style="color:#666666;"> <span style="color:#FF0000;font-size:14px;"><strong>适合人群:</strong></span> </p> <p style="color:#666666;"> <span style="font-size:14px;">1、有Python语言基础、web前端基础想要深入学习Python Web框架的朋友;</span> </p> <p style="color:#666666;"> <span style="font-size:14px;">2、有Django基础但是想学习企业级项目实战的朋友;</span> </p> <p style="color:#666666;"> <span style="font-size:14px;">3、有MySQL数据库基础的朋友</span> </p> <p style="color:#666666;"> <span style="font-size:14px;"> </span> </p> <p style="color:#666666;"> <span style="font-size:14px;"><img alt="" src="https://img-bss.csdnimg.cn/202009070752197496.png" /><br /> </span> </p> <p style="color:#666666;"> <span style="font-size:14px;"><br /> </span> </p>
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值