差错检测和纠错

链路层在主机的体系结构中,其实就是网络适配器。

关于链路层所提供的比特级差错检测和纠错,提供两种服务:对从一个节点发送到另一个物理上连接的邻近节点的链路层帧,检测和纠正其中的比特差错。其中有3种技术:奇偶校验、检验和方法(通常更多地应用于运输层)、循环冗余检测(通常更多地应用在适配器中的链路层)。

奇偶校验最简单的方式就是用单个奇偶校验位。其缺点就是无法校验偶数个比特差错。另外包含一些二维奇偶校验。

检验和方法,就是将k比特整数加起来,如TCP和UDP中的校验和就是基于这种方法。

循环冗余检测(CRC),是现今计算机网络中广泛应用的差错检测技术。下面是举例说明CRC编码处理机制。

在接收端收到了CRC码后用生成多项式为G(x)去做模2除,若得到余数为0,则码字无误。若如果有一位出错,则余数不为0,而且不同位出错,其余数也不同。可以证明,余数与出错位的对应关系只与码制及生成多项式有关,而与待测碼字(信息位)无关。图10给出了G(x)1011C(x)1010的出错模式,改变C(x)(码字),只会改变表中码字内容,不改变余数与出错位的对应关系。

 

收到的CRC码字

余数

出错位

码位

A7

A6

A5

A4

A3

A2

A1

正确

1

0

1

0

0

1

1

000

1

0

1

0

0

1

0

1

0

1

0

0

0

1

1

0

1

0

1

1

1

1

0

1

1

0

1

1

1

0

0

0

0

1

1

1

1

1

0

0

1

1

0

0

1

0

0

1

1

001

010

100

011

110

111

101

1

2

3

4

5

6

7

10 74CRC码的出错模式(G(x)1011

如果循环码有一位出错,用G(x)作模2除将得到一个不为0的余数。如果对余数补0继续除下去,我们将发现一个有趣的结果;各次余数将按图10顺序循环。例如第一位出错,余数将为001,补0后再除(补0后若最高位为1,则用除数做模2减取余;若最高位为0,则其最低3位就是余数),得到第二次余数为010。以后继续补0作模2除,依次得到余数为1000ll…,反复循环,这就是循环码名称的由来。这是一个有价值的特点。如果我们在求出余数不为0后,一边对余数补0继续做模2除,同时让被检测的校验码字循环左移。图10说明,当出现余数(101)时,出错位也移到A7位置。可通过异或门将它纠正后在下一次移位时送回A1。这样我们就不必像海明校验那样用译码电路对每一位提供纠正条件。当位数增多时,循环码校验能有效地降低硬件代价,这是它得以广泛应用的主要原因。

【例】对图10CRC码(G(x)1011C(x)1010),若接收端收到的码字为1010111,用G(x)1011做模2除得到一个不为0的余数100,说明传输有错。将此余数继续补0G(x)1011作模2除,同时让码字循环左移1010111。做了4次后,得到余数为101,这时码字也循环左移4位,变成1111010。说明出错位已移到最高位A7,将最高位1取反后变成0111010。再将它循环左移3位,补足7次,出错位回到A3位,就成为一个正确的码字1010011

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值