当前位置:文档之家› 第4-2讲 差错控制技术

第4-2讲 差错控制技术


差错检测是差错控制的基础
-8
差错检测技术:原理
发送器
E = f(Data)
数据 数据 E
接收器 E, E’:差错检验码 f: 差错检验函数
数据 E
E' = f(Data) 对比
问题:为什么将检验码放在帧的尾部?
-9
奇偶检验
奇偶检验在数据的尾部附加上奇偶检验位,使 得码字中比特“1”的个数保持为奇数(奇检验) 或偶数(偶检验) 被广泛用于诸如计算机的异步串行口通信中 三种类型:
垂直冗余检验(Vertical Redundancy Checking, VRC) 水平(纵向)冗余检验(Longitudinal Redundancy Checking,LRC) 垂直水平冗余检验
-10
奇偶检验:垂直冗余检验
原理:将整个发送的信息分为长度为p位的若干段,如q段, 每段后面按“1”的个数为奇数或偶数的规律加上一位奇偶 位,其有(pq) 个信息位,每段由p位构成,共q段。
-17
Arithmetic Checksum (Cont.)
Alternatively, checksum might be 2n bits; first n bits is (sum) x1+x2+...+xk and second n bits is (sum of sum) x1+2x2+3x3+...+kxk. Example: n=16, checksum is 16 bits.
通常p值等于一个字符的长度,因此有时也将垂直冗余检 验称为字符奇偶检验。 可以用硬件或软件方法来实现连续半加(不考虑进位)运 算,且可以边发送边产生检验位,并插入检验位发送。在 接收时边接收边进行检验并除去检验位 能检测出每行中的所有奇数个位的错,但检测不出偶数个 位的错。对于突发错误而言,奇数位错与偶数位错的概率 差不多是相等的,因而对差错的漏检率接近于50%。
按二进制反码运算求和 10010110 11101011 → 求和得出的结果 将得出的结果求反码 01101001 00010100 → 检验和
-19
UDP协议的差错检测
10011001 00010011 → 00001000 01101000 → 10101011 00000011 → 00001110 00001011 → 00000000 00010001 → 00000000 00001111 → 00000100 00111111 → 00000000 00001101 → 00000000 00001111 → 00000000 00000000 → 01010100 01000101 → 01010011 01010100 → 01001001 01001110 → 01000111 00000000 → 153.19 8.104 171.3 16.11 0 和 17 15 1087 13 15 0(检验和) 数据 数据 数据 数据和 0(填充)
解决方法:用序号、计时器和确认共同检测,通 过重传的方法来纠正错误
-5
差错类型(续)
根据差错的表现形式 ,可分为四类(3)
重复(Duplication) 定义:多次收到同样的信息 主要原因:
是差错控制机制本身,如果发送方错误地认为数据丢 失了,因而重传了它,就可能造成接收方收到重复的 信息 路由选择机制引起的重复帧,如使用基于扩散的路由 选择策略(如洪泛法)
153.19.8.104
12 字节伪首部
171.3.16.11 全 0 17 15
1087
15 7 字节数据
13
全0
数据 数据 数据 数据 数据 数据 数据 全 0 填充
按二进制反码运算求和 10010110 11101011 → 求和得出的结果 将得出的结果求反码 01101001 00010100 → 检验和
(信息多项式)
问题:R(X) 等于0就肯定没有错吗? 常见多项式:
o CRC-CCITT = X16+X12+X5+1; CRC-16 = X16+X15+X2+1 o CRC-12 = X12+X11+X3+X2+X+1 o CRC-32 = X32+X26+X23+ X22+X16+X12+ X11+X10+X8+ X7+X5+X4+ X2+X+1 -15
算术检验和(因特网检验和)
尽管可以通过前面介绍的查表方法或特殊硬件 方法计算检验和来缩短处理时间,但: 对于允许一定程度漏检率的应用场合,可以采 用比CRC检验简单且又能够发现比较严重的传 输错误的方法来进行差错检测。 John Fletcher 在1982提出了这样一种差错检 测方法,称为算术检验和
只需用到加法和取模操作 算法特别简单 一些因特网协议(TCP、UDP和IP)使用这种方法, 强调易实现性和简单性
-16
Arithmetic Checksum
Error detection at the higher layer is usually done by ordinary arithmetic operations.This is simpler in software but somewhat less effective than CRC. Standard technique is to view packet as sequence of k numbers of n bits each, say x1, x2,..., xk. Checksum is then the n bit number x1+x2+...+xk using ordinary arithmetic with no carry.
解决方法:
把乱序的数据先存储下来,使得以后能把它们存放在 正确的位置上; 丢弃乱序的数据,然后按数据丢失来处理 。
-7
差错检测技术:概述
检查收到的数据是否正确
通常情况下,我们所说的差错检测是指检测收到的 数据是否被损坏,而不包括对数据丢失、重复、乱 序等差错的检测 在这样的前提下,差错检测技术所采取的方法一般 是各种检验和技术,如奇偶检验,循环冗余检验等, 本节主要介绍这方面的技术
-13
CRC检验:原理
CRC是数据通信中进行错误检查和纠正的一种重要方 法,易于编码和解码,对随机和突发错码均能以较低 冗余度实施检查。 方法:发端产生一个循环冗余检验码,附在信息位后 面发到收端,收端按照与发端同样的算法进行检验, 若有错,需要重发。 线性码:由k位信息码和r位检验码构成,每位检验码 都是前面某些信息码元的模2和(即按照线性关系相 加),码长n=k+r。 线性码特点:封闭性(任意两个码字相加仍可得到一 个码字)和循环型(一个码字作任意循环移位得到的 仍是码字)。
-3
差错类型(续)
根据差错的表现形式 ,可分为四类(1):
失真(Distortion) 定义:被传送信息中的一个或多个比特发生了改 变,或者被传送的信息中插入了一些新的信息, 后一种情况也称为“插入(Insertion)” 主要原因:
网络中物理干扰(如线路噪声) 发送者和接收者之间的失步 入侵者的故意攻击 结点中的硬件故障和软件差错等
Checksum=x1+x2+...+xk,接收端计算 x1+x2+...+xk+Checksum=0,则没有错误。
-18
UDP协议的差错检测
10011001 00010011 → 00001000 01101000 → 153.19.8.104 10101011 00000011 → 12 字节伪首部 171.3.16.11 00001110 00001011 → 00000000 00010001 → 全 0 17 15 00000000 00001111 → 两个数进行二进制反码求和的运算 1087 13 00000100 00111111 → 规则是从低位到高位逐列进行计算。 15 全0 00000000 00001101 → 0和0相加是0,0和1相加是1,1和 1 00000000 00001111 → 数据 数据 数据 数据 0但要产生一个进位1,加到 00000000 00000000 → 7相加是 字节数据 数据 数据 数据 全 0 01010100 01000101 → 下一列。最高位相加后产生的进位 01010011 01010100 → 则进到最低位,也就是循环进位。 01001001 01001110 → 填充 01000111 00000000 → 153.19 8.104 171.3 16.11 0 和 17 15 1087 13 15 0(检验和) 数据 数据 数据 数据和 0(填充)
-14
CRC检验:示例
1101010110←Q 商 除数P→110101 101000110100000←XrM 被除数 数据:M=1010001101 110101 除数P(生成多项式)= X5+X4+X2+X0 111011 XrM(X)=P(X)Q(X)+R(X) 110101 111010 模 2 运算:加法不进位,减法和加法一样, 110101 例如:1111 + 1010 = 0101 111110 冗余码(R(X))称为帧检验序列 FCS 110101 101100 T(X)=XrM(X) + R(X)称为循环码 110101 接收端运算:[XrM(X) + R(X)] / P(X) = Q(X), 110010 有错:余数R(X) !=0; 110101 01110←R 余数 无错:余数R(X) =0,去掉尾部r位便得到信息码
相关主题