动态路由协议 OSPF工作过程之 五种数据包类型 详解

OSPF 的数据包类型

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

     

    HELLO 包  :

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

                    #   OSPF 默认 以 10 S 为 周期  发送 HELLO 包 (保活周期为  10 S -- Hello 时间

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

                         ===>>

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

                                      就是 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 进行数据获取!! 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值