计算机网络-链路层-差错控制
差错控制差错控制是数据通信中保障传输可靠性的核心技术通过检错编码与纠错编码两类手段发现并处理传输过程中产生的比特错误。检错编码如奇偶校验、CRC仅识别错误不定位错误位置发现后直接丢弃数据帧并请求发送方重传实现简单、开销小适合对实时性要求不高的场景。纠错编码如海明码通过插入冗余校验位不仅能检测错误还能精准定位并自动纠正 1 位错误无需重传适合重传代价高的场景扩展后可检测 2 位错误但 2 位错仍需重传。整体目标是在有限冗余开销下最大化数据传输的准确性与效率。所谓差错控制的核心目标就是发现并解决一个帧内部的比特错误保障数据传输的可靠性。类型核心功能典型实现检错编码发现比特错误 → 丢弃帧并要求发送方重传奇偶校验、CRC 循环冗余校验纠错编码发现并纠正比特错误无需重传海明码汉明码一、检错编码1. 奇偶校验码基本原理在信息位后添加 1 位校验位使整个校验码信息位 校验位中 “1” 的个数满足奇校验码“1” 的个数为奇数偶校验码“1” 的个数为偶数更常用可通过异或运算实现结构示意**示例**采用偶校验码进行差错控制假设有效信息数据是10110001那么信息为中共有偶数个1.因此校验位为0校验码为0 10110001接收方收到数据后对校验码进行校验如果发现整个校验码中有偶数个1则认为没有差错否则认为数据出错校验能力只能检测奇数位错误无法检测偶数位错误无法定位错误位置不具备纠错能力2. CRC 循环冗余校验码工程常用核心原理发送方与接收方约定一个生成多项式G(x)将信息位与校验位组合后保证能被 G(x) 对应的二进制码模 2 除尽余数为 0。关键参数k信息位位数r生成多项式的最高次幂即校验位位数总码长Nkr结构示意示例双方约定生成多项式为G(x)x3x21G(x)x^3x^21G(x)x3x21信息码为101001求CRC码确定生成多项式二进制码G(x)1⋅x31⋅x20⋅x11⋅x0G(x)1⋅x^31⋅x^20⋅x^11⋅x^0G(x)1⋅x31⋅x20⋅x11⋅x0⟹1101r3k信息码长度6总码长 N639信息位左移补 0在信息位后补 r 个 0 →101001000模 2 除法求余数用补 0 后的信息码除以生成多项式1101得到 r 位余数即校验位具体运算过程在下方拼接 CRC 码CRC 码 原信息码 余数 →101001001模 2 运算规则模 2 减法 异或运算无借位1−10,1−01,0−11,0−00模 2 除法只看被除数最高位为 1 则商 1 并做模 2 减为 0 则商 0 并补 0检错能力可检测所有奇数位错误可检测所有长度 ≤r 的突发错误无法纠错仅用于检错重传二、纠错编码海明码汉明码核心思想将信息位分组进行偶校验生成多个校验位通过多组校验结果定位并纠正 1 位错误。校验位数量计算海明不等式设信息位为 n 位校验位为 k 位总码长 nk 位需满足2k≥nk1 2k≥nk12k≥nk1含义k 个校验位可表示 2k 种状态其中 1 种表示 “无错误”剩余 2k−1 种需覆盖 nk 位中任意 1 位出错的情况。示例计算设信息位1010(四位,n4)求海明码1.确定海明码的位数试算 k32382^382384318满足不等式 → 需 3 个校验位P1 P2 P3信息位n4记为D4 D3 D2 D1总码长437 位记为H7 H6 H5 H4 H3 H2 H12.确定校验位的分布三个校验位并不是在开头或者结尾而是每一个都有自己定位置校验位Pi要放在海明码位号为2(i−1)2^(i-1)2(i−1)的位置上信息位则按顺序放到空位P1→201→H1P1 → 2^01 → H1P1→201→H1P2→212→H2P2 → 2^12 → H2P2→212→H2P3→224→H4P3 → 2^24 → H4P3→224→H4海明码位H7H6H5H4H3H2H1对应位D4D3D2P3D1P2P1示例值10103.确定分组有三个校验位则需要把信息位分成三个组分别做偶校验得到三个校验码分组方式将每个信息位的位置编号转为二进制二进制中某一位为 1则该信息位属于对应校验位的分组D1H3 → 3 →011→ 属于 P1,P2 组D2H5 → 5 →101→ 属于 P1,P3 组D3H6 → 6 →110→ 属于 P2,P3 组D4H7 → 7 →111→ 属于 P1,P2,P3 组直观的理解分组结果P1 组D1,D2,D4P2 组D1,D3,D4P3 组D2,D3,D44.计算校验位取值偶校验P1D1⊕D2⊕D40⊕1⊕10P2D1⊕D3⊕D40⊕0⊕11P3D2⊕D3⊕D41⊕0⊕10生成最终海明码:海明码位H7H6H5H4H3H2H1对应位D4D3D2P3D1P2P1示例值1010010填入校验位后得到1010010海明码纠错流程接收端重新计算各组校验结果得到校正子S3 S2 S1若 S3 S2 S1 000 → 无错误若 S3 S2 S1 ! 000 → 该二进制数即为出错位的位置编号即第S3 S2 S1位出错了将该位取反即可纠正标准海明码仅具备纠 1 错能力无法区分 “1 位错” 和 “2 位错”例如 P1 与 P2 同时跳变。扩展方案增加全校验位在海明码后新增 1 位校验位对整个海明码做偶校验扩展后海明码H8H7H6H5H4H3H2H1对应位全D4D3D2P3D1P2P1示例值11010010纠错 / 检错判断规则S3 S2 S1 000、且全校验通过 →无错误S3 S2 S1 ! 000、且全校验失败 →1 位错可纠正S3 S2 S1 ! 000、且全校验通过 →2 位错需重传三、三种编码对比总结特性奇偶校验海明码CRC 循环冗余校验核心功能检错奇数位纠 1 错 / 检 2 错检错强能力冗余位1 位k 位满足 2k≥nk1r 位生成多项式最高次幂运算方式统计 1 的个数 / 异或多组偶校验模 2 除法纠错能力❌ 无✅ 可纠 1 位错❌ 无典型应用内存简易校验ECC 内存、低延迟通信网络帧、磁盘存储、USB 传输