数据通信与网络:CH10 Error Detection and Correction

CH10 Error Detection and Correction

10.1 INTRODUCTION

10.1.1 Types of Error

single-bit error:在给定的数据单元,仅有一位发生从0到1的变化。

burst error:数据单元中有两位或者更多位发送1到0或者0到1的错误。

  • burst error并不意味这差错在连续位上出现
  • The length of burst error is measured from the first corrupted bit to the last corrupted bit
image-20211222153516654

10.1.2 Redundancy

为了能够检测或者纠正错误,除了数据之外还要发送额外的位,称为redundancy。

10.1.3 Detection Versus Correction

Detection:只看差错是否发生,只回答是否。

Correction:知道破坏位的个数,在报文中的位置

纠错方法:向前纠错,重传

10.1.4 Forward Error Correction and Retransmission

forward error correction:接收方通过冗余位尝试推测报文,如果差错位数很小,那么可行。

retransmission:接收方检测到有差错发生并且要求发送方重新发送文本。

10.1.5 Coding

编码:块编码 & 卷积编码

image-20211222154459184

模运算modular arithmetic:使用有限范围的正整数0~N-1,其上限称为模数N。

(1)模2运算 Modulo-2 Arithmetic

image-20211222154813963

10.2 Block Coding

datawords:在块编码中,把报文划分成块,每块有 k 位,称为数据字datawords

codewords:并增加 r个冗余位使其长度变为 n = k + r,形成 n 位的块称为码字codewords

image-20211222155231083

invaild or illegal 2 n − 2 k 2^n-2^k 2n2k冗余码

10.2.1 Error Detection

可以进行差错检测的条件:

  • 接收方有有效码字的列表
  • 原来的码字变成无效的码字

如果码字在传输中被破坏,但接收到的码字仍然是一个有效的码字,差错则无法被检测到。

10.2.2 Error Correction

检错比纠错更复杂,需要加入更多的冗余位redundancy

10.2.3 Hamming distance

Hamming distance between two words d ( x , y ) d(x,y) d(x,y):两个相同长度的字的汉明距离是对应位不同的数量。

计算:对两个字异或后计算1的个数
d ( 000 , 011 ) = 2 ; d ( 000 , 101 ) = 2 d(000,011)=2;d(000,101) = 2 d(000,011)=2;d(000,101)=2

10.2.4 Minimum Hamming distance

minimum hamming distance:一组字中所有可能对的汉明距离的最小值

image-20211222161250512
(1)Three Parameters
  • datawords 长度 : k
  • codewords 长度:n
  • minimum hamming distance : d m i n d_{min} dmin

编码方案写成 C ( n , k ) C(n,k) C(n,k)和一个单独的 d m i n d_{min} dmin表达式。如上的编码方案可以写成: C ( 5 , 2 ) , d m i n = 3 C(5,2),d_{min} = 3 C(5,2),dmin=3

(2)Hamming Distance and Error

接收到的码字和发送的码字之间的汉明距离是传输中被破坏的位数。

(3)Minimum Distance of Error Detection

为了保证最多检测出s个错误,最小汉明距离 d m i n d_{min} dmin需要满足:
d m i n = s + 1 d_{min} = s+1 dmin=s+1
image-20211222162439549

(4)Minimum Distance of Error Correction

为保证最多纠正t个错误,最小汉明距离 d m i n d_{min} dmin需要满足:
d m i n = 2 t + 1 d_{min} = 2t+1 dmin=2t+1
image-20211222162546469

EXAMPLE:

d m i n = 4 d_{min} =4 dmin=4的编码方案,检错和纠错能力分别是多少?

这个方案最多检测到 3个差错 (s = 3),但是它只能纠正 1个差错。即如果这个编码用于纠错,它的部分能力被浪费了。

纠错码需要的最小距离是奇数 (3, 5, 7, . . . )。

10.3 Linear Block Codes 线性块编码

在线性块编码中,任两个有效码字的异或(即模二加)生成另一个有效码字。

image-20211222163550273

10.3.1 Minimum Hamming Distance in Linear Block Codes

线性块编码的最小汉明距离:具有最小1的个数的非0有效码字中1的个数。

image-20211222163810460

10.3.2 Some Linear Block Codes

