在计算机网络中,关于差错控制,我们主要要比特控制。
比特控制,简单理解,即在传输过程中,0变为1,1变为0。
差错控制主要有两类
- 自动重传请求ARQ——检错编码
(接收方检测出差错,就设法通知发送发重发,直到收到正确的数据为止) - 前向纠错FEC——纠错编码
(接收方不仅仅能检测出差错,而且能确定错误的位置并加以修正)
检错编码
检测编码采用冗余编码技术。
其核心思想是,有效数据被发送之前,按某种关系附加一定的冗余位,构成一个符合某一规则的码字后发送。
当要发送的有效数据变化时,相应的冗余位也随之变化,使得码字遵从不变的规则。
接收方根据收到的码字是否符合原规则来判断是否出错。
常见的检错编码时奇偶检验码
和循环冗余码
。
纠错编码
奇偶检验码
①奇检验码
附加一个检验位后,码长位n的码字中“1”的个数为奇数。
②偶检验码
附加一个检验位后,码长位n的码字中“1”的个数位偶数。
例如 ,7位1001101对应的奇检验码为10011011.
(即加上最后一个补的1,1的个数为奇数)
它的偶检验码为 10011010
(即加上最后一个补的1,1的个数为偶数)
循环冗余码CRC
数据链路层广泛使用的时 循环冗余码,即CRC检错技术。
循环冗余码的基本思想是,
①收发双方约定生成多项式G(x)。
例如可以使用多项式
x
3
+
x
2
+
1
x^3+x^2+1
x3+x2+1表示位串1101.
②发送方基于待发送的数据和G(x),计算出冗余码,将冗余码附加到数据后面一起发送。
③接收方收到数据和冗余码后,通过G(x)来计算收到的数据和冗余码是否产生差错。
CRC检验码可以检验出所有的单比特错误。
例题
纠错编码
最常见的纠错编码是海明威。这部分内容,了解即可。