数据通信与网络:CH10 Error Detection and Correction
CH10 Error Detection and Correction
文章目录
- CH10 Error Detection and Correction
- 10.1 INTRODUCTION
- 10.1.1 Types of Error
- 10.1.2 Redundancy
- 10.1.3 Detection Versus Correction
- 10.1.4 Forward Error Correction and Retransmission
- 10.1.5 Coding
- (1)模2运算 Modulo-2 Arithmetic
- 10.2 Block Coding
- 10.2.1 Error Detection
- 10.2.2 Error Correction
- 10.2.3 Hamming distance
- 10.2.4 Minimum Hamming distance
- (1)Three Parameters
- (2)Hamming Distance and Error
- (3)Minimum Distance of Error Detection
- (4)Minimum Distance of Error Correction
- 10.3 Linear Block Codes 线性块编码
- 10.3.1 Minimum Hamming Distance in Linear Block Codes
- 10.3.2 Some Linear Block Codes
- (1)Simple Parity-Check code 简单奇偶校验码
- (2)two dimensional parity check 两维奇偶校验
- (3)Hamming Code 汉明编码
- PERFORMANCE
- 10.4 CYCLIC CODES 循环码
- 10.4.1 Cyclic Redundancy Check
- 10.4.3 Polynomials
- (1)多项式的计算规则
- 10.4.4 Cyclic Code Analysis 循环编码分析
- Single bit error 单个位差错:
- Two isolated Single-Bit Error两个独立的单个位差错:
- Odd Numbers of Error 奇数个错误:
- Burst Error突发性差错:
- 10.5 Checksum
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
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
编码:块编码 & 卷积编码
模运算modular arithmetic:使用有限范围的正整数0~N-1,其上限称为模数N。
(1)模2运算 Modulo-2 Arithmetic
10.2 Block Coding
datawords:在块编码中,把报文划分成块,每块有 k 位,称为数据字datawords
codewords:并增加 r个冗余位使其长度变为 n = k + r,形成 n 位的块称为码字codewords
invaild or illegal:2n−2k2^n-2^k2n−2k冗余码
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)=2d(000,011)=2;d(000,101) = 2 d(000,011)=2;d(000,101)=2
10.2.4 Minimum Hamming distance
minimum hamming distance:一组字中所有可能对的汉明距离的最小值。
(1)Three Parameters
- datawords 长度 : k
- codewords 长度:n
- minimum hamming distance :dmind_{min}dmin
编码方案写成C(n,k)C(n,k)C(n,k)和一个单独的dmind_{min}dmin表达式。如上的编码方案可以写成:C(5,2),dmin=3C(5,2),d_{min} = 3C(5,2),dmin=3
(2)Hamming Distance and Error
接收到的码字和发送的码字之间的汉明距离是传输中被破坏的位数。
(3)Minimum Distance of Error Detection
为了保证最多检测出s个错误,最小汉明距离dmind_{min}dmin需要满足:
dmin=s+1d_{min} = s+1 dmin=s+1
(4)Minimum Distance of Error Correction
为保证最多纠正t个错误,最小汉明距离dmind_{min}dmin需要满足:
dmin=2t+1d_{min} = 2t+1 dmin=2t+1
EXAMPLE:
dmin=4d_{min} =4dmin=4的编码方案,检错和纠错能力分别是多少?
这个方案最多检测到 3个差错 (s = 3),但是它只能纠正 1个差错。即如果这个编码用于纠错,它的部分能力被浪费了。
纠错码需要的最小距离是奇数 (3, 5, 7, . . . )。
10.3 Linear Block Codes 线性块编码
在线性块编码中,任两个有效码字的异或(即模二加)生成另一个有效码字。
10.3.1 Minimum Hamming Distance in Linear Block Codes
线性块编码的最小汉明距离:具有最小1的个数的非0有效码字中1的个数。
10.3.2 Some Linear Block Codes
(1)Simple Parity-Check code 简单奇偶校验码
- 基本思路:n = k+1。冗余位使codewords中的1的个数为偶数。
- 最小汉明距离dmin=2d_{min} = 2dmin=2
- simple parity check codes单个位检错编码,不能纠正任何差错
能检测出奇数个错误
(2)two dimensional parity check 两维奇偶校验
数据以表格形式组织,分别放在各自的行中。
对于每一行和每一列,计算出一个奇偶校验位。
two dimensional parity check可以检测出表中任意位置发生的三个差错。
(3)Hamming Code 汉明编码
本书只讨论最小汉明距离为 dmin=3d_{min} = 3dmin=3 的汉明码,它最多能检测出 2 位差错和最多纠正 1 位差错。
当dmin=3d_{min} = 3dmin=3时,m和n的关系:n=2m−1n = 2^m - 1n=2m−1
汉明码要求:
{m=r>=3k=n−mn=2m−1\begin{cases} m = r>=3\\ k = n -m\\ n = 2^m-1 \end{cases} ⎩⎪⎨⎪⎧m=r>=3k=n−mn=2m−1
s在正确情况下一定是0,三个校正子异或得结果
注意接收方和发送方要使用相同的等式。
生成器不关系奇偶位(q0,q1,...,qnq_0,q_1,...,q_nq0,q1,...,qn)的错误和无差错。其他情况相应的位必须要反转,但是若出现2位错误反转后也未必正确。
跟踪 3个数据字从发送端到目的端的路径。
数据字 0100 变成码字 0100011,接收到码字0100011。校正子是 000(无差错),最后数据字是 0100。
数据字 0111 变成码字 0111001,接收到码字 0011001。校正子是 011,b2 发生差错,反转后得到数据字 0111。
数据字 1101 变成码字 1101000,接收到码字0001000。校正子是101,b0发生差错,反转后得到数据字 0000。是错误的数据字。说明此编码检测不到两个差错。
PERFORMANCE
检测突发性错误,每个码字只有一个突发性错误。
- 不是每次发送一个码字,每次发送表中的一列
10.4 CYCLIC CODES 循环码
10.4.1 Cyclic Redundancy Check
循环码是有一个附加性质的特殊线性块编码。这个性质是如果码字循环移位(旋转),其结果是另一个循环码字。
数据位,码字和除数等位数关系
- 数据位:k位
- 码字:n位
- 被除数补充:n-k位
- 除数:n-k+1位
除法的余数加到数据字形成新的码字,商被丢弃。
循环冗余校验的过程:
10.4.3 Polynomials
多项式的每一项表示位置,系数代表值
(1)多项式的计算规则
- 加减法
- 加减相同幂次项的系数
- 加和减相同
- 加减是删除相同项,保留不同项
- 乘除法
- 幂次相加减
- 多项式相乘
- 每项分别相乘
- 最后删除相同项
- 多项式相除
- 同二进制除法
- 移位
- 左移m位,每项乘以xmx^mxm
- 右移m位,每项除以xmx^mxm
- 没有负数幂次
循环码的除数常称为生成多项式,简称生成子。
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)≠0s(x)≠0s(x)=0:一位或者多位被破坏
- s(x)=0s(x)=0s(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)=xie(x)g(x)=xig(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)有两项(一般来说),x0x^0x0项系数不为0,那么不能除尽,可以检错
Two isolated Single-Bit Error两个独立的单个位差错:
设e(x)=xi+xje(x) = x^i+x^je(x)=xi+xj,iii和jjj表示差错位置,i−ji-ji−j表示差错距离
则:e(x)=xi(xj−i+1)e(x) = x^i(x^{j-i}+1)e(x)=xi(xj−i+1)
e(x)g(x)=xi(xj−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(xj−i+1)
若g(x)的表达式为____+1,那么要想能满足差错检测,即不能被xi(xj−i+1)x^i(x^{j-i}+1)xi(xj−i+1)整除
Odd Numbers of Error 奇数个错误:
包含x+1x+1x+1因子的生成多项式能检测到所有奇数个差错。
Burst Error突发性差错:
突发性差错项:e(x)=xj+...+xi=xi(xj−i+...+1)e(x) = x^j+...+x^i=x^i(x^{j-i}+...+1)e(x)=xj+...+xi=xi(xj−i+...+1)
- 能检测任何的单比特差错:g(x)g(x)g(x)不能整除xix^ixi
- (xj−i+...+1)/(xr+...+1)(x^{j-i}+...+1)/(x^r+...+1)(xj−i+...+1)/(xr+...+1),除数代表不能整除xix^ixi的生成多项式,此时有三种情况:
- j−i<rj-i<rj−i<r,令L=j−i+1[差错长度]L = j-i+1[差错长度]L=j−i+1[差错长度],即差错长度L<r+1L<r+1L<r+1时,任何差错可以被检测
- j−i=rj-i=rj−i=r,令L=r+1L = r+1L=r+1,长度为r+1的差错无法检测的概率是(12)r−1(\frac{1}{2})^{r-1}(21)r−1
- j−i>rj-i>rj−i>r,令L>r+1L > r+1L>r+1,长度大于r+1的差错无法检测的概率是(12)r(\frac{1}{2})^{r}(21)r
高性能生成多项式的特点:
至少有两项
x0 的系数一定不为 0**
不能整除$ x^ t + 1(2 ≤ t ≤ n − 1)$
应当有因子x+1x + 1x+1
10.5 Checksum
用校验和进行简单检错的方法常用于Internet的其它高层协议中。
发送数据时,同时还发送它们的和(用于检错校验,因此称为校验和)。
校验和的步骤:【发送方】
- 报文被划分为16-bit 字。
- 校验和字的初始值设为0。
- 所有字包括校验和使用反码运算相加。
- 对累加和求反码变成校验和。
- 校验和随数据一起发送。
校验和的步骤:【接收方】
- 报文(包括校验和)被划分成16位字。
- 使用反码运算将所有字相加
- 对该和求反码生成新校验和
- 如果校验和是0,接收报文,否则丢弃
】
- 报文被划分为16-bit 字。
- 校验和字的初始值设为0。
- 所有字包括校验和使用反码运算相加。
- 对累加和求反码变成校验和。
- 校验和随数据一起发送。
校验和的步骤:【接收方】
- 报文(包括校验和)被划分成16位字。
- 使用反码运算将所有字相加
- 对该和求反码生成新校验和
- 如果校验和是0,接收报文,否则丢弃
数据通信与网络:CH10 Error Detection and Correction相关推荐
- Error detection in Knowledge Graphs: Path Ranking, Embeddings or both?-学习笔记
Error detection in Knowledge Graphs: Path Ranking, Embeddings or both? 错误的三元组本质上是对象s与对象o(两者均为E)之间的错误 ...
- A PAINLESS GUIDE TO CRC ERROR DETECTION ALGORITHM
http://www.repairfaq.org/filipg/LINK/F_crc_v31.html#CRCV_001 A PAINLESS GUIDE TO CRC ERROR DETECTION ...
- 数据通信与网络教材目录
目录 第1章:概述 1.1 计算机网络在信息时代中的作用 1.2互联网概述 1.2.1 网络的网络 1.2.2 网络基础结构发展的三个阶段 1.2.3 互联网的标准化工作 1.3 互联网的组成 1.3 ...
- 第六章 数据通信与网络基础
一. 网络相关基础概念 1.网络的功能. 数据通信.资源共享.负载均衡.高可用性. 2.网络的分类. 局域网.城域网.广域网. 3.网络的拓扑结构. 总线型结构.树型结构.星型结构.网状结构. ...
- 计算机网络与通信Day01:数据通信,网络,连接类型,网络分类
目录 0x00 数据通信: 1.数据通信系统的四个关键因素: 2.数据通信系统的五个组件 3.数据流 0x01 网络 1.分布式处理 2.网络准则: 3.连接类型: 网络拓扑结构: 1.全连接结构 S ...
- 数据通信与网络:CH12 Multiple Access
CH12 Multiple Access 文章目录 CH12 Multiple Access 12.1 Random Access Protocal 12.1.1 ALOHA (1)Pure ALOH ...
- 编译DCNv2网络:error: command ‘C:\\Program Files\\NVIDIAGPUComputingToolkit\\CUDA\\v10.0\\bin\\nvcc.exe‘
在复现FairMOT时编译DCNv2出现了一个错误 error: command 'C:\\Program Files\\NVIDIAGPUComputingToolkit\\CUDA\\v10.0\ ...
- 《数据通信与网络》笔记--广域网SONET/SDH
光纤的高带宽适用于今天的高数据速率和低速率下同时承载大量的数据.基于这个原因,光纤和要求搞数据速率或者高带宽传输技术共同发展,继而有了标准化的需要,因此美国组织(ANSI)和欧洲组织(ITU-T)定义 ...
- 《数据通信与网络》笔记--无线局域网
802.11是IEEE制定的一个无线局域网标准.全家族如下: *IEEE 802.11,1997年,原始标准(2Mbit/s,工作在2.4GHz). * IEEE802.11a,1999年,物理层补充 ...
最新文章
- ios获取新数据要不要关_iOS开发之数据读写
- 从月薪3000到月薪30000,web前端应该怎么学?
- JavaWeb——Servlet开发3
- django models 配置
- 53.Linux/Unix 系统编程手册(下) -- POSIX 信号量
- 恢复有道词典单词记录本的几种方法(非完美)
- 【状压DP】易懂讲解状态压缩/状态压缩DP
- Windows下MySQL定时备份脚本
- 微信公众号推送模板跳转小程序
- 怎么用计算机管理员卸载,没有足够的权限卸载请与系统管理员联系怎么解决
- 三星a5000刷Android原生,三星 A5000中文Recovery刷机教程
- 转载:typhoon 必备英文词汇
- [开心幽默]一对北京情侣是如何吵架的 !(暴笑)
- How to covert HEIF to JPG with Java
- 圣墟(圣墟最新章节,圣墟无弹窗全文阅读,圣墟无广告全文阅读)
- OneDrivet账号怎么解封
- C语言完整代码实现:二叉树的先序遍历、中序遍历、后序遍历
- Django在view中读取txt文件
- cs无限僵尸服务器,CS1.6僵尸版
- 人工智能技术应用就业前景和就业方向
热门文章
- 一天一条Linux指令-tailf
- OOM系列之一:java.lang.OutOfMemoryError: Java堆空间问题详解
- centos + git + gitolite 服务搭建
- .mht文件转换为html
- Python中的StringIO与cStringIO简析
- Empire信息收集
- 横空出世IDEA画图神器来了,比Visio快10倍
- 原理分析:安卓手机桌面长按分享,安卓发送软件apk,qq发送软件apk 原理
- python猜单词游戏实验原理_猜单词游戏课程设计报告
- 3120TL条码打印机驱动安装指导