(1)Simple Parity-Check code 简单奇偶校验码
  • 基本思路:n = k+1。冗余位使codewords中的1的个数为偶数。
  • 最小汉明距离 d m i n = 2 d_{min} = 2 dmin=2
  • simple parity check codes单个位检错编码,不能纠正任何差错
image-20211222164312794

能检测出奇数个错误

image-20211222164423711
(2)two dimensional parity check 两维奇偶校验

数据以表格形式组织,分别放在各自的行中。

对于每一行和每一列,计算出一个奇偶校验位。

two dimensional parity check可以检测出表中任意位置发生的三个差错。

image-20211222165103187
(3)Hamming Code 汉明编码

本书只讨论最小汉明距离为 d m i n = 3 d_{min} = 3 dmin=3 的汉明码,它最多能检测出 2 位差错和最多纠正 1 位差错

d m i n = 3 d_{min} = 3 dmin=3时,m和n的关系: n = 2 m − 1 n = 2^m - 1 n=2m1

汉明码要求:
{ m = r > = 3 k = n − m n = 2 m − 1 \begin{cases} m = r>=3\\ k = n -m\\ n = 2^m-1 \end{cases} m=r>=3k=nmn=2m1
image-20211222170404105

s在正确情况下一定是0,三个校正子异或得结果

注意接收方和发送方要使用相同的等式。

生成器不关系奇偶位( q 0 , q 1 , . . . , q n q_0,q_1,...,q_n q0,q1,...,qn)的错误和无差错。其他情况相应的位必须要反转,但是若出现2位错误反转后也未必正确。

image-20211222171744969

跟踪 3个数据字从发送端到目的端的路径。

数据字 0100 变成码字 0100011,接收到码字0100011。校正子是 000(无差错),最后数据字是 0100。

数据字 0111 变成码字 0111001,接收到码字 0011001。校正子是 011,b2 发生差错,反转后得到数据字 0111。

数据字 1101 变成码字 1101000,接收到码字0001000。校正子是101,b0发生差错,反转后得到数据字 0000。是错误的数据字。说明此编码检测不到两个差错。

PERFORMANCE

检测突发性错误,每个码字只有一个突发性错误。

  • 不是每次发送一个码字,每次发送表中的一列
image-20211222172927096

10.4 CYCLIC CODES 循环码

10.4.1 Cyclic Redundancy Check

循环码是有一个附加性质的特殊线性块编码。这个性质是如果码字循环移位(旋转),其结果是另一个循环码字。

数据位,码字和除数等位数关系

  • 数据位:k位
  • 码字:n位
  • 被除数补充:n-k位
  • 除数:n-k+1位

除法的余数加到数据字形成新的码字,商被丢弃。

循环冗余校验的过程:

image-20211222191106594

10.4.3 Polynomials

多项式的每一项表示位置,系数代表值

image-20211222191926661
(1)多项式的计算规则
  • 加减法
    • 加减相同幂次项的系数
    • 加和减相同
    • 加减是删除相同项,保留不同项
  • 乘除法
    • 幂次相加减
  • 多项式相乘
    • 每项分别相乘
    • 最后删除相同项
  • 多项式相除
    • 同二进制除法
  • 移位
    • 左移m位,每项乘以 x m x^m xm
    • 右移m位,每项除以 x m x^m xm
    • 没有负数幂次
image-20211222192619874

循环码的除数常称为生成多项式,简称生成子。

10.4.4 Cyclic Code Analysis 循环编码分析

一些表示:
数 据 字 d ( x ) 码 字 c ( x ) 生 成 多 项 式 g ( x ) 校 正 子 s ( x ) 差 错 e ( x ) 数据字d(x)\quad 码字c(x)\quad 生成多项式g(x)\\ 校正子s(x)\quad 差错e(x) d(x)c(x)g(x)s(x)e(x)

  • s ( x ) ≠ 0 s(x)≠0 s(x)=0:一位或者多位被破坏
  • s ( x ) = 0 s(x)=0 s(x)=0
    • 没有被破坏
    • 某些位破坏但检测不出来

接收到的码字: c ( x ) + e ( x ) c(x)+e(x) c(x)+e(x)===初始发送的码字+错误项
接 收 到 的 码 字 g ( x ) = c ( x ) + e ( x ) g ( x ) = c ( x ) g ( x ) + e ( x ) g ( x ) = e ( x ) g ( x ) \frac{接收到的码字}{g(x)} = \frac{c(x)+e(x)}{g(x)} = \frac{c(x)}{g(x)}+\frac{e(x)}{g(x)} = \frac{e(x)}{g(x)} g(x)=g(x)c(x)+e(x)=g(x)c(x)+g(x)e(x)=g(x)e(x)

Single bit error 单个位差错:

e ( x ) = x i e ( x ) g ( x ) = x i g ( x ) e(x)=x^i\\ \frac{e(x)}{g(x)} = \frac{x^i}{g(x)} e(x)=xig(x)e(x)=g(x)xi

若g(x)有两项(一般来说), x 0 x^0 x0项系数不为0,那么不能除尽,可以检错

image-20211222194453148
Two isolated Single-Bit Error两个独立的单个位差错:

e ( x ) = x i + x j e(x) = x^i+x^j e(x)=xi+xj i i i j j j表示差错位置, i − j i-j ij表示差错距离

image-20211222194621452

则: e ( x ) = x i ( x j − i + 1 ) e(x) = x^i(x^{j-i}+1) e(x)=xi(xji+1)
e ( x ) g ( x ) = x i ( x j − i + 1 ) g ( x ) \frac{e(x)}{g(x)} = \frac{x^i(x^{j-i}+1)}{g(x)} g(x)e(x)=g(x)xi(xji+1)
若g(x)的表达式为____+1,那么要想能满足差错检测,即不能被 x i ( x j − i + 1 ) x^i(x^{j-i}+1) xi(xji+1)整除

image-20211222194940553
Odd Numbers of Error 奇数个错误:

包含 x + 1 x+1 x+1因子的生成多项式能检测到所有奇数个差错

Burst Error突发性差错:

突发性差错项: e ( x ) = x j + . . . + x i = x i ( x j − i + . . . + 1 ) e(x) = x^j+...+x^i=x^i(x^{j-i}+...+1) e(x)=xj+...+xi=xi(xji+...+1)

  • 能检测任何的单比特差错: g ( x ) g(x) g(x)不能整除 x i x^i xi
  • ( x j − i + . . . + 1 ) / ( x r + . . . + 1 ) (x^{j-i}+...+1)/(x^r+...+1) (xji+...+1)/(xr+...+1),除数代表不能整除 x i x^i xi的生成多项式,此时有三种情况:
    • j − i < r j-i<r ji<r,令 L = j − i + 1 [ 差 错 长 度 ] L = j-i+1[差错长度] L=ji+1[],即差错长度 L < r + 1 L<r+1 L<r+1时,任何差错可以被检测
    • j − i = r j-i=r ji=r,令 L = r + 1 L = r+1 L=r+1,长度为r+1的差错无法检测的概率是 ( 1 2 ) r − 1 (\frac{1}{2})^{r-1} (21)r1
    • j − i > r j-i>r ji>r,令 L > r + 1 L > r+1 L>r+1,长度大于r+1的差错无法检测的概率是 ( 1 2 ) r (\frac{1}{2})^{r} (21)r

高性能生成多项式的特点:

  • 至少有两项

  • x0 的系数一定不为 0**

  • 不能整除$ x^ t + 1(2 ≤ t ≤ n − 1)$

  • 应当有因子 x + 1 x + 1 x+1

10.5 Checksum

用校验和进行简单检错的方法常用于Internet的其它高层协议中。

发送数据时,同时还发送它们的和(用于检错校验,因此称为校验和)。

校验和的步骤:【发送方】

  • 报文被划分为16-bit 字。
  • 校验和字的初始值设为0。
  • 所有字包括校验和使用反码运算相加。
  • 对累加和求反码变成校验和。
  • 校验和随数据一起发送。

校验和的步骤:【接收方】

  • 报文(包括校验和)被划分成16位字。
  • 使用反码运算将所有字相加
  • 对该和求反码生成新校验和
  • 如果校验和是0,接收报文,否则丢弃
image-20211222201556684

  • 报文被划分为16-bit 字。
  • 校验和字的初始值设为0。
  • 所有字包括校验和使用反码运算相加。
  • 对累加和求反码变成校验和。
  • 校验和随数据一起发送。

校验和的步骤:【接收方】

  • 报文(包括校验和)被划分成16位字。
  • 使用反码运算将所有字相加
  • 对该和求反码生成新校验和
  • 如果校验和是0,接收报文,否则丢弃
image-20211222201556684
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Blanche117

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值