关于网络应用技术之——循环冗余检验(CRC)计算题

今天学习了数据链路层中出现的循环冗余检验(CRC),那么就趁热打铁来复习总结一下今天的内容吧!^-^

1.什么是循环冗余检验(Cyclic Redundancy Check,CRC)?

简单来说就是,在数据链路层中被广泛用来“差错检测” 的一种技术。

2.CRC涉及的计算公式和“私有名词”有什么?

(1)代传输数据:

   M(设出来的一个字母用来代表传输的数据)

(2)校验码(也叫生成多项):

   设n阶p

  • 从这一步可以知道p的位数是:n+1
  • 为什么?假设我现在举例y=x*3+x*2+a,x的最高次方是3,即y是三阶的函数,但实际上,这条式子可以写成,y=x*3+x*2+0*x+ax*0,用计算机导论的知识来解释就是“y是三阶的,但它是有四个位数的。
  • 那么相反的,给出p的位数,就可以知道p的阶数是多少;

(3)冗余码:

    r=2*nM%p

  • 使用模(%)2运算
  • [2*n]是2的n次方
  • [2*nM]代表着n为多少,那么就在M后加多少位0
  • [2*nM%p]代表着,[2*nM]与p进行异或运算
  • r的位数=n,这一点要额外注意,就是我们完成了前面的运算后得出的r要注意它的位数,假设n=2,我算出的r是1,要在前面加多一个0补够两位,因此r=01

(4)被检验编码:

     2*nM+r

(5)最后将被检验码和校验码再做模2运算,结果是0,那么就意味着数据的传输是正确的

3.CRC的计算过程,例题示范:

关于网络应用技术之——循环冗余检验(CRC)计算题_第1张图片

你可能感兴趣的:(经验分享,其他,网络)