动态路由协议 OSPF工作过程之数据包类型 维度
创始人
2024-02-02 13:05:04
0次

OSPF 的数据包类型 :

        #   OSPF 一共有 五种 数据包 : HELLO包   DBD包    LSR包   LSU包   LSack 包  

     

    HELLO 包  :

                  作用   :  用于邻居的发现;以及关系的建立;周期的保活 。

                    #   OSPF 默认 以 10 S 为 周期  发送 HELLO 包 (保活周期为  10 S )

                         既然是保活,那么,就会有 失效判断 :

                         ===>>

                                      失效判断的时间为  :  四倍 的 HELLO 时间  ---  死亡时间 

                                      就是 40 秒 都没有收到 发来的HELLO 包  就会判定你已死亡!!

                     #   需要强调的是 :

                                       所谓的 10 S 周期 是默认为 10 S ,也是可以被修改的( 计时器的原因)

                                       但是 四倍的 HELLO 时间 的 四倍关系是不变的 !!

                      #   在介绍 HELLO 包时需要再提出一个概念 :

                                我们前面学到的 RIP 协议时,RIP 协议在 各个设备之间是传递什么 ??

                                        ===>>>

                                                        是不是传递的是   路由条目 ,也就是说 传递的包里只需要携带

                                                        上    目标网段信息 和  开销值信息就行 !!

                                       

                               但是,现在我们讲的  OSPF 协议,它在传递数据包时,传递的主要是什么?  

                                        ===>>>

                                                   OSPF  发送的是 拓扑信息 ( 是用来描述  路由器周围连接状态)

                                                   那就意味着一定要区分各个路由器呀,不然,怎么知道你是给那

                                                   个路由器传的包呢??

                                                 ===>>>

                                                      所以为了区分不同的路由器,我们引入了一个概念 --  RID 

                    RID  :  

                             #    对其也是有要求的  

                                   1.   全网唯一 ( 指拓扑搭建的那个网络)     

                                   2 .  格式统一( 必须按照 IP  的格式定义)

                           

                             #     怎样生成

                                     1.  手动配置  

                                          遵循上面两条 要求就行 !!

                                     2.  默认生成 

                                          首先看  环回接口,如果存在多个环回接口,则选择其中 IP 地址 数值最

                                          大的作为 RID  ; 

                                          什么叫做  IP 地址 数值最大 ??

                                          ===>>>  

                                                         就是 纯数值的比较 , 比如 :  192.168.1.1   和   192.168.1.2 

                                                         那么,在选择 RID 的时候就 选择的是 192.168.1.2  

                                           那如果设备上没有 环回接口呢 ?  那就选择 物理接口 ,其选择的理由

                                           也是一样的,选择  接口中 IP 地址 数值最大的 作为 RID !!!

                           

                                          为什么要说这个RID 呢 ?

                                          除了上面介绍的原因,还有一部分是 发送的 HELLO 包 会携带 RID !

                                          RID 后面也会细讲 !!!!

     DBD 包 :   

                       数据库描述包

                       这个包里主要携带的就是 路径信息摘要 !!

                       我们形象的举例 :

                                其实,DBD 包就像是我们去饭店吃饭,顾客去点菜,DBD 就像是菜单,我们

                                去饭店吃饭,正常逻辑不就是,老板把菜单给我们,然后我们在菜单上点我们

                                想要吃的菜,然后,老板再根据我们点的菜再去做出来。

                                而,不会是,我们去饭店吃饭,老板把菜单上所有的菜都做出来,然后,我们

                                去在做出来的所有菜里去挑出自己的要吃的菜,这就太浪费了!!

                       我们把例子对应实际 :

                                 在我们传送数据的时候不也是这个道理,我要把拓扑信息发给你,但是,很

                                 有可能,我的拓扑信息里有一部分可能你已经有了,有一部分可能重复了,

                                 那已经重复的是不是就没有必要再给你发一遍了,既增加更新量又没啥实际

                                 作用,因为,你已经有了啊!!

                                 那我能不能,我把我的拓扑信息列成一个目录,列成一个菜单发给你,你看

                                 这个菜单,你拿到这个菜单做对比,你要这个菜单里你没有的拓扑信息!!

                                 要这个你缺的东西,然后,我把你缺的东西再发给你 !!

                                 这样不就不存在浪费,也不存在资源占用 更新量大了!!!

                       所以,综上,DBD 包实际上存在的意义就是 减少更新量 ,避免重复更新!! 

                    #   在介绍这个包之前先思考下 OSPF 这个协议 最怕什么 ??

                         ===>>>

                                         就前面讲的 ,肯定是 最怕更新量 !!

                          因此,为了解决这个 OSPF 最怕的事情,其发明者(科学家)也考虑到此问题并

                          提出了两个方法来预防 更新量大!!

                                        *      区域划分  

              

               

                     

    LSR 包 : 

                       链路状态请求包,

                       在查看完对端邻居的 DBD 后,基于本地未知的 LSA 信息查询 

                       LSA : 链路状态通告--就是具体的路由或者拓扑信息

                                   ( 一条路由就是 LSA,  一条拓扑就是 LSA )

                       刚才不是 对法发了一个 DBD 包,那么,按照逻辑不就到了,你收到菜单后,你要

                       点菜了啊,你该给对方说 你要吃什么菜了,到了,你跟自己的拓扑信息做对比,在

                       对方发来的 DBD 包里 选择自己没有的拓扑信息,请求本地未知的信息(即就是通

                       过 LSR 包来请求!!)                       

                       

    LSU 包 :

                           链路状态更新包

                           用于携带各种的 LSA 信息  ( 这个包才是真正携带 LSA 信息的数据包 )

                           那按照逻辑,饭店的人收到顾客从菜单上选的菜,那饭店不就得做菜了,

                           把菜做好,给你端上来!!

                           所以,其实只有这个包才是 真正携带 拓扑信息的包~!!!

                           

    LSack 包 : 

                            链路状态确认包

                            用于确认接受对端信息 

                            #   看到这里的确认包,你会想到什么 ??

                                 ===>>>

                                想想 RIP  ,他不就没有 确认包,所以它需要进行一下 30 S 的周期更新 

                                 RIP 的周期更新不就是为了 保活和确认 而存在的!!! 

                            #   现在,请思考OSPF 需不需要进行 周期更新 ??   

                                 那对于 OSPF 来说,它有保活机制没?    有 确认机制没 ?

                                 ===>>>           

                                           OSPF 既有 HELLO 包来保活  又有 ACK 来确认 !!

                                           这与 RIP 进行周期更新的原因一对比,OSPF 完全不需要周期更新啊!

                                           你 OSPF 既有 保活 又有 确认,当然不需要 周期更新了 !

                                           完全不需要周期更新啊!!!

                                 然而,事实上 :

                                 ===>>>

                                 OSPF  是有周期更新的!!!!

                                 OSPF  30 分钟 进行一次周期更新 !!!!

                                                #   我擦,30 分钟的周期更新 ,你见过没??  OSPF 就是 !!                     

                                                #   这周期更新完全就没必要!! 作用太微不足道了 !!

                                                      那为什么还要进行这 30 分钟的周期更新呢 ??

                                                      ===>>

                                                                    其实,还是 该协议不自信,因为我们说过,OSPF 的

                                                                    更新量很大,所以它就总害怕落掉某些数据包,就有了

                                                                    这 30 分钟 更新的兜底!!

                                                                    但其实,完全没必要 ~!!

                                                #   它的周期更新的做法是 :

                                                                它的周期更新和 RIP 也不同,RIP 周期更新是直接发送更

                                                                新包,直接把更新包发出去,而 OSPF 不发更新包,因为

                                                                更新包数据量大啊,所以 OSPF 发的是菜单!!也是为了

                                                                减少更新量的占用资源!!

                                                                发送 DBD 包进行对比 ,若存在缺失信息,再根据

                                                                LSR,LSU,LSACK 进行数据获取!! 

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...