1. 二进制数据传输中错误的检测和修正

        在二进制传输中,由于各种原因(如电磁干扰、硬件故障等),数据位可能会发生变化,导致“1”变成“0”,或者“0”变成“1”,这就是所谓的传输错误。

2. 如何检测错误

        一般通过在发送的数据块后附加一些额外的冗余序列来实现错误检测。

        这个冗余序列是通过特定的函数计算出来的,通常基于原始数据。

        当数据到达目的地时,会用同样的函数对数据进行计算,并将计算结果与传输的冗余序列进行比较。

        如果两者不匹配,则意味着在传输过程中发生了错误。

3. 如何修正错误

        如果冗余序列足够详细并具有错误修正的特性,可以直接进行错误修正。另一种常见的修正方法是通过重传。当检测到错误时,接收方可以请求发送方重发原始数据。

        错误检测和修正是通信系统中非常重要的部分,它们确保数据的完整性和准确性。有多种算法和协议可以用于错误检测和修正,包括奇偶校验、循环冗余校验(CRC)、哈明码等。

4. 通过冗余序列进行错误检测的过程

4.1 错误检测机制

        在发送消息之前,会根据原始消息(Message d'origine)使用一个特定的计算函数(fonction de calcul)来生成一个冗余序列(redondance)。

        这个冗余序列随后会附加到原始消息的末尾,一起组成了最终传输的消息(Message transmis)。

        当消息到达接收方后,会用同一个计算函数对接收到的原始消息部分进行计算,以产生一个新的冗余序列。

        接收方将这个新计算出的冗余序列与接收到的冗余序列进行比较。

        如果两个冗余序列相同,则认为消息没有错误;如果不同,则认为消息在传输过程中发生了错误。

4.2 常见的错误检测方法

4.2.1 奇偶校验位

        添加一个位来保证整个数据序列的1的数量为奇数或偶数。

        奇偶校验位用于错误检测的方法

        奇偶校验位错误检测:

        奇偶校验位:是在数据序列中加入的一个额外的位,用于检测数据是否在传输过程中发生了错误。

        偶校验(parité paire):奇偶校验位设置为使得包括校验位在内的整个序列中1的总数为偶数。

        奇校验(parité impaire):奇偶校验位设置为使得包括校验位在内的整个序列中1的总数为奇数。

        举例来说,如果数据序列是`1 0 0 1 0 0 1 0`,

        我们使用偶校验,校验位会被设置为1,使得整个序列中1的数量(4个)加上校验位后总数为偶数(5个)。如果是奇校验,给定同样的数据序列,校验位会被设置为0,因为不包括校验位的序列中1的数量(3个)已经是奇数。 

        奇偶校验方法不能检测所有类型的错误,特别是不能检测到双错误(即序列中两个位同时发生错误的情况)。它还提到,这种方法常用于PC的串行接口标准,如ANSI RS232-C(国际电信联盟的V24标准)。这是一种简单但有限的错误检测技术,通常用在错误率不高的通信信道中。

4.2.2 循环冗余校验(CRC, Cyclic Redundancy Code)

        一种用于检测数据传输或存储中的错误的方法。

        多项式除法来进行错误检测的方法,这种方法通常用于计算循环冗余校验(CRC)码

        多项式除法错误检测:

        数据表示:一个二进制消息`M`可以被视为一串位,也可以视为一个多项式。例如,二进制串101101`可以对应于多项式`x^5 + x^3 + x^2 + 1`。

        消息长度:如果消息`M`有`m`个位,那么它可以表示为一个`m-1`次多项式。

        生成多项式:选择一个`n`位的生成多项式`G`,其次数为`n-1`。这个多项式用于生成CRC码,其中`n`必须小于`m`。

        多项式乘法:将消息`M`乘以`x^n`(等同于将`M`向左移`n`位),这样可以在`M`的末尾腾出`n`位空间。

        除法与余数:将修改后的消息`M'`(即`M`乘以`x^n`的结果)除以生成多项式`G`,得到的余数就是CRC码。(这里的除法是模2除法),得到商`Q`和余数`R`。

        构造传输多项式:然后构造一个新的多项式`T`,它等于`M'`减去余数`R`(在模2算术中,减法与加法相同)。

        发送消息:将原始消息`M`和这个CRC码一起发送。接收方使用同样的生成多项式`G`对接收到的消息(包括CRC)进行除法运算。如果余数为0,则认为在传输过程中没有发生错误;如果余数不为0,则表示检测到错误。

        多项式乘法和除法的示意图,说明了如何将消息`M`转换成`M'`并为其添加CRC码。CRC是一种广泛使用的强大错误检测技术,能够检测到由于噪声引起的多位错误。

        公式`T = M' - R = G × Q`展示了如何通过生成多项式`G`来确保传输的数据`T`在没有错误的情况下能够被`G`整除。这是一种非常可靠的错误检测机制,广泛应用于各种数据通信和存储系统中。通过这种方法,可以检测到传输过程中发生的错误,并且在很多情况下还能确定错误发生的位置。

01-19 10:43