📜  计算机网络|错误纠正

📅  最后修改于: 2020-11-09 09:57:55             🧑  作者: Mango

错误修正

当数据从发送方传输到接收方时,纠错码用于检测和纠正错误。

纠错可以通过两种方式处理:

  • 向后纠错:发现错误后,接收方会请求发送方重新传输整个数据单元。
  • 前向纠错:在这种情况下,接收器使用纠错码自动纠正错误。

单个附加位可以检测到错误,但无法纠正。

为了纠正错误,必须知道错误的确切位置。例如,如果我们要计算一位错误,则纠错码将确定错误的七位中的哪一位。为此,我们必须添加一些额外的冗余位。

假设r是冗余位数,而d是数据位数。冗余位数r可以使用以下公式计算:

通过使用上式计算r的值。例如,如果d的值为4,则满足上述关系的可能的最小值将为3。

为了确定错误的位的位置,RW Hamming开发的技术是Hamming码,可以将其应用于数据单元的任何长度,并使用数据单元和冗余单元之间的关系。

海明码

奇偶校验位:附加到二进制位原始数据的位,以使总数为1的数为偶数或奇数。

偶数奇偶校验:要检查偶数奇偶校验,如果1的总数为偶数,则奇偶校验位的值为0。如果1的总数为奇数,则奇偶校验位的值为1。

奇校验:检查奇校验时,如果1的总数为偶数,则奇偶校验位的值为1。如果1的总数为奇数,则奇偶校验位的值为0。

海明码 STL algorithm:

  • 将“ d”位的信息添加到冗余位“ r”以形成d + r。
  • 每个(d + r)位的位置都分配了一个十进制值。
  • “ r”位放置在位置1,2,….. 2 k-1中
  • 在接收端,重新计算奇偶校验位。奇偶校验位的十进制值确定错误的位置。

关系b / w错误位置和二进制数。

让我们通过一个例子来理解汉明代码的概念:

假设要发送的原始数据是1010。

确定冗余位的位置

冗余位数为3。这三个位数分别由r1,r2,r4表示。计算冗余位的位置对应于提升的功率2。因此,它们的对应位置为1、21、22。

The position of r1 = 1
The position of r2 = 2
The position of r4 = 4

附加奇偶校验位的数据表示:

确定奇偶校验位

确定r1位

通过对在第一位置中二进制表示为1的位位置执行奇偶校验来计算r1位。

从上图中我们观察到,在第一个位置包含1的位的位置是1、3、5、7。现在,我们在这些位位置执行偶校验。在这些对应于r1的位位置上的总数1为偶数,因此r1位的值为0。

确定r2位

通过对二进制位置在第二位置中包含1的位位置执行奇偶校验来计算r2位。

从上图可以看出,在第二个位置包含1的位位置是2、3、6、7。现在,我们在这些位位置执行偶校验。在这些与r2对应的位位置上的总1的数目是奇数,因此r2的值是1。

确定r4位

通过对二进制位置在第三位置中包含1的位位置执行奇偶校验来计算r4位。

从上图中我们观察到,在第三位置包含1的位位置是4、5、6、7。现在,我们在这些位位置执行偶校验。在这些对应于r4的位位置上的总数1为偶数,因此r4位的值为0。

传输的数据如下:

假设第4位在接收端从0变为1,然后重新计算奇偶校验位。

R1位

r1位的位位置是1,3,5,7

从上图可以看出,r1的二进制表示为1100。现在,我们执行偶校验检查,r1位中出现的1的总数为偶数。因此,r1的值为0。

R2位

r2位的位位置是2、3、6、7。

从上图可以看出,r2的二进制表示为1001。现在,我们执行偶校验检查,r2位中出现的1的总数为偶数。因此,r2的值为0。

R4位

r4位的位位置是4,5,6,7。

从上图可以看出,r4的二进制表示为1011。现在,我们执行偶校验检查,r4位中出现的1的总数为奇数。因此,r4的值为1。

  • 冗余位的二进制表示,即r4r2r1为100,其对应的十进制值为4。因此,错误发生在4位。该位值必须从1更改为0以纠正错误。