共享频道:大家不能同时喊
约 10 分钟
操场上若十个小组同时用同一种闪光节奏,接收方会看到信号混在一起。无线网络也要解决同一问题:许多设备怎样共享有限频道,而不让彼此一直碰撞。
最简单的规则:先听再说
设备发送前先听频道是否空闲,空闲才发;如果两个设备恰好同时开始,数据碰撞,双方等待一段不同的随机时间再试。随机等待能降低它们下一次仍同时发送的机会。这和课堂讨论先观察别人是否在说话很像。
轮流和分车道
另一种办法是由主持者安排时间片:一号先发、二号后发;也可以给不同设备分配不同频率,像道路分车道;还可以使用不同编码,让接收方把混合信号分开。时间、频率、编码都是可分配的通信资源。
公平与效率会冲突
严格轮流很公平,但某个设备没数据时,它的时间片会空着;谁有数据谁抢先更灵活,却可能让积极发送的设备长期占用频道。协议要在利用率、公平、等待时间和复杂度之间取舍。
拥堵不只发生在无线电里
路由器收到的数据超过处理能力,就会排队甚至丢包。发送方若看到丢包还拼命加速,会让拥堵更严重。成熟协议会根据确认、时延和丢包情况调整发送速度,像看到前方堵车后主动减速。
操场方案
可以给每队一个编号,发送前举牌申请,值班同学点名后才闪光;也可以规定每队使用不同颜色。比较两种方案:颜色有限但同时性好,点名不需很多颜色却增加等待。
练一练:为四个小组设计一条共享通信规则,说明如何避免碰撞、怎样保证某一组不会永远等不到。
小纸条
两个设备碰撞后为什么要随机等待,而不是都等一秒?