错误检测代码–校验和是什么?

2021年4月25日17:29:26 发表评论 1,365 次浏览

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

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

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

错误检测代码–校验和1

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

示例–

如果要发送的数据单元是10101001 00111001, 则在发送方站点和接收方站点使用以下过程。

发件人网站:

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

传输到接收器的数据是–

错误检测代码–校验和2

接收者网站:

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

Result is zero, it means no error.

优势:

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

坏处 :

主要问题是, 如果一个子单元的一个或多个位被损坏, 一个子单元的一个或多个对应位被损坏, 并且第二个子单元中一个或多个相反值的对应位也被损坏, 则错误不会被检测到。这是因为这些列的总和保持不变。

示例–

如果校验和同时传输的数据为10101001 00111001 00011101。但是目的端收到的数据是00101001 10111001 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

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


木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: