计算机网络--差错检测(帧检验序列FCS计算方法)

我们知道数据链路层广泛使用循环冗余检验CRC的检验技术

现在我们知道要发送的数据M=101001(长度为k=6)  在我们每次发送数据的时候需要在M后面添加一个N位的冗余码,一共发送(k+N)位数据

这N位冗余码的计算方法如下:

用二进制的膜2运算进行2^N(这是2的N次方)乘M的运算 就是说在M这个数后面添加N个0  比如 初始M=101001   进行运算之后M=101001000(n=3)

将的到的M除以收发双发实现约定的长度(n+1)位的数P  假定P=1101(n=3) 经模2除法运算的到的结果:商Q=110101 余数R=001(不满N位往前补0)Q没有什么用 ,但是这个余数R就是我们所求的冗余码

我们将这个冗余码R添加到M之后 :M=101001001 (M是之前给的最原始的M)

下面具体来说一下 具体怎么求R:

  在二进制进行运算的时候全部都用XOR(异或进行运算(就是相同为0 不同为1    1xor1=0 0xor0=0   1xor0=1 ))

 

     

看图这样我们就能得到R

来个例题:

我们要发送的数据为M=101110 采用CRC的生成多项式是P(x)=X^3+1  所以我们的到的p=1001

得到的R=110   (计算完毕,图画的有点丑见谅)

猜你喜欢

转载自www.cnblogs.com/DyLoder/p/10206555.html