跳到正文
通信启蒙

交付一条可验证的通信链路

10 分钟

现在把全章知识合成一份设计。工程交付不是说「应该能用」,而是让别人按照文档搭建、测试,并得到相同结果。

链路设计清单

  1. 任务:A 队向器材室发送物品和数量,两秒内得到确认。
  2. 角色:队伍编号是来源身份,值班同学是目的地。
  3. 消息格式:起始标记、队伍号、物品号、数量、序号、校验位、结束标记。
  4. 信号与信道:选择灯光、声音或无线电,说明距离、遮挡和噪声条件。
  5. 可靠性:校验失败丢弃;两秒无确认则重传;最多三次;编号用于去重。
  6. 共享规则:发送前先观察频道,碰撞后随机等待,或由值班同学点名。
  7. 安全与隐私:只传任务所需字段,重要身份使用约定凭据认证。

测试不能只测成功路径

至少准备这些用例:正常发送;故意翻转一位看能否发现;遮挡一次信号看会不会重传;重复发送同一序号看会不会处理两次;两个队同时发送看共享规则是否生效;伪造队伍号看认证能否识别。

每个测试写清输入、操作、期望结果和实际结果。失败时沿信息源、发送器、信道、接收器、目的地逐层定位,并一次只改一个条件。

回到真实网络

网页、视频、手机通话使用的技术复杂得多,但骨架相同:消息被编码、分包,经共享信道和多个节点传输,用确认、重传、拥塞控制与加密保证体验。你设计的操场链路是互联网的缩小模型。

章末任务

画一张端到端链路图,附消息格式、一次正常时序、一次重传时序和六条测试记录。最后写一段取舍:为什么选这种信号?牺牲了什么?如果距离扩大十倍,首先要改哪一部分?

小纸条

一份可交付的通信设计为什么必须包含测试用例?