1.循环冗余校验 CRC 是Cyclic Redundancy Check的缩写,用于校验数据传输的完整性。 一般情况下在数据发送前计算CRC校验值,附在发送数据之后,数据接收方也按照同样方法计算CRC,然后对比计算结果,如果一致说明数据数据传输无误,否则数据传输出错。
2.计算
(1)计算冗余码
- 加0——假设生成多项式G(x)的阶为r,则加r个0
- 模2除法——数据加0后除以多项式,余数为冗余码/FCS/CRC检验码的比特序列。
(2)若要发送的数据为1101011011,采用CRC的生成多项式是P(x)=x4+x+1. 求应添加在数据后面的余数。
做二进制除法(异或运算:同0异1),除数为10011,得余数1110
最终发送得数据:要发送得数据+帧检验序列FCS
(3)接收端检错过程:把收到的每一个帧都除以同样的除数,然后检查得到的余数R
- 余数为0,判定这个帧没有差错,接收
- 余数不为0,判定这个帧有差错,丢弃
(4)FCS的生成以及接受端CRC检验都是由硬件实现,处理很迅速,因此不会延误数据的传输。