数据传输就是把比特从一个设备送到另一个设备,并确认它们没有改变。考试用简短、可计算的题目来考:求奇偶位、找出被损坏的字节,或说明路由器(router)怎样处理一个数据包。
这一章位于数字与文本的表示和之后的硬件与处理之间。这里会用到二进制和字符编码,建议先快速复习。
开始前需要先会什么?
你需要熟练地把数字或字母写成二进制,并数出一个字节里 1 的个数。如果你能把 65 写成 1000001,就可以开始了。Cambridge 计算机科学是独立科目,与 ICT 不同,请到 0478 最新大纲页面核对考试范围。
一个包含整个主题的例子
一台设备想发送字母 A。在 ASCII 中,A 是 65,也就是 7 位的 1000001。
偶校验要求 1 的总数为偶数。这个模式有两个 1,已经是偶数,所以奇偶位是 0,发送的字节是 10000010。
假设噪声把第三位翻转,接收方收到 10100010。接收方数出 1,0,1,0,0,0,1,0,共有三个 1。
三是奇数,所以知道出了错。它不知道是哪一位出错,所以会要求重新发送这个字节。
这个小故事包含了检测、奇偶校验的局限,以及重传的概念。
应该按什么顺序学这几课?
- 在简化网络中追踪数据包:先看数据走的路线,后面的校验才有背景。
- 比较串行与并行传输:一次传多少位,以及为什么距离会影响结果。
- 用例题解释奇偶校验:最简单的校验,也是最常考计算的一种。
- 使用校验和例子而不夸大其安全性:更强的校验,并诚实说明它的限制。
- 区分错误检测与错误纠正:哪些方法只能发现问题,哪些能修复。
这一章有哪些常见陷阱?
- 说奇偶校验“修复”了错误。它只能检测部分错误。
- 忘了两个位同时翻转会互相抵消,奇偶校验发现不了。
- 把校验和描述成“安全”。它防的是意外,不是攻击者。
- 把数据包的头部(地址与编号)和负载(所携带的数据)混为一谈。
- 只写并行传输“更快”,却不提长距离的问题。
如何使用练习题?
学完各课后,拿笔和纸做数据传输与校验练习。把每次奇偶计数和校验和的加法都写出来,不要只在脑中算。受限伪代码追踪训练器和安全的 Python 推理沙盒可以让你逐步追踪小型校验算法,看着每个变量的变化。
遇到重复出现的错误,请记录下来,稍后用错题记录与重测队列再测一次。如果同一个错试了几次还是会犯,可以请一对一线上计算机科学补习的老师陪你逐步检查奇偶位和校验和的算法。