首页 > 学院 > 开发设计 > 正文

【计算机网络】循环冗余校验CRC算法原理&计算过程

2019-11-06 07:35:49
字体:
来源:转载
供稿:网友

前言


我们知道,一台主机向另外一台主机发送报文的时候,需要一层层经过自己的协议栈进行数据封装,到达最后一层(四层协议的网络接口层)时需要在帧尾部添加FCS校验码(通过CRC算法得出)。当对端主机收到时,在接收端同样通过CRC算法进行验证,确认传输过程中是否出现错误。它只能确认一个帧是否存在比特差错,但没有提供解决措施。

循环冗余校验的原理


在发送端,先把数据划分为组(即:一帧)。假定每组 k 个比特。在每组后面,添加供差错检测用的 n 位冗余码一起发送。即:实际发送长度为:k+n 比特。发送前双方协商n+1位的除数P,方便接收方收到后校验。给K比特的数据添加除数减一个0(P-1)作为被除数,与第三步确定的除数做“模2除法”。得出的余数即FCS校验序列,它的位数也必须是(P-1)。将FCS校验序列添加至K个比特位的后面发送出去。接收方对接收到的每一帧进行校验,若得出的余数 R = 0,则判定这个帧没有差错,就接受(accept)。若余数 R ≠ 0,则判定这个帧有差错,就丢弃。

对“模2除法”进行说明:

“模2除法”与“算术除法”类似,但它既不向上位借位,也不比较除数和被除数的相同位数值的大小,只要以相同位数进行相除即可。模2加法运算为:1+1=0,0+1=1,0+0=0,无进位,也无借位;模2减法运算为:1-1=0,0-1=1,1-0=1,0-0=0,也无进位,无借位。相当于二进制中的逻辑异或运算。

计算示例


这里写图片描述 那么接收方拿到的就是:101001001。再以它为被除数,1101为除数进行“模2除法”。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表