0、奇偶校验
方法内容:
分为两个方法:奇校验和偶校验
奇校验:在每个字节后加一位,0/1,保证整体1的数目为奇数
偶校验:在每个字节后加一位,0/1,保证整体1的数目为偶数
方法优缺点:
缺点:
检验正确率只有50%
对于每个字节添加一位,影响传输效率
优点:
逻辑简单,可以直接写在硬件上,减少软件负担
1、累加和校验
方法内容:
最常用的一种是在一次通讯数据包的最后加入一个字节的校验数据。这个字节内容为前面数据包中全部数据的忽略进位的按字节累加和。
方法优缺点:
优点:
简单,判断错误的概率很低,因此被广泛应用
2、循环冗余检验
方法内容:
1、在发送端,先把数据划分为组M。(这里的数据指的是哪一部分)假定每组k个比特。
2、用二进制的模2运算求出n位冗余码(检验位),供差错检测用。
CRC计算规则:
模2加法:两者异得1,两者同得0
模2减法:两者异得1,两者同得0
模2除法就是利用上述两点进行的二进制除法。之所以采用这种方法,是为了避免除法中减法的借位问题,所以除法变简单了。
被除数的名字叫做生成多项式。有好几种方法可以设计。一般是两个多项式相乘。计算前先将原始数据后面填四个零。
生成多项式的位宽是位数减一。
生成多项式是接受方和发送方的一个约定,也就是一个二进制数,在整个传输过程中,这个数始终保持不变。在发送方,利用生成多项式对信息多项式做模2除生成校验码。在接受方利用生成多项式对收到的编码多项式做模2除检测和确定错误位置。理论上生成多项式可以是任意的数,但是为了更好的差错检验(这个数传输过程可能出错),所以定义了一套好的容错标准:
应满足以下条件:
A、生成多项式的最高位和最低位必须为1。
B、当被传送信息(CRC码)任何一位发生错误时,被生成多项式做除后应该使余数不为0。
C、不同位发生错误时,应该使余数不同。
D、对余数继续做除,应使余数循环。
方法优缺点:
几乎可以做到完全可靠传输
缺点是找不出哪一位发生了错误