差错来源

Q: 数据传输过程中,差错的主要来源(物理上的)是什么?
A: 数据传输差错主要来源于传输信道中的噪声,包括:
全局性噪声(热噪声): 由线路本身电气特性产生的随机噪声,无法避免。
局部性噪声(冲击噪声): 由外界特定短暂原因造成的冲击噪声,例如电磁干扰等。

Q: 不同质量的信道通常采用哪些可靠传输机制?
A: 通信质量好,有线传输链路: 通常采用无确认无连接服务,例如以太网。
通信质量差,无线传输链路: 通常采用有确认无连接服务或有确认面向连接服务,例如无线局域网。

Q: 数据链路层如何进行差错控制?
A: 数据链路层可以使用检错编码或纠错编码进行差错控制。
检错编码: 用于检测数据传输过程中是否出现错误,例如奇偶校验码、循环冗余校验码(CRC)。
纠错编码: 用于检测并纠正数据传输过程中出现的错误,例如海明码。

Q: 常用的检错编码和纠错编码有哪些?
A: 检错编码: 奇偶校验码、循环冗余校验码(CRC)
纠错编码: 海明码

海明码纠错编码

奇偶校验码循环冗余校验码(CRC)是检错编码

Q: 物理层编码和数据链路层编码有什么区别?
A:
物理层编码: 针对单个比特进行编码,主要解决传输过程中的比特同步问题,例如曼彻斯特编码。
数据链路层编码: 针对一组比特进行编码,通过添加冗余码来检测或纠正传输错误。

循环冗余校验码(CRC)

Q: 什么是冗余编码?
A: 冗余编码是指在发送数据之前,添加一些额外的比特(冗余位),构成校验码,用于检测或纠正传输错误。接收方根据接收到的校验码判断数据是否出错。

Q: CRC 的优点是什么?
A: CRC 检错能力强,实现简单,被广泛应用于数据链路层。

3.4 检错编码

3.4.1 奇偶校验码

Q: 奇偶校验码是如何工作的?
A: 奇偶校验码在数据位之外添加一位校验位,使得数据位和校验位中 1 的个数为奇数(奇校验)或偶数(偶校验)。

Q: 奇偶校验码有什么局限性?
A: 奇偶校验码只能检测出奇数个比特错误,无法检测出偶数个比特错误。

3.4.2 循环冗余校验码(CRC)

Q: CRC 校验码是如何生成的?
A:

  1. 将要发送的数据位后面添加 r 个 0,r 为生成多项式的阶数。
  2. 将添加 0 后的数据位串使用模 2 除法除以生成多项式。
  3. 得到的余数即为 CRC 校验码。

Q: 接收方如何使用 CRC 校验码检测错误?
A: 接收方将接收到的数据位串(包括校验码)使用相同的生成多项式进行模 2 除法运算,如果余数为 0,则认为数据无误,否则认为数据出错。

3.4.3 CRC 的注意点

Q: CRC 校验能否保证可靠传输?
A: 不能。CRC 校验只能检测出帧中是否存在比特错误,但不能保证所有发送的帧都被接收方接收到。

Q: 为什么 CRC 校验不能保证可靠传输?
A: 因为 CRC 校验无法处理帧丢失的情况。即使接收到的帧没有比特错误,也不能保证所有发送的帧都被接收到。

Q: 检错编码的主要作用是什么?
A: 检错编码的主要作用是检测数据传输过程中是否出现错误,常用的检错编码有奇偶校验码和循环冗余校验码(CRC)。

Q: 检错编码能否保证可靠传输?
A: 不能。检错编码只能检测出数据中是否存在错误,但不能保证所有发送的数据都被正确接收。

3.5 纠错编码

3.5.1 海明码

Q: 海明码与奇偶校验码、CRC 校验码有什么区别?
A: 海明码不仅可以检测错误,还可以定位错误并进行纠正,而奇偶校验码和 CRC 校验码只能检测错误。

3.5.2 海明距离

Q: 什么是海明距离?
A: 海明距离是指两个合法编码(码字)之间对应比特不同的位数。

Q: 海明距离与检错、纠错能力的关系是什么?
A: 要检测 d 位错误,码距至少为 d+1。
要纠正 d 位错误,码距至少为 2d+1。
为了纠正t个位错,同时检测出e个位错(e>t),那么海明距离至少为 这个能同时保证它大于e+1和2t+1

3.5.3 海明码的工作流程

Q: 海明不等式 是怎么来的?
A: r个位置是检验位,那么一共有 种组合的情况,需要用这些组合的情况,覆盖这段数据上出现的所有可能的错误组合,检验位和数据都可能出错,m个数据位,r个校验位,假设每一位都错了,那么最多一共有 个错误,加1是因为,这段数据组合可能没有错,是0个错误,也就是正确的,这唯一的一种情况。
然后检验位的组合要大于数据的出错的可能,也就是大于等于

Q: 海明码的工作流程是怎样的?
A: 海明码的工作流程

  1. 确定校验码位数 r: 根据海明不等式 确定校验码位数 r,其中 m 为数据位数。
  2. 确定校验码和数据的位置: 将校验码放置在 2 的幂次方位置(1, 2, 4, 8…),数据位放置在剩余位置。(海明码一般不使用第0位)
  3. 求出校验码的值: 根据校验码覆盖的数据位,使用奇偶校验或偶校验计算校验码的值。
  4. 接收端进行检错与纠错: 接收方根据校验码进行校验,如果发现错误,则根据校验结果定位错误位并进行纠正。

Q: 海明码的校验原理是什么?
A: 接收方根据校验位和数据位进行奇偶校验,生成 k 个校验方程。如果所有校验方程的结果都为 0,则表示数据无误;否则,根据校验方程的结果可以定位错误位并进行纠正。

Q: 标准的海明码可以纠正几位错误?
A: 标准的海明码只能纠正一位错误。

Q: 海明码可以检测校验位上的错误吗?
A: 可以。海明码可以检测并纠正数据位和校验位上的错误。