冗余码的计算 ·用二进制的模2运算进行2n乘M的运算,这相 当于在M后面添加n个0。 ·得到的(k+n)位的数除以事先选定好的长度为 (n+1)位的除数P,得出商是Q而余数是R,余 数R比除数P少1位,即R是n位。 ·将余数R作为冗余码拼接在数据M后面发送出 去。 3.数据链路 22
冗余码的计算举例 ·现在k=6,M=101001。 ·设n=3,除数P=1101, ·被除数是2nM=101001000。 ·模2运算的结果是:商Q=110101, 余数R=001。 ·把余数R作为冗余码添加在数据M的后面发送出去。 发送的数据是:2nM+R 即:101001001,共(k+n)位。 3.数据链路 23
循环冗余检验的原理说明 110100←一Q(商) P(除数)→1101) 101001000←一2nM(被除数) 1101 1110 1101 0111 0000 1110 1101↓ 0110 0000 1100 1101 001 一R(余数),作为FCS 3.数据链路 24
帧检验序列FCS ·在数据后面添加上的冗余码称为帧检验序列FCS (Frame Check Sequence)o ·循环冗余检验CRC和帧检验序列FCS并不等同。 ·CRC是一种常用的检错方法,而FCS是添加在数据 后面的冗余码。 ·FCS可以用CRC这种方法得出,但CRC并非用来 获得FCS的唯一方法。 3.数据链路 25
CRC FCS FCS CRC CRC FCS
接收端对收到的每一帧进行CRC检验 ·(1)若得出的余数R=0,则判定这个帧没有差错, 就接受(accept)。 ·(2)若余数R≠0,则判定这个帧有差错,就丢弃。 ·但这种检测方法并不能确定究竟是哪一个或哪几 个比特出现了差错。 ·只要经过严格的挑选,并使用位数足够多的除数 P,那么出现检测不到的差错的概率就很小很小。 3.数据链路 26