循环冗余检验 CRC

循环冗余检验(CRC)是一种广泛用于数据链路层的检错技术。它通过将数据进行模2除法运算,生成冗余码并附加到数据后,在接收端进行相同运算并比较余数来判断传输错误。CRC能有效检测传输中的差错,但无法确定具体哪位出错,确保无差错接受。实现可靠传输还需结合确认和重传机制。
摘要由CSDN通过智能技术生成

一、总体流程:

把要发送的每组数据2^nM(k+n位)除以除数P(n+1位),计算出冗余码FCS(n位),然后再求出要发送的数据:2^nM+R。
接受端把收到的数据除以除数P,看余数R是否为0,如果为0则说明没有差错,如果不为0则说明有差错。
注意CRC的运算为模二运算。

二、详细

  1. 在数据链路层传送的帧中,广泛使用了循环冗余检验 CRC 的检错技术。
  2. 在发送端,先把数据分组,假定每组 k 个比特。
  3. 我们在每组数据的后面再添加供差错检测用的 n 位冗余码一起发送。
  4. 冗余码的计算
    用二进制的模 2 运算进行 2^n 乘 M 的运算,这相当于在 M 后面添加 n 个 0。
    得到的 (k + n) 位的数除以事先选定好的长度为 (n + 1) 位的除数 P,得出商是 Q (商没有什么用处),余数是 R,余数 R 比除数 P 少1 位,即 R 是 n 位,如果不够n位要在前面补0,补成n位。
  5. 冗余码的计算举例
    (1)M = 101001(k = 6),除数 P = 1101( n = 3 )
    (2)被除数是 2^nM = 101001000。
    (3)模 2 运算的结果是:商 Q = 110101,余数 R = 001。
    (4)把余数 R 作为冗余码添加在数据 M 的后面发送出去。发送的数据是:2^nM +
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值