软考网工难点分析之三 CRC循环冗余校验

莫道桑榆晚,为霞尚满天。这篇文章主要讲述软考网工难点分析之三 CRC循环冗余校验相关的知识,希望能为你提供帮助。
在数据传输的过程中,不可避免会出现差错,为判断一个数据块中是否存在传输错误,发送方可在数据块中加入一些冗余信息,使接收方可通过这些冗余信息判断传输是否出错,这些加入的冗余信息称为差错编码。
差错编码分为检错码和纠错码。
检错码只能让接收方判断数据块是否有错,但无法确认错误的位置,主要有奇偶校验码和CRC循环冗余码。
纠错码不仅能发现错误,而且能纠正错误,主要是海明码。由于纠错码开销较大,所以不适合于计算机通信。在计算机通信中主要使用检错重发方法,主要使用的是检错码,其中CRC是一种能力相当强的检错码,并且实现编码和检错的电路比较简单,因而得到了广泛的应用。
CRC编码主要用于数据链路层,它的基本思想将二进制位串看成系数为0或1的多项式。一个n位的帧被看成是n-1次多项式的系数列表。最左边是xn-1项的系数,接着是xn-2项的系数,依此类推,直到X0项的系数。如二进制数11100011可以表示为多项式X7+X6+X5+X+1。同样的,多项式X4+  X+1,可以表示为二进制数10011。

假设发送方要发送的数据帧是1010101010,在进行CRC编码时,发送方和接收方必须事先商定一个生成多项式,如X4+  X+1,对应的二进制数为10011,其最高阶为4,则在帧1010101010后面附加4个0,成为10101010100000。
用10101010100000除以10011,得到的余数就是CRC校验码。

软考网工难点分析之三 CRC循环冗余校验

文章图片

这个除法用到的是异或运算,基本规则是两个相同的数相除,其结果是0,两个不同的数相除,其结果是1。最终得到的CRC校验码为0100(生成多项式的最高阶为几,就可以得到一个几位的CRC校验码),然后将10101010100000用模2减法(实际上也是异或运算)减去CRC校验码0100,就得到了最终实际要传输的数据帧10101010100100。
大家可以自己练习一下这道考题:
【软考网工难点分析之三 CRC循环冗余校验】若信息码字为11100011,生成多项式  G(X)=X5+X4+X+1,则计算出的  CRC  校验码为  (16)  。
        (16)A.01101        B.11010        C.001101        D.0011010


    推荐阅读