2.5 差错控制
学习任务
了解差错控制技术。
数据传输控制技术主要包括差错控制、流量控制和拥塞控制,本单元介绍差错控制技术。有关流量控制和拥塞控制,请参考单元九中的“9.2.3流量控制和拥塞控制”。
知识点
(1)差错控制和差错校验。
(2)检错码和纠错码。
(3)奇偶校验和循环冗余校验。
根据数据通信系统的模型,当数据从信源发出经过信道传输时,由于信道总存在着一定的噪声,数据到达信宿后,接收的信号可能存在数据信号和噪声信号的叠加。如果噪声对信号的影响非常大,就会造成数据传输错误。差错控制通过发现传输中的错误,来采取相应的措施。差错控制的核心是对传送的数据信息加上与其满足一定关系的冗余码,形成一个加强的、符合一定规律的发送序列。
差错校验,又称差错检测,是指采用特定手段发现并纠正传输错误,发现差错甚至能纠正差错的常用方法是,对被传送的信息进行适当的编码,给信息码元加上冗余码元,并使冗余码元与信息码元之间具备某种关系,然后将信息码元和冗余码元一起通过信道传输。接收端接收到这两种码元后,检验它们之间的关系是否符合发送端建立的关系,这样就可以检验传输中的差错,甚至可以纠错。加入的冗余码称为校验码。
校验码的分为检错码和纠错码。能校验差错的编码称为检错码,可以纠错的编码称为纠错码。检错码用来发现传输中的错误,但不能自动纠正所发现的错误。对应的差错控制措施为反馈重发纠错。常见的检错码有,奇偶校验码和循环冗余校验码(CRC,Cyclic Redundancy Check)。
可以纠错的编码称为纠错码,纠错码不仅能发现传输中的错误,还能利用纠错码中的信息自动纠正错误。对应的差错控制措施为自动向前纠错。汉明码(Hamming code)为典型的纠错码,具有很高的纠错能力。差错控制采用得最广泛的方法是“反馈重发纠错”,发送端将检错码随同信息一起发送,接收端按发送端的方式进行计算,若发现错误,及时反馈给发送端,要求重发信息。计算机网络中,常用的差错校验有奇偶校验、循环冗余校验等。其中,循环冗余校验是数据链路层经常采用的技术。
(1)奇偶校验码
奇偶校验是一种通过增加冗余位使得码字中的“1”的个数为奇数或偶数的编码方法,它是一个检错码。采用奇偶校验码时,在每个字符的数据位(字符代码)传输之前,先检测并计算出数据位中“1”的个数(奇数或偶数),并根据使用的是奇校验还是偶校验来确定奇偶校验位是“0”还是“1”,然后将其附加在数据位之后进行传输。当接收端接收到数据后,重新计算数据位中包含“1”的个数,再通过奇偶校验位就可以判断出数据是否出错。
例如,假如某数据信息的部分二进制代码为1011011,其中有奇数个“1”,则:
奇校验方法:10110110,在信息码的后面,即校验位上加一个“0”变为奇数个“1”;
偶校验方法:10110111,在信息码的后面,即校验位上加一个“1”变为偶数个“1”。
奇偶校验的优点是简单、易实现,在位数不长的情况下常采用,但奇偶校验检错能力有限。奇偶校验只能用于面向字符的通信协议中,而且只能检测出奇数个比特位错。
(2)循环冗余码
循环冗余码是一种较为复杂的校验方法,它先将要发送的信息数据与通信双方共同约定的“生成多项式”进行算术运算,根据余数得出一个校验码,然后将这个校验码附加在信息数据帧之后发送出去。接收端在接收数据后,将包括校验码在内的数据帧再与约定的生成多项式进行除法运算,若余数为“0”,则表示接收的数据正确,若余数不为“0”,则表明数据在传输的过程中出错。校验码一般是16位或者32位的位串。CRC校验的关键是如何计算校验码。
课堂同步
感兴趣的读者,可以查阅相关资料,了解循环冗余校验的计算过程。