📜  错误检测代码–校验和

📅  最后修改于: 2021-08-24 05:04:30             🧑  作者: Mango

先决条件–计算机网络中的错误检测

校验和是上层协议使用的错误检测方法,并且被认为比LRC,VRC和CRC更可靠。此方法在发送方使用校验和生成器,在接收方使用校验和校验器。

在发送方,数据由校验和生成器分为n位长度的相等子单元。该位通常为16位长度。然后使用一个称赞方法将这些子单元加在一起。该和为n位。然后对得到的位进行补充。这个称为校验和的补充和被附加到原始数据单元的末尾,然后被发送到接收器。

接收器在接收到数据+校验和之后,将其传递给校验和检查器。校验和检查器将此数据单元划分为多个等长的子单元,并将所有这些子单元相加。这些子单元还包含校验和作为子单元之一。然后对结果位进行补码。如果补余结果为零,则表示数据没有错误。如果结果不为零,则意味着数据包含错误,并且Receiver拒绝该错误。例子 –
如果要发送的数据单元是10101001 00111001,则在发送方站点和接收方站点使用以下过程。

发件人网站:

10101001        subunit 1  
00111001        subunit 2        
11100010        sum (using 1s complement)       
00011101        checksum (complement of sum)

传输到接收器的数据是–

接收者网站:

10101001        subunit 1  
00111001        subunit 2     
00011101        checksum 
11111111        sum
00000000        sum's complement

Result is zero, it means no error.

优势 :
校验和检测所有涉及奇数位的错误以及涉及偶数位的错误。

坏处 :
主要问题是,如果子单元的一个或多个位被损坏,并且子单元的一个或多个对应位被损坏,并且第二子单元中一个或多个相反值的对应位也被损坏,则错误不会被检测到。这是因为这些列的总和保持不变。例子 –
如果与校验和一起发送的数据是10101001 0011100100011101。但是在目的地接收的数据是0 0101001 1 0111001 00011101。

接收者网站:

00101001              1st bit of subunit 1 is damaged
10111001              1st bit of subunit 2 is damaged
00011101              checksum
11111111              sum
00000000              Ok 1's complement

尽管数据已损坏,但未检测到错误。