前言
在前期文章vlan简介中提及的 CSMA/CD 机制是经典以太网的基石。理解CSMA/CD对于学习网络发展史、了解经典以太网拓扑限制以及理解网络基础概念仍然至关重要。本文我们来全面、深入地解析CSMA/CD 机制。

什么是CSMA/CD
CSMA/CD全称是 Carrier Sense Multiple Access with Collision Detection ,即载波监听多路访问/冲突检测,是一种用于共享介质网络(如早期同轴电缆或集线器网络)的协议,它规定了多个网络设备如何安全地访问共享 信道 ,其核心思想是:先听再说,边说边听。
-
先听再说( CSMA ):发送数据前先检查信道是否空闲。
-
边说边听( CD ):发送数据过程中持续监听,一旦检测到冲突立即停止,并等待一段随机时间后重试。
为什么需要CSMA/CD
在最初的共享以太网中,计算机是通过一条共享的同轴电缆连接起来的。被连接的计算机通过同一条物理线路发送数据互相访问,为了避免多台计算机在同一时刻抢占线路发送数据的情况,必须有一种冲突检测和避免的机制,于是便有了CSMA/CD。
CSMA/CD工作流程
CSMA/CD的工作机制可以看作一个严谨的决策循环,其其完整的工作流程与决策逻辑如下:

CSMA/CD工作详细步骤
步骤一:载波侦听
-
目的:在发送数据之前,判断共享传输介质是否正被其他站点使用。
-
动作:网络接口卡持续监测信道上是否有载波信号,即电压变化或光信号。
-
结果:
-
信道忙:持续监听,直到信道空闲为止。
-
信道空闲 :等待一个帧间间隔(IFG/Interframe Gap),通常为96比特时间。这是为了给其他站点和网络设备(如中继器)一个处理时间,确保公平性。等待IFG结束后,进入下一步开始发送数据。
-
步骤二:边发送边检测
-
目的:在发送数据的过程中,实时检测是否与其他站点的发送产生冲突。
-
动作:发送数据的同时,发射器会将其发送的信号与从信道上接收到的信号进行比较。如果检测到信道上信号的电压电平或波形与自己发送的不一致,就表明发生了冲突,则进入下一步。
步骤三:冲突处理与退避
-
冲突发生 :一旦检测到冲突,站点立即停止发送当前数据帧。
-
强化冲突 :随后,站点会发送一个32位(4字节)的Jam信号(一段特殊的比特序列),目的是确保所有参与冲突的站点都能足够长时间地听到冲突,从而意识到冲突的发生。
-
退避等待 :站点需要等待一段随机时间后再重新尝试发送当前数据帧。这段等待时间由二进制指数退避算法决定。
算法规则:
举例:
第一次冲突(n=1):从 {0, 1} 中随机选一个数,等待 0 或 1 个时隙。
第二次冲突(n=2):从 {0, 1, 2, 3} 中随机选一个数。
第三次冲突(n=3):从 {0, 1, 2, 3, 4, 5, 6, 7} 中随机选一个数。
第10次及以后冲突(n=10):从 {0, 1, ..., 1023} 中随机选一个数。
放弃重传 :如果经过 16次 尝试仍然冲突,则站点将放弃发送并向高层协议报告错误。
-
冲突次数越多,退避等待的潜在时间越长,从而降低再次冲突的概率。
-
将冲突次数记为 n , n 不能超过10(即 n = min(重传次数, 10) )。
-
退避时间从 0 到 2^n - 1 这个范围内随机选择一个值,这个值被称为"退避时隙"。
-
每个时隙长度 等于信号在网络上最长往返传播时间(对于10Mbps以太网是512比特时间,即51.2微秒)。
-
技术细节与关键概念
为什么需要冲突检测?
因为电磁波或光信号在介质中传播需要时间。即使A站点在发送前侦听到信道空闲,但信号尚未到达B站点,B也可能侦听到信道空闲开始发送,从而导致冲突。CD机制是解决这个"传播延迟"问题的关键。
最小帧长与冲突窗口
-
冲突窗口:指信号在网络中最远两点间往返传播所需的时间,这是可能发生冲突的最大时间范围。
-
最小帧长:为了确保发送站能在帧发送完毕前检测到冲突,帧必须足够长。如果帧太短,发送站可能在检测到冲突之前就已经发完了整个帧,从而无法触发重传机制。
标准规定最小帧长为 **64字节,**计算过程如下:
对于10Mbps(10000000比特/秒)以太网,冲突窗口为51.2μs(0.0000512秒)。因此,最小帧长 =10000000比特/秒 * 0.0000512秒 / 8比特/字节= 64字节。
在绝大多数现代交换式以太网(全双工模式)中,这个限制已经不再是功能上的必需,但是为了维持统一的以太网帧格式并兼容半双工设备,64字节的最小帧长规定依然被保留。
CSMA/CD的局限性
-
效率问题:网络负载较重时,冲突会显著增加,大量时间被浪费在冲突和退避上,导致网络效率下降。
-
距离限制 :网络的地理范围受限于冲突窗口。网络直径越大,往返延迟越长,要求的最小帧长也越长,这在技术上有限制。这就是为什么传统共享式以太网有网络直径限制(如使用同轴电缆时不超过2.5公里)。
-
半双工:CSMA/CD本质上是半双工通信,同一时间只能进行发送或接收,无法同时进行。
现状
随着技术的发展,交换以太网已经替换共享以太网成为主流类型,交换机为每个端口提供独立的信道,冲突得以避免,CSMA/CD机制在实际中已经很少使用。不过为了确保向后兼容,大部分网络设备和交换机仍保留半双工模式,如10Mbps半双工、100Mbps半双工等。当互联的两个接口工作在半双工模式,同一时间只能有一个接口发送数据,此时就需要CSMA/CD机制避免冲突。
原创不易,你的支持是我最大的动力,欢迎大家点赞,收藏,关注!