目录
[1. 问题的缘起:当多台主机共享一根线](#1. 问题的缘起:当多台主机共享一根线)
[2. CSMA/CD:冲突检测与退避的完整逻辑](#2. CSMA/CD:冲突检测与退避的完整逻辑)
[2.1 先听后说与边说边听](#2.1 先听后说与边说边听)
[2.2 二进制指数退避:冲突后的重试策略](#2.2 二进制指数退避:冲突后的重试策略)
[2.3 效率的定量衰减](#2.3 效率的定量衰减)
[3. 从集线器到网桥:碰撞域的分裂](#3. 从集线器到网桥:碰撞域的分裂)
[3.1 集线器:物理拓扑改变,逻辑拓扑依旧](#3.1 集线器:物理拓扑改变,逻辑拓扑依旧)
[3.2 网桥:碰撞域的边界](#3.2 网桥:碰撞域的边界)
[4. 全双工交换:碰撞的终极消亡](#4. 全双工交换:碰撞的终极消亡)
[4.1 交换机的端口隔离](#4.1 交换机的端口隔离)
[4.2 全双工模式下CSMA/CD的停用](#4.2 全双工模式下CSMA/CD的停用)
[5. 碰撞域与广播域:两种"域"的概念分离](#5. 碰撞域与广播域:两种"域"的概念分离)
[6. 结语](#6. 结语)
1. 问题的缘起:当多台主机共享一根线
局域网的本质是多台主机在同一个广播链路上通信。早期以太网的物理拓扑非常简单:一根同轴电缆贯穿所有主机,每台主机通过T型接头接入,电缆两端各接一个终结电阻吸收信号。这就是经典的10BASE5和10BASE2组网方式。
在这种共享介质上,如果两台主机同时发送数据,信号在电缆上叠加,形成碰撞。碰撞后的信号是两帧信号的代数叠加,任何接收方都无法从中还原出有效数据。于是,核心问题浮现:在没有任何集中控制器的情况下,分布式的各主机如何决定谁可以在什么时间发送?
这正是介质访问控制子层要解决的根本问题------信道分配。它位于数据链路层的下半部分,向上为LLC子层提供无差错的帧传输服务,向下直接控制物理层的信号发送时机。
2. CSMA/CD:冲突检测与退避的完整逻辑
2.1 先听后说与边说边听
CSMA/CD(Carrier Sense Multiple Access with Collision Detection)协议的设计逻辑直观地对应人类对话的礼仪。
载波侦听------说话前先听,确认没人说话再开口。主机在发送前先检测电缆上的电信号,如果检测到载波(表示信道被占用),则等待信道空闲。
碰撞检测------开口说话后继续听,如果听到自己的声音和别人重叠了,说明发生了冲突。主机在发送数据的同时持续监听信道,将收到的信号与自己发出的信号做比较。一旦发现差异,立即停止数据帧的发送,转而发送一个32比特的强化碰撞信号,确保所有冲突方都能明确感知到碰撞的发生。
碰撞检测对网络规模和帧长提出了硬性约束。设总线最远两端距离为 DD,信号传播速度为 vv,则端到端传播时延为 τ=D/vτ=D/v。最坏情况下,A端开始发送时信号尚未到达B端,B端在A的信号到达前一瞬间也开始发送。碰撞在B端立刻被检测到,但碰撞信号传回A端需要 ττ 时间。因此,A端必须在其发送开始后的 2τ2τ 内仍处于发送状态,才能检测到这次碰撞。这就要求每帧的传输时间至少为 2τ2τ,这就是最小帧长的来源------在10 Mbps以太网上,2τ2τ 约51.2微秒,对应512比特即64字节。
2.2 二进制指数退避:冲突后的重试策略
检测到碰撞后,CSMA/CD采用二进制指数退避算法决定重传时机。
设发生第 kk 次连续碰撞(kk 不超过10),主机从 00 到 2k−12k−1 的整数中随机选取一个值 rr,等待 r×51.2r×51.2 微秒后重新尝试。第1次碰撞在0和1之间选,第2次在0到3之间选,随着冲突次数增加,选择范围指数扩大。
这种设计的精妙之处在于:当冲突站点较少时,退避窗口小,重传延迟低;当冲突激烈时,退避窗口迅速扩大,各站点大概率选择不同的等待时间,从而打破冲突僵局。这类似于一群人同时抢话时,大家不是齐声再抢,而是各自随机等待不等的时间再开口。
但代价是公平性隐患:某个站点在退避时可能多次被新到达的站点"抢先",导致其退避窗口不断增大。CSMA/CD不提供严格的公平性保证,它只保证统计意义上的收敛。
2.3 效率的定量衰减
CSMA/CD的效率随网络负载和跨度增加而急剧下降。定义效率 ηη 为有效传输时间占总时间的比例:
η=11+5.4×τTframeη=1+5.4×Tframeτ1
其中 ττ 为单程传播时延,TframeTframe 为帧传输时间。比值 τ/Tframeτ/Tframe 越小,效率越高。10 Mbps以太网中,ττ 约25.6微秒,最短帧传输时间51.2微秒,理论效率上限约79%。当网络跨度增大或帧长缩短,效率会断崖式下跌。
这个公式揭示了一个根本矛盾:CSMA/CD的效率取决于网络直径与数据传输速率的比例。速率越高或距离越远,τ/Tframeτ/Tframe 越大,效率越低。这正是半双工共享介质架构的物理天花板。
3. 从集线器到网桥:碰撞域的分裂
3.1 集线器:物理拓扑改变,逻辑拓扑依旧
双绞线以太网的出现改变了物理拓扑------从总线变为星形结构,所有主机通过独立电缆连接到中央集线器。但集线器本质上是一个信号再生器,它将任一端口收到的比特信号放大后转发到所有其他端口。逻辑上,所有端口仍然共享同一带宽,任意两台主机同时发送仍然导致碰撞。碰撞域并未被分割------它仍然是整个网络。
3.2 网桥:碰撞域的边界
真正的变革来自网桥。网桥是一个双端口设备,连接两个以太网段。与集线器不同的是,网桥具有帧缓存和转发决策能力------它检查帧的目标MAC地址,只在目标位于另一端时才转发,否则过滤。
网桥将原来的单一碰撞域一分为二。左半边的两台主机之间的冲突,不会扩散到右半边。每个碰撞域内的站点数减少,冲突概率显著下降。更重要的是,两端可以同时进行通信而不发生碰撞------左端A向B发送数据的同时,右端C向D发送数据,网桥两端各自独立运行CSMA/CD,不需要彼此协调。
从效率角度看,网桥通过空间隔离实现了带宽的并行利用。一个N端口的交换机实际上是一个N端口的多端口网桥,每个端口构成独立的碰撞域。
4. 全双工交换:碰撞的终极消亡
4.1 交换机的端口隔离
交换机的每个端口与所连主机之间是一对一的双绞线连接------收和发分别使用独立线对。在这种拓扑下,端口与主机之间不存在多主机共享介质的问题。主机发送数据只需在发送线对上发出信号,接收数据通过接收线对接收,两对线物理上互不干扰。
交换机内部每条线路拥有独立的收发缓冲区和背板带宽。当多台主机同时发送数据,交换机的交换矩阵可以在多个端口之间同时建立临时通道,只要两两不冲突。一台24口千兆交换机理论上可以同时支持12对主机之间的千兆并发通信,总吞吐量达到12 Gbps------这在共享介质架构下是不可能的。
4.2 全双工模式下CSMA/CD的停用
全双工以太网在物理和逻辑两个层面都与共享介质时代截然不同。端口之间不再存在信号碰撞的可能------每个方向都有专用传输路径。因此,CSMA/CD协议可以完全停用。主机在任何时间都可以发送数据,无需载波侦听,无需碰撞检测,也无需退避重传。
这是一个值得反思的时刻。CSMA/CD作为以太网被讨论最多、教科书花费最多篇幅讲解的协议,在实际部署中的绝大多数场景下从未被激活过。它的主要价值已经转移到历史解释和无线网络的类比理解上------Wi-Fi的CSMA/CA仍然在无线空间中面对并解决着以太网三十年前在电缆上解决的问题。
全双工模式还有一个容易被忽视的优势:不再需要最小帧长约束。半双工以太网因为需要检测碰撞,要求帧长至少64字节。全双工模式下这个约束完全消失,对短帧密集的应用(如金融交易中的小包突发)提升了有效载荷效率。
5. 碰撞域与广播域:两种"域"的概念分离
在共享介质时代,碰撞域和广播域是重合的------所有主机共享同一根总线,任何主机的发送(无论是单播帧还是广播帧)同时到达所有主机,碰撞也发生在所有主机之间。
交换机的引入实现了两者的分离。碰撞域 被分割到一个交换端口内部------每个端口最多包含该端口所连链路上的主机。由于全双工链路两端各有一台主机和交换机端口,碰撞域缩小为两个节点之间的一段链路,冲突概率降为零。广播域则不受交换机分割------广播帧和未知目标MAC地址的帧仍然被泛洪到交换机的所有端口(除入端口外),因此一个VLAN内的所有端口构成一个广播域。
碰撞域与广播域的分离是局域网架构最深刻的结构性变化。它意味着,冲突问题(物理层和数据链路层的问题)被交换机在底层终结,而广播风暴(控制平面的问题)仍然需要STP或VLAN等手段管理。理解这两个域的区别,是理解交换式以太网行为的基础。
6. 结语
以太网从CSMA/CD共享总线到全双工交换的演进,用三十多年时间完成了一次从统计复用到空分复用的架构转型。推动这一转型的深层动力是:链路带宽增长后,CSMA/CD的碰撞窗口效率变得不可承受;而交换机的硬件成本下降,使得为每个节点提供独立带宽在经济上可行。
当一项技术赖以生效的外部条件发生根本改变时,曾经不可或缺的协议就可以安然退役。CSMA/CD完成了它在十兆、百兆半双工时代的使命,在全双工千兆时代退场。对它最好的致敬,是理解它曾经解决过什么问题,以及为什么在现代网络中不再需要它。
参考文献
1\] Metcalfe, R. M., \& Boggs, D. R. Ethernet: Distributed packet switching for local computer networks. *Communications of the ACM*, 19(7): 395-404, 1976. \[2\] IEEE 802.3-2018. IEEE Standard for Ethernet. \[3\] Spurgeon, C. E., \& Zimmerman, J. *Ethernet: The Definitive Guide* (2nd ed.). O'Reilly Media, 2014. \[4\] Tanenbaum, A. S., \& Wetherall, D. J. *Computer Networks* (5th ed.). Pearson, 2011.