什么是CSMA/CD

前言

在前期文章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机制避免冲突。


    原创不易,你的支持是我最大的动力,欢迎大家点赞,收藏,关注!

    ### CSMA/CD协议的基本概念与工作原理 #### 基本定义 CSMA/CD(Carrier Sense Multiple Access/Collision Detection,带冲突检测的载波监听多路访问)是一种用于局域网(LAN)的数据链路层协议。它规定了一种允许多个设备共享同一通信介质的方法,并通过监听信道状态来减少数据包碰撞的可能性[^2]。 #### 工作机制详解 1. **多点接入** 多个节点以多点接入的方式连接到一根总线上。这意味着所有的设备都共享同一个物理媒介来进行数据传输[^2]。 2. **载波监听** 在发送数据之前,每个节点必须先监听信道是否空闲。这是通过电子技术检测总线上的信号电压变化实现的。只有当信道被确认为空闲时,节点才会发起数据传输[^2]。 3. **碰撞检测** 节点在发送数据的同时还需要继续监听信道的状态。这是因为即使在开始发送时信道是空闲的,也不能完全排除其他节点几乎同时决定发送的情况。如果在发送过程中检测到了电压波动异常,则表明发生了冲突。此时,所有涉及冲突的节点都将立即停止当前的数据传输活动[^2]。 4. **冲突处理** 一旦检测到冲突,参与冲突的所有站点都会执行退避算法。这通常涉及到计算一个随机时间间隔,在这段时间过后再次尝试重新发送消息。这种方法有助于降低后续可能产生的新冲突概率。 5. **重试次数限制** 如果某个特定帧经历过多轮失败后的重传仍未能成功送达目标地址,则最终会放弃此次传送请求并将错误报告给高层应用或管理实体进行进一步处理[^2]。 ```python import random import time def csma_cd_send(data): def is_channel_idle(): # Simulate checking if the channel is idle. return bool(random.getrandbits(1)) retry_limit = 16 retries = 0 while retries < retry_limit: if is_channel_idle(): # Check whether the medium is free before transmitting. try: start_transmission(data) if detect_collision_during_transmit(): raise Exception("Collision detected.") print(f"Data {data} transmitted successfully!") break except Exception as e: print(e) backoff_time = calculate_exponential_backoff(retries) time.sleep(backoff_time) # Wait according to exponential back-off algorithm. else: time.sleep(random.random()) # Continue listening until it's clear. retries +=1 else: print("Transmission failed after maximum number of attempts.") csma_cd_send('Sample Data') ``` --- ### 总结 综上所述,CSMA/CD 协议提供了一个有效的框架让多个设备能够在不需中心控制器协调的情况下安全可靠地共用单一通信路径资源。然而需要注意的是,由于其设计特点决定了仅适用于较小规模且地理范围有限的传统有线网络环境中最为理想有效[^1]^。
    评论
    成就一亿技术人!
    拼手气红包6.0元
    还能输入1000个字符
     
    红包 添加红包
    表情包 插入表情
     条评论被折叠 查看
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包

    打赏作者

    交换机路由器测试之路

    你的鼓励将是我创作的最大动力

    ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
    扫码支付:¥1
    获取中
    扫码支付

    您的余额不足,请更换扫码支付或充值

    打赏作者

    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值