载波监听多路访问/冲突检测(CSMA/CD)协议作为早期以太网技术的核心,定义了多个设备如何在共享传输介质上进行有效通信的规则,是相当的经典。
第一章:CSMA/CD 协议基本原理
CSMA/CD 协议是以太网在 半双工(half-duplex) 模式下,为解决多个网络节点(站点)共享同一物理传输介质(如总线型拓扑中的同轴电缆)时可能发生的数据冲突问题而设计的介质访问控制(MAC)机制。它的核心思想可以通俗地概括为 “先听后发,边听边发,冲突停发,随机重发”
其最终目标是在保证网络公平性的前提下,尽可能高效地利用共享信道,并在冲突无法避免时,能够快速检测并从中恢复。
1.1 基本概念
| 关键术语 | 含义 |
|---|---|
| Carrier Sense(载波监听) | 指站点在发送数据帧之前,必须首先对共享信道进行监听,通过检测信道上是否存在电平信号(即载波)来判断信道是否处于“空闲”状态 。如果信道忙碌(即有其他站点正在发送数据),则必须等待,直到信道变为空闲才能开始发送。这一原则确保了站点不会在信道明显被占用的情况下“强行”发送数据,是避免冲突的第一道防线。 |
| Multiple Access(多路访问) | 指多个独立的站点连接到同一个共享的传输介质上,并且每个站点都有平等的权利去竞争和使用这个介质来发送数据。这种“多对一”的共享特性是局域网的基础,但也正是冲突产生的根源。 |
| Collision Detection(冲突检测) | 这是CSMA/CD相对于其前身CSMA协议的关键改进。它要求站点在 发送数据的同时,持续不断地监听信道。通过比较自己发送的信号与在信道上实际检测到的信号,判断是否发生了冲突。通常,当两个或多个站点同时发送数据时,信道上的电压电平会发生异常(例如,高于单个站点发送时的正常电平)。一旦检测到这种异常,就意味着发生了冲突。 |
| Jam Signal(阻塞信号/干扰信号) | 当一个站点检测到冲突后,它会立即停止发送当前的数据帧,转而发送一个特殊的、短暂的比特序列,即阻塞信号。这个信号通常是一个32位的特定序列。其目的是 加强冲突,确保冲突信号的持续时间足够长,能够传遍整个网络,从而让所有卷入此次冲突的站点都能明确地感知到冲突的发生,进而同步进入冲突处理流程。 |
| Back-off(退避) | 冲突处理的核心环节。在发送完阻塞信号后,所有检测到冲突的站点都会启动一个退避算法,各自等待一个随机生成的时间间隔,然后再重新尝试从载波监听步骤开始发送 。这种随机等待机制的目的是错开各个站点的重传时间点,从而极大地降低在下一次尝试中再次发生冲突的概率 。CSMA/CD采用的是一种名为 二进制指数退避(Binary Exponential Backoff, BEB)的算法。 |
1.2 工作流程详解(逐步时序)
CSMA/CD的完整工作流程是一个精密的时序闭环,以下是其详细的步骤分解:
| 步骤 | 详细描述 | 关键时间参数 |
|---|---|---|
| 1. 载波监听(Carrier Sense) | 站点准备发送数据帧。其物理层(PHY)持续监测介质电平(通常通过 CRS 载波侦听信号来判断)。若检测到信道 空闲(电平低),则等待一个称为帧间隙(Inter-Frame Gap, IFG)的微小时间(在10Mbps以太网中为9.6µs)后,进入步骤2;若检测到信道 忙碌,则继续监听,直到信道变为空闲。 | 空闲检测时间:物理层硬件的检测非常迅速,几乎是即时的。 |
| 2. 发送帧(Transmission) | 当介质空闲时,站点开始从前导码(Preamble)和帧起始定界符(SFD)开始,发送完整的以太网数据帧 。在整个发送期间,站点的发送器在发送信号的同时,其接收器(或专门的冲突检测电路)也 同时监测 介质上的信号电平,为步骤3做准备。 | 发送时间 = 帧长度(bits) / 介质速率(bps)。例如,一个1518字节(12144位)的最大以太网帧,在10Mbps速率下发送时间约为1.2ms。 |
| 3. 冲突检测(Collision Detection) | 在发送过程的前半部分,站点需要特别关注冲突。冲突的最坏情况发生在:一个站点刚开始发送,其信号即将到达网络最远端的另一个站点时,远端站点恰好也开始发送。冲突信号需要时间传回始发站。这个检测冲突的最长时间窗口被称为 时隙(Slot Time)。如果在此窗口内,站点检测到介质电压异常(冲突),则立即停止发送数据帧,并进入步骤4。若发送超过时隙时间仍未检测到冲突,则表明已成功获得信道使用权,可以继续发送直至帧结束。 | 时隙时间(Slot Time):这是协议中最重要的时间参数,定义为信号在网络中最大端到端往返传播延迟的两倍(2τ)。它确保了任何冲突都可以在发送方完成最小帧发送之前被检测到。 |
| 4. 发送 Jam 信号 | 测到冲突后,发送端立即停止发送数据帧,并发送一个 32-bit 的 Jam 信号。这个信号的目的是强化冲突,确保网络上所有站点都能检测到此次冲突事件,从而丢弃已接收到的不完整(冲突)的帧片段 。 | Jam 信号持续时间:32 bits / 速率。在10Mbps下约为3.2µs;在100Mbps下约为0.32µs。 |
| 5. 退避(Back-off) | 发送完 Jam 信号后,站点启动 二进制指数退避(BEB) 算法。具体步骤如下:① 记录本次为第 n 次连续冲突(首次为 n=1)。② 在 [0, 2(min(n,10))2^(min(n, 10))2(min(n,10)) - 1] 的整数范围内,随机选择一个值 k。min(n, 10) 表示当连续冲突次数超过10次后,随机数的上限不再增加,固定为 2^10 - 1 = 1023。③ 站点将等待 k × SlotTime 的时间。 | 退避时间 = k × SlotTime。这是一个随机时间,旨在使冲突各方在不同的时间点重新尝试发送,避免再次碰撞。 |
| 6. 重新尝试 | 退避等待时间结束后,站点并不会立即发送,而是返回到 步骤 1,重新开始载波监听流程,再次竞争信道。 | - |
| 7. 重传次数限制 | 如果一个数据帧的连续冲突次数 n 超过了 16 次(这是 IEEE 802.3 标准的规定),发送端将不再尝试重传该帧。它会丢弃该帧,并向上层协议(如IP层)报告一个“发送失败”的错误(TxAbort)。这通常意味着网络出现了严重的拥塞或物理故障。 | 最大重传尝试次数:16 次。 |
第二章:CSMA/CD 的关键参数与时序约束
CSMA/CD协议的有效性严重依赖于一系列精确定义的时间参数,这些参数共同构建了其时序约束的骨架,确保了冲突检测机制的可靠性。
2.1 核心时间参数定义
-
时隙时间 (Slot Time):
时隙是CSMA/CD协议的灵魂。其物理意义是:网络中任意两个站点之间信号传播延迟的最大值的两倍,即最远端对端之间的信号往返传播时间(Round-Trip Delay, RTD)。这个参数至关重要,因为它定义了冲突检测的“窗口期”。一个站点必须保证在发送数据后的一个“时隙时间”内,能够明确知道自己是否遭遇了冲突。如果发送时间小于时隙,那么可能出现帧已发送完毕、但冲突信号尚未传回的情况,导致冲突逃逸。 -
最小帧长度 (Minimum Frame Size):
为了保证时隙的有效性,IEEE 802.3标准规定了以太网帧的最小长度。这个长度的设定原则是:以特定速率发送最小帧所需的时间,必须不小于该网络的时隙时间。
最小帧发送时间 ≥ Slot Time
对于经典的10Mbps以太网,时隙被定义为51.2µs,因此最小帧长被设定为:
10 Mbps × 51.2 µs = 512 bits = 64 字节
这就是以太网帧最小为64字节的根本原因。任何小于64字节的帧都会被接收方认为是由于冲突而异常中断的“冲突碎片”(Runt Frame),并被丢弃。

被折叠的 条评论
为什么被折叠?



