前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >计算机网络:随机访问介质访问控制之CSMA/CD协议

计算机网络:随机访问介质访问控制之CSMA/CD协议

作者头像
timerring
发布于 2022-11-18 09:53:04
发布于 2022-11-18 09:53:04
1.7K0
举报
文章被收录于专栏:TechBlogTechBlog

CSMA/CD协议

载波侦听多路访问/碰撞检测(Carrier Sense Multiple Access with Collision Detection, CSMA/CD) 协议是CSMA协议的改进方案,适用于总线形网络或半双工网络环境。“载波侦听”就是发送前先侦听,即每个站在发送数据之前先要检测一下总线上是否有其他站点正在发送数据,若有则暂时不发送数据,等待信道变为空闲时再发送。“碰撞检测”就是边发送边侦听,即适配器边发送数据边检测信道上信号电压的变化情况,以便判断自己在发送数据时其他站点是否也在发送数据。

CSMA/CD的工作流程可简单概括为“先听后发,边听边发,冲突停发,随机重发”。

1)适配器从网络层获得一个分组,封装成以太网帧,放入适配器的缓存,准备发送。

2)如果适配器侦听到信道空闲,那么它开始发送该帧。如果适配器侦听到信道忙,那么它持续侦听直至信道上没有信号能量,然后开始发送该帧。

3)在发送过程中,适配器持续检测信道。若一直未检测到碰撞,则顺利地把这个帧发送完毕。若检测到碰撞,则中止数据的发送,并发送一个拥塞信号,以让所有用户都知道。

4)在中止发送后,适配器就执行指数退避算法,等待一段随机时间后返回到步骤2)。

站A在发送帧后至多经过时间2\tau (端到端传播时延的2倍)就能知道所发送的帧有没有发生碰撞(当\delta→0时)。因此把以太网端到端往返时间2\tau 称为争用期(又称冲突窗口或碰撞窗口)

每个站在自己发送数据之后的一小段时间内,存在发生碰撞的可能性,只有经过争用期这段时间还未检测到碰撞时,才能确定这次发送不会发生碰撞。

为了确保发送站在发送数据的同时能检测到可能存在的碰撞,需要在发送完帧之前就能收到自己发送出去的数据,即帧的传输时延至少要两倍于信号在总线中的传播时延,所以CSMA/CD总线网中的所有数据帧都必须要大于一个最小帧长。任何站点收到帧长小于最小帧长的帧时,就把它当作无效帧立即丢弃。

最小帧长的计算公式为: 最小帧长=总线传播时延×数据传输速率×2 = 争用期×数据传输速率

如果只发送小于最小帧长的帧,那么需要在MAC子层中于数据字段的后面加入一个整数字节的填充字段,以保证以太网的 MAC帧的长度不小于最小帧长。

除检测冲突外,CSMA/CD还能从冲突中恢复。一旦发生了冲突,参与冲突的两个站点紧接着再次发送是没有意义的,会导致无休止的冲突。CSMA/CD 采用二进制指数退避算法来解决碰撞问题。算法精髓如下:

  1. 确定基本退避时间, 一般取两倍的总线端到端传播时延 2 \tau (即争用期)。
  2. 定义参数 k , 它等于重传次数, 但 k 不超过 10 , 即 k= min [ 重传次数, 10]。当重传次数不超过 10 时, k 等于重传次数; 当重传次数大于 10 时, k 就不再增大而一直等于 10
  3. 从离散的整数集合 \left[0,1, \cdots, 2^{k}-1\right] 中随机取出一个数 r , 重传所需要退避的时间就是 r 倍的基本退避时间, 即 2 r \tau
  4. 当重传达 16 次仍不能成功时, 说明网络太拥挤, 认为此帧永远无法正确发出, 抛弃此帧并向高层报告出错

使用截断二进制指数退避算法可使重传需要推迟的平均时间随重传次数的增大而增大 (这也称动态退避), 因而能降低发生碰撞的概率, 有利于整个系统的稳定。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CSMA/CD协议
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档