数据传输就是把比特从一个设备送到另一个设备,并确认它们没有改变。考试用简短、可计算的题目来考:求奇偶位、找出被损坏的字节,或说明路由器(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 推理沙盒可以让你逐步追踪小型校验算法,看着每个变量的变化。
遇到重复出现的错误,请记录下来,稍后用错题记录与重测队列再测一次。如果同一个失误尝试几次后仍然回来,就是适合和老师谈谈一对一在线计算机科学补习的时候。