关于PPP数据帧转义字符0x7d后的字符第六个bit位取补码
凤梨头头 2016-04-25 10:26:41 C R C字段(或 F C S,帧检验序列)是一个循环冗余检验码,以检测数据帧中的错误。
由于标志字符的值是 0 x 7 e,因此当该字符出现在信息字段中时, P P P需要对它进行转义。
在同步链路中,该过程是通过一种称作比特填充 (bit stuff i n g )的硬件技术来完成的 [ Ta n e n b a u m
1 9 8 9 ]。在异步链路中,特殊字符 0 x 7 d用作转义字符。当它出现在 P P P数据帧中时,那么紧接
着的字符的第 6个比特要取其补码,具体实现过程如下:
1) 当遇到字符 0 x 7 e时,需连续传送两个字符: 0 x 7 d和0 x 5 e,以实现标志字符的转义。
7e 01111110→5e 01011110 ,自右向左第六位取反
就将0x7e转义为了0x7d 0x5e,可是此处不应该是自右向左第六位取补码吗?为什么第六位取补码后由1变为了0,我去查阅了RFC文档,此处的运算实际是和0x20进行异或。
我对此处所说的第六个比特取补码不太理解,取补码的定义不是正数补码为其本身,负数补码是取反再加1吗?某一比特位取补码到底是怎么实现的?