计算机网络:数据链路层——差错检验和纠错技术:奇偶校验和循环冗余校验

通用差错检验模型

一般的检测算法都是使用特定的运算规则E,看输入的自变量和得到的因变量是否相对应
但是如果自变量和因变量在传输过程中都发生了改变,那么即使数据错误,也不能查验出来。
所以,暂时没有100%能查出错误的技术
在这里插入图片描述
对于运算规则E,有如下要求:

  • 差错能力
  • 计算速度
  • 效率

奇偶校验码

奇偶校验码是非常广泛使用的一种查错手段。

  • **运算规则E:**根据原始数据D的1的个数增加奇偶校验码
  • 包含单比特奇偶校验(查错)多维奇偶校验(可纠错)
  • 一维奇偶校验码的编码规则是把信息码元先分组,在每组最后加一位校验码元使该码中1的数目为奇数或偶数奇数时称为奇校验码,偶数时称为偶校验码
    在这里插入图片描述
  • 二维或者多维的奇偶校验码就是在空间上形成多元数组,比如下图的二维奇偶校验,如果哪一位出错,那么就可以迅速定位。
    在这里插入图片描述

奇偶校验的算法分析

  • 奇偶校验的查错能力
    单维奇偶校验只能发现错误位数为奇数的错误,即比如两位出错,奇偶校验无法发现错误。
  • 奇偶校验的计算速度
    算法简单速度
  • 奇偶校验的效率
    由奇偶校验的原始数据长度维数决定。

(重点)CRC循环冗余校验

**循环冗余码(CRC,Cyclic Redundancy Code)校验(Check)**是目前在计算机网络通信及存储器中应用最广泛的一种校验编码方法。

它所约定的校验规则是:让校验码能为某一约定代码除尽

  • 如果除得尽,表明代码正确;
  • 如果除不尽,余数将指明出错位所在位置

步骤:

  • 选一个 r+1 bit 的生成多项式G(x),作为双方的除数。

  • 若原始数据为D,发送方用M=2rD作为被除数。

  • 采用异或的方式用M除以G,得到一个余数R,即为CRC循环冗余检验码。

  • 最终发送的数据为M+R

具体例子如下:

例:原始数据D= 1010001101, G = x5+x4+x2+1,求发送方实际发送的数据。

把x=2带入G,生成的数值的二进制就是除数。
G生成的除数为:110101
在这里插入图片描述
实际发送的数据: 101000110101110


当发送方发送这个数据之后,接收方再去除以原来多项式生成的除数,如果余数为0,那么就认为数据没有错误。

CRC的应用:

  • 广泛用于计算机网络数据链路层的帧的查错。
  • 广泛用于测控和通信领域。

CRC多项式的有关国际标准

CRC-12:G(x)=x12+x11+x3+x2+x+1
CRC-16:G(x)=x16+x15+x2+1
CRC-32(以太网):G(x)=x32+x26+x23+x22+x16+x12+x11+x8+x7+x5+x4+x2+x+1

CRC算法分析:

  • CRC的查错能力
    • 能检查出全部单比特错
    • 能检查出全部的奇数个比特错
    • 能检查出全部长度小于或等于r位的突发错。
  • CRC的计算速度
    • 硬件电路计算速度快
  • CRC的效率
    • CRC冗余码的长度与具体的生成多项式有关,相对查错能力而言,效率很高

因特网校验和

运算规则E:按固定位数二进制反码求和。通常用于网络层和传输层

在这里插入图片描述
容易出错,IPv6取消了这个东西

散列函数

运算规则E:散列函数(单向加密函数)

  • MD5算法是常见的单向加密函数,可将变长字符加密成128bit定长密文。
  • 单向加密通常只能加密不能解密。

通常用于应用层,用于数据完整性检查,可以防止网络传输中数据被篡改。

在这里插入图片描述

练习

CRC冗余检验通常工作在数据链路层。(√)
存在100%能查错的算法。(×,目前不存在)
校验和查错速度比CRC检验快。(×,CRC是基于底层硬件的差错方式,更快)
散列函数可用于数据保密通信。(×,只能检查数据的完整性)
奇偶校验只能查错,不能纠错。(×,多维奇偶校验可以纠错)
纠错机制应广泛用于计算机网络通信(×,代价太大,更多的是差错控制机制)

posted @ 2021-06-10 12:38  Zeker62  阅读(1499)  评论(0编辑  收藏  举报