很多人在读到思科的BSCI OSPF LSA Sequence Number这个章节时,常常会在心中出现一个问号? Cisco的教材是不是又打错字了(Cisco教材编辑校阅相关负责单位请好好反省…真的是错字百出),其实是没错的。
很多人在读到思科的BSCI OSPF LSA Sequence Number这个章节时,常常会在心中出现一个问号? Cisco的教材是不是又打错字了(Cisco教材编辑校阅相关负责单位请好好反省…真的是错字百出),其实是没错的。
OSPF LSA Sequence Number的起始值是0x80000001,结束值是0x7FFFFFFF,或许你可能会感到困惑,怎麽会一开始的数字比结束的数字还要大呢?
一、数字上限可以任意调整
事实上,这是因为起始值中开头的8是代表着负数,它的意思是-7FFFFFFF,请参考以下的说明,就会明白了:
在古早时期玩游戏是一种电脑能力的自我修练与提升,怎麽说呢? 如果十几年前很喜欢玩电脑游戏的朋友,一定曾经使用过这种游戏修改工具,像是PCTOOLS、整人专家等,透过这些工具的辅助将游戏中的梦想变为现实,只要是各种可能的数字上限与主角能力的极限都可以任意调整。
二、位元组范围
废话不多说,来看看我们要谈的东西。一个位元组(byte)资料可表示的范围从0(0000 0000)到255(1111 1111),那麽负数的话要怎麽表示呢?
在电脑系统中只有0与1,并没有任何的额外符号可以用来表示所谓的正/负数,因此可以使用一种变通的方式,我们利用位元组中最左边的数字来代表正或负,以0为正,以1为负。
比如说0111 1111转换为十进位的话是127,1111 1111转换为十进位的话则是-127,由此我们知道一个位元组的表示范围可以从-127到127。
三、倒数
以上我们谈的都是所谓的原码表示法,但是在电脑中的资料都是以补数来存放的,只有这样才能减轻CPU的负担。
提到了补数,我们就不得不提一下倒数了。在电脑中是这样规定倒数的:如果是正数,则按照原码表示法的表示方式维持不变,比如127仍为0111 1111,而如果为负数,那麽第一个数字为1,其他数字则倒反过来(也就是0变1,1变0),比如说二进位表示法-127(1111 1111),倒数的表示法为1000 0000。
四、补数
补数也是相同道理,如果是正数,则依照原码表示法不变,如127仍为0111 1111;如果为负数,则是除了第一个数字为1之外,其他数字先取倒数再加1,如-127,先取倒数为1000 0000,然后再加1,则为1000 0001。
但1000 0000比较特殊,我们可以用它来表示-128,由此可以补数可表示的范围为-128到127。
五、序号N
"序号 -N(0x80000000)被保留未用,而 -N+1(0x80000001)表示最小(也就是最旧)的序号,这一序号被定义为常数InitialSequenceNumber。
路由器在第一次生成任何LSA的时候使用InitialSequenceNumber,当每次路由器生成新的LSA实例时,将LSA的序号加一。
当试图增加最大序号N-1(0x7fffffff,也被定义为MaxSequenceNumber)时,必须先将当前LSA从路由域中废止。
这通过将LSA提早老化(见第14.1节)并重新洪泛而实现。当从所有邻接的邻居收到确认后,生成以InitialSequenceNumber为序号的新实例。
六、意外收到LSA
当在洪泛过程中收到意外的LSA新实例时,路由器可能会强制提高其LSA序号。这应当绝少发生,这可能是路由器在上一次重启动前发出的旧LSA,仍存在于AS中,更多信息见第13.4节。"
如果序列号到了0X7FFFFFFF.当前路由器终止该LSA.然后把AGE为60min的LSA通告出去(提前老化),并且重置其序列号为0X80000001。
七、 注意
(负数的反码是将其原码除符号位之外的各位求反[-3]反=[10000011]反=11111100负数的补码是将其原码除符号位之外的各位求反之后在末位再加1。
[-3]补=[10000011]补=11111101一个数和它的补码是可逆的_)。