跳到正文
IGCSE·Tuition
计算机科学 · 课程

区分错误检测与错误纠正

奇偶校验、校验和与重传请求都被叫作错误校验,但它们做的事情很不一样。

本页内容
  1. 每种方法做什么?
  2. ARQ 如何运作?
  3. 例题详解:用重复来纠正
  4. 学生常犯什么错误?
  5. 自我检测
  6. 下一步

**错误检测(error detection)**是知道数据已经改变。**错误纠正(error correction)**是把数据修复。题目常问某个方法属于哪一种,所以答案里的动词要用对。

这一课完成数据传输与校验,建立在奇偶校验和校验和之上。

每种方法做什么?

方法作用能修复数据吗?
奇偶位检测奇数个位的翻转不能
校验和检测大多数意外改动不能
校验位(check digit)检测代码在输入或扫描时的错误不能
回显校验发送方把返回的数据与原数据比较不能
ARQ接收方说“收到”或“请重发”;超时则发送方重试靠重发恢复
重复编码每一位发送多次,多数表决能,限于有限数量的翻转

请对照大纲,确认哪些名称会出现,因为内容由 Cambridge 制定,也可能更新。

ARQ 如何运作?

  1. 发送方发送带有校验数据的数据包。
  2. 接收方执行校验。
  3. 通过则发出肯定确认。失败则发出否定确认,或什么也不回复。
  4. 发送方等待超时(timeout)。没有确认或收到否定确认,就重发。尝试达到设定次数后放弃。

ARQ 不会修复受损的数据,它是用一份新的副本取代它。

例题详解:用重复来纠正

发送方想发送比特 1, 0, 1。它把每一位发三次:111 000 111。

接收方收到 111 010 111。对每一组,它数 1 的个数并取多数。

ones ← 0
FOR i ← 1 TO 3
   IF Group[i] = 1 THEN
      ones ← ones + 1
   ENDIF
NEXT i
IF ones >= 2 THEN
   result ← 1
ELSE
   result ← 0
ENDIF

**中间一组 0, 1, 0 的追踪:**i=1 时 ones 为 0,i=2 时 ones 为 1,i=3 时仍为 1。因为 1 小于 2,所以 result = 0。于是中间那一位被纠正为 0。

111 和 111 两组各有 3 个 1,result 都是 1。信息被修复为 1, 0, 1,不需要要求重发。代价是数据发送量变成三倍。

学生常犯什么错误?

常见说法:“奇偶校验检查数据并纠正任何错误。”

它不会纠正。奇偶校验只检测。

要纠正,接收方需要足够的额外信息来推出正确的值,就像上面的多数表决,或者必须请求一份新的副本。奇偶校验和校验和要写“检测”,ARQ 要写“重发”。

自我检测

1. 判断下列各项是检测还是纠正:(a) 奇偶位,(b) 对一位的三份副本做多数表决。

查看答案

(a) 检测。(b) 纠正,前提是三份副本中只有一份出错。

2. 一组三位以 1, 1, 0 到达。原本发送的最可能是哪一位?

查看答案

两个 1 和一个 0,多数是 1。发送的位很可能是 1。

3. ARQ 发送方在超时前没有收到回复。它会怎么做?

查看答案

它会重发数据包,直到设定的尝试次数。

下一步

把学到的带进练习题,它混合了五课的内容。如果需要知道主题的顺序,回到模块概览。

检测和纠正最容易在用词上混淆。如果你想知道自己的答案在哪里丢分,一对一线上计算机科学补习的老师可以逐句帮你批改。

常见问题

检测与纠正有什么区别?

检测是告诉接收方出了问题。纠正是不回头找发送方就把数据修复。奇偶校验和校验和只能检测。重复编码这类带有额外冗余位的方法还能纠正。发现错误后重发数据是一种恢复手段,不算真正的纠正。

什么是 ARQ?

自动重传请求(automatic repeat request)是这样一种方法:数据通过校验,接收方就回复确认;校验失败,就请求重发。如果超时前没有收到确认,发送方也会重发。它依赖奇偶校验或校验和之类的检测方法。

什么是回显校验(echo check)?

回显校验是接收方把数据发回去,发送方将它与原数据比较。如果一致,数据很可能正确到达。它的弱点是:错误可能发生在返回途中,所以不一致并不证明第一次传输失败。

更新于:

下一步

如果检测与纠正的区别在你的答案里总是模糊,一对一的老师可以用新的例子,陪你把每种方法放回正确的位置。

一小时付费试听课,按所安排老师确认的收费,RM80 起。

补习由家长或监护人安排。用 WhatsApp 把这页发给他们,他们就可以替你咨询。

家长:在这里咨询

  • 已通过我们的服务帮助 9,000+ 名学生
  • 9+ 年帮助 IGCSE 学生