这套练习涵盖数据传输与校验的五课:数据包、串行与并行传输、奇偶校验、校验和,以及检测与纠正。题目由易到难。每次计数和加法都要写在纸上。
用受限伪代码追踪训练器和安全的 Python 推理沙盒来追踪校验循环。重复出现的失误可以记在错题记录与重测队列里。
题目
Q1. 数据包头部的哪一项让接收方能把数据包按顺序排好?
查看答案
数据包编号(连同数据包总数)。数据包可能走不同路线、不按顺序到达,所以接收方依据这个编号排序。
Q2. 一个 3,000 个字符的文件以每包 500 个字符的数据发送。需要多少个数据包?
查看答案
3,000 ÷ 500 = 6。检查:6 × 500 = 3,000。6 个数据包。
Q3. 一个数据包的跳数从 4 开始,路径上有 6 个路由器。它在哪个路由器被丢弃?
查看答案
经过路由器 1 后跳数为 3,路由器 2 后为 2,路由器 3 后为 1,路由器 4 后为 0。把它减到 0 的路由器会丢弃它,所以路由器 4 丢弃这个数据包,它到不了路由器 5 和 6。
Q4. 链路在每根线上每个周期发送 1 位。不考虑偏斜,发送 12 个字节需要多少个周期:(a) 串行链路,(b) 8 线并行链路?
查看答案
12 × 8 = 96 位。
(a) 串行:96 位,每周期 1 位 = 96 个周期。
(b) 并行:96 ÷ 8 = 12 个周期。检查:12 × 8 = 96。
Q5. 给出并行传输不适合长线缆的一个理由。
查看答案
不同线上的位可能在略有差异的时间到达(偏斜),还可能互相干扰(串扰)。接收方可能读错位,所以在远距离上串行更可靠。
Q6. 求 1101011 的偶校验位,以及 0011000 的奇校验位。
查看答案
1101011 有 1,1,0,1,0,1,1 共 5 个 1。五是奇数,所以偶校验位是 1(总数 6)。
0011000 有 2 个 1。奇校验要求总数为奇数,所以奇偶位是 1(总数 3)。
Q7. 系统使用偶校验。字节 01101101 到达。能检测出错误吗?请解释。
查看答案
数 1:0,1,1,0,1,1,0,1 共 5 个。五是奇数,但偶校验需要偶数个,所以检测到错误。奇偶校验无法指出哪一位出错。
Q8. 校验和是数值总和 MOD 100。发送方发送 23, 48, 71, 9 及校验和。(a) 计算校验和。(b) 接收方收到 23, 48, 71, 19。它发现了什么?
查看答案
(a) 23 + 48 = 71,71 + 71 = 142,142 + 9 = 151。151 MOD 100 = 51。
(b) 23 + 48 + 71 + 19 = 161。161 MOD 100 = 61。它不等于 51,所以检测到错误。
Q9. 字节 11001100 用偶校验发送(最后一位是奇偶位),到达时变成 10001110。奇偶校验通过吗?这说明了什么?
查看答案
发送:1,1,0,0,1,1,0,0 有 4 个 1,是偶数。接收:1,0,0,0,1,1,1,0 有 4 个 1,也是偶数。校验通过,尽管有两位改变了(第二位和第七位)。这说明奇偶校验无法检测偶数个位的翻转。
Q10. 每一位发送三次。收到的组是 110、001 和 111。(a) 还原出什么信息?(b) 这是检测还是纠正?(c) 代价是什么?
查看答案
(a) 110 有两个 1,所以该位是 1。001 有一个 1,所以该位是 0。111 得 1。信息是 1, 0, 1。
(b) 这是纠正,因为接收方不必再询问就修复了位,条件是一组中只有一份副本出错。
(c) 发送的数据量变成三倍。
如果做错了
- **Q1 至 Q3(数据包、头部、跳数):**回到在网络中追踪数据包。
- **Q4 与 Q5(计时与偏斜):**复习串行与并行传输。
- **Q6、Q7 与 Q9(奇偶校验):**重做用例题解释奇偶校验,尤其是数 1 的步骤。
- **Q8(校验和):**回到校验和一课。每加一个数值就写下当前总和。
- **Q10(纠正):**阅读错误检测与错误纠正。
如果同一类题一直做错,一对一线上计算机科学补习可以让老师直接看你的演算。