Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

共享信道与冲突

复习

  • 数据帧的边界:帧把连续比特流切成可独立处理的一段段数据
  • 发现传输出错:校验帮助接收方发现内容是否出错
  • MAC 地址:链路层用 MAC 地址在本地交付帧

TL;DR

  • 多台设备同时在同一介质发送时,信号可能互相干扰
  • 先监听、冲突后随机等待重发,是共享信道的经典策略
  • 让每台设备独占一段介质,是减少冲突的另一条路

正文

  给帧写上目的 MAC 地址之后,还有一件麻烦事没解决:如果好几台设备共用同一根介质,它们同时开口说话会怎样?

大家同时说,谁也听不清

  这就像一屋子人同时讲话:接收方听到的是混在一起的声音,谁说了什么都分不清。电信号也是如此,两股信号在介质上叠加,结果既不是甲的,也不是乙的。

  早期以太网用了一个很符合直觉的策略:先听再说。 发送前先监听介质,确认没人说话,再开始发送。可问题在于,“确认空闲”和“开始发送”之间总有时间差——两台设备可能几乎同时发现空闲,又几乎同时开口,于是信号还是撞在了一起。

  一旦发现冲突,双方就各自随机等待一小段时间,再重新尝试。随机是关键:如果都等同样长的时间,只会再次同时开口;错开等待,才有机会把节奏岔开。

无线网络更难

  无线网络把这个问题放大了。设备共享的是空气,而“先听再说”依赖一个前提:你能听见别人。可现实中,两台设备可能相隔较远、彼此听不见,却都能被同一个接入点“听到”。它们各自都以为介质空闲,同时发送,结果在接入点那里撞成一团。这就是隐藏节点问题。

  所以无线网络往往还需要更多协调机制,比如由接入点统一安排发送机会、用确认和预约来减少碰撞。介质不同,规矩也就不同。

另一条路:干脆别共享

  既然冲突来自“大家抢同一根介质”,那能不能干脆让每台设备独占一段介质?

  能。这正是交换机出现的动机——把一个大冲突域拆成许多小段。下一章,我们先看看把这些规矩固定下来的以太网,再走进交换机。

思考题 1

为什么“先听再说”仍不能完全避免冲突?

思考题 2

冲突之后,为什么必须“随机”等待,而不能约定一个固定时长?

小结

知识点

  • 共享信道需要规定谁在何时发送
  • 先监听、冲突后随机退避,是经典接入方法
  • 无线网络还要面对隐藏节点,需要更多协调

参考资料

  1. Wikipedia(zh):载波侦听多路访问:共享信道上的经典接入方法
  2. Wikipedia(zh):隐藏节点问题:无线网络中侦听不到的发送者

思考题答案(仅供参考)

思考题 1

  两个设备可能几乎同时发现空闲,又几乎同时开始发送,信号仍会在介质中相撞。监听和发送之间存在时间差,而传播本身也需要时间,“看到空闲”并不等于“此刻真的没人发”。

思考题 2

  因为固定等待会让刚刚冲突的两个设备再次同时行动,形成反复碰撞。随机等待让它们以不同节奏错开,冲突次数会迅速下降。随机性的价值,正在于打破“同步”这个制造冲突的条件。

协议

  本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

封面图

设计师 | 南国微雪