载波监听多点接入/碰撞检测

本文详细介绍了CSMA/CD(载波监听多点接入、碰撞检测)的工作原理,包括多点接入、载波监听、碰撞检测的概念。文章讨论了由于传播延迟可能导致的碰撞情况,以及碰撞后的后果和应对措施,如二进制指数退避算法。此外,还阐述了争用期的重要性,说明了以太网中64字节是最短有效帧长的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CSMA/CD表示Carrier Sense Multiple Access with Collision Detection(载波监听多点接入、碰撞检测
多点接入:表示许多计算机以多点接入的方式连接在一根总线上
载波监听:是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞。
实际上,总线上并没有什么“载波”。因此,“载波监听”就是用电子技术检测总线上有没有其他计算机发送的数据信号

一、“碰撞检测”

  • “碰撞检测”就是计算机边发送数据边检测信道上的信号电压大小
  • 当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)。
  • 当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞
  • 所谓“碰撞”就是发生了冲突。因此“碰撞检测也称为冲突检测”。

二、碰撞原因

问题:当某个站监听到总线是空闲时,总线是否一定是空闲的?

答案:否

原因:传播延迟导致

具体解释

  • A向B发出的信息,要经过一定的时间后才能传送到B。
  • B若在A发送的信息到达B之前发送自己的帧(因为这时B的载波监听检测不到A所发送的信息),则必然要在某个时间和A发送的帧发生碰撞。

三、碰撞后果及相应措施

1. 碰撞后果

在发生碰撞时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息来。

2. 相应措施

每一个正在发送数据的站,一旦发现总线上出现了碰撞,就要立即停止发送,免得继续浪费网络资源,然后等待一段随机时间后再次发送。

强化碰撞:

  • 当发送数据的站一旦发现发生了碰撞时:
    (1)立即停止发送数据
    (2)再继续发送若干比特的人为干扰信号(jamming signal),以便让所有的用户都知道现在已经发生了碰撞。

四、二进制指数类型退避算法

1. CSMA/CD的发送流程图

在这里插入图片描述

2. 争用期

问题:假设传播时间为工,请问最先发送数据帧的站在发送数据帧后至多经过多少时间(两倍的端到的端往返时延)就可知道发送的数据帧是否遭受了碰撞?

答案: 2τ

  • 以太网的端到端往返时延 2τ 称为争用期,或 碰撞窗口
  • 经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。

争用期的长度是多少?

  • 以太网取51.2μs为争用期的长度
  • 对于10 Mb/s以太网,在争用期内可发送512 bit, 即64字节。
  • 以太网在发送数据时,若前64字节没有发生冲突,则后续的数据就不会发生冲突。( 以太网帧长度不能小于64字节 ,64字节为最短有效帧长

3. 二进制指数类型退避算法

(truncated binary exponential type)

  • 发生碰撞的站在停止发送数据后,要推迟(退避)一个随机时间才能再发送数据。
  • 基本退避时间取争用期2τ
  • 定义重传次数k,k≤10,即k = Min[重传次数, 10]
  • 从整数集合[0,1… (2^k -1)]中随机地取出一个数,记为r 。重传所需的时延就是r倍的基本退避时间。( 随机:防止同时发生碰撞,产生相同时延 )
  • 当重传达16次仍不能成功时即丢弃该帧,并向高层报告。
### 以太网协议中的多点接入概念 在以太网环境中,多个设备通过单一物理介质(如双绞线或光纤)连接在一起形成一个多点访问网络。这意味着在同一时间段内,所有连接到该网络的节点都能接收到任何单个节点发出的信息帧。 #### 载波监听多点接入/冲突检测 (CSMA/CD) 为了防止两个以上设备同时传输造成信号干扰即所谓的“碰撞”,以太网采用了载波监听多点接入/冲突检测(Carrier Sense Multiple Access with Collision Detection, CSMA/CD)[^2]机制来管理和控制这些并发通信请求: - **载波监听**:每个准备发送数据包之前都会先侦听信道是否空闲; - **多点接入**:允许多台机器共用同一个广播域内的资源; - **冲突检测**:一旦发现有其他站正在传送,则立即停止自己的发送动作并等待随机延迟后再尝试重新发送。 这种策略有效地减少了因竞争而产生的冲突次数,并提高了整个系统的吞吐量效率。 当发生冲突时,会有一个特定的时间间隔被称为争用期(``2τ``),在此期间所有的参与者都需要退避以便让冲突得到解决[^4]。 ```python def csma_cd_send(data_frame): channel_free = check_channel() while not channel_free: wait_random_backoff_period() # 随机退避一段时间 if detect_collision(): send_jam_signal() # 发送阻塞信号通知所有人发生了冲突 retry_after_exponential_backoff() # 指数退避算法重试 transmit_data(data_frame) # 当信道为空闲状态时发送数据帧 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值