英文全称:Carrier Sense Multiple Access/Collision Detection

载波侦听多路访问/冲突检测协议(CSMA/CD)

这种协议已广泛应用于局域网中,是广播型信道中采用一种随机访问技术的竞争型访问方法。它处于一种总线型局域网结构,其物理拓扑结构正逐步向星型发展。

一、背景

最早的以太网是将许多计算机都连接到一根总线上。

总线的特点

当一台计算机发送数据的时候,总线上的所有计算机都能检测到这个数据。这就是广播通信方式。当我们需要在总线上进行一对一通信的时候,就需要使每一台计算机的网卡拥有一个与其他网卡都不同的地址。这个时候,我们在发送数据帧时,就需要表明数据帧接收站的地址。只有网卡地址与其相同时,才接受数据帧,否则丢弃帧。

为了通信方便,以太网采取了以下两种措施

  1. 采用较为灵活的无连接的工作方式,即不必建立连接就可以直接发送数据。网卡对发送的数据帧不进行编号,也不要求对方发回确认。这样做可以使以太网工作起来非常简单。以太网所提供的服务是尽最大努力的交付,即不可靠的服务。
  2. 以太网发送的数据都是使用曼彻斯特编码的信号,使用曼彻斯特编码的优点是可以很方便的解决接收端接收连续的0或者1时无法提取同步信号的问题;缺点就是因为曼彻斯特编码的规则导致每秒需要传输的码元数量增加了一倍,所以它占的频带宽度也比原始的基带信号增加了一倍。

二、概念

载波侦听(Carrier Sense)

网络上各个工作站在发送数据前,都要确认总线上有没有数据传输。

若有数据传输(称总线为忙),则不发送数据;

若无数据传输(称总线为空),立即发送准备好的数据。

多路访问(Multiple Access):

网络上所有工作站收发数据,共同使用同一条总线,且发送数据是广播式。

冲突检测(Collision Detection):

指发送结点在发出信息帧的同时,还必须监听媒体,判断是否发生冲突(同一时刻,有无其他结点也在发送信息帧)。

在CSMA中,由于信道传播时延的存在,即使总线上两个站点没有监听到载波信号而发送帧时,仍可能会发生冲突。由于CSMA算法没有冲突检测功能,即使冲突已发生,仍然将已破坏的帧发送完,使数据的有效传输率降低。

CSMA/CD是一种CSMA的改进方案。使发送站点传输过程中仍继续监听媒体,以检测是否存在冲突。如果发生冲突,信道上可以检测到超过发送站点本身发送的载波信号的幅度,由此判断出冲突的存在。一旦检测到冲突,就立即停止发送,并向总线上发一串阻塞信号,用以通知总线上其他各有关站点。

作用:通道容量就不致因白白传送已受损的帧而浪费,可以提高总线的利用率。

三、工作原理

(1)载波监听。当一个站点想要发送数据的时候,它检测网络查看是否有其他站点正在传输,即监听信道是否空闲。

(2)如果信道忙,则等待,直到信道空闲;如果信道闲,站点就传输数据。

(3)在发送数据的同时,站点继续监听网络确信没有其他站点在同时传输数据。因为有可能两个或多个站点都同时检测到网络空闲然后几乎在同一时刻开始传输数据。如果两个或多个站点同时发送数据,就会产生冲突。

(4)当一个传输节点识别出一个冲突,则立即停止该次传输,并向信道发出一个“拥挤”信号,这个信号使得冲突的时间足够长,让其他的节点都能发现该冲突。

(5)其他节点收到拥塞信号后,都停止传输,等待一个随机产生的时间间隙(回退时间,Backoff Time)后重发数据。

四、进一步解释

  • 关于【冲突检测】的进一步解释:

具体地,就是网卡边发送数据边检测信道上的信号电压的变化情况,以便判断自己在发送数据的时候其他站是否也在发送数据。当几个站同时在总线上发送数据时,总线上的信号电压变化幅度将会增大(互相叠加),当网卡检测到的信号电压超过一定的门限值时,说明总线上至少有两个站同时在发送数据,表明产生了冲突。这时,由于接收的信号已经识别不出来,所以任何一个正在发送的站就会立即停止发送数据,然后等待一段随机事件以后再次发送。

  • 传播时延对冲突检测的影响:

因为网卡只有在接收到电压幅度不正常的信号以后才能判断是否产生了冲突,所以它在接收到信号之前会认为信道是空闲的。但是信号传播会有延迟,比如下图:

如图为两台计算机A、B,假设二者指甲距离为一公里,如果A、B同时发送数据,则会在线路中间发生碰撞,那么A、B检测到碰撞的时间为图中单程端到端的传播时延t;若A先发,B后发,那么A最长时间检测到碰撞的时间为2t。
注:电磁波在1km电缆的传播时延约为5us(需要记住!)

在使用CSMA/CD协议时,一个站不可能同时进行发送和接收,进行的是半双工通信

从图中可以看出,每个站在自己发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。(这个时间是2t,t由两站之间的距离决定)这是以太网发送的不确定性。正是这种不确定性使得以太网的平均通信量远小于以太网的最高数据率。
以太网端到端的往返时间2t称为争用期碰撞窗口

  • 可能会出现这样一种情况:

某个站发送了一个很短的帧,但发生了碰撞,不过在这个帧发送完毕后才检测到发生了碰撞。已经没有办法中止帧的发送,因为已经发送完了。这个时候即使发生了碰撞,那么刚才的帧也无法进行重传,就会产生错误。
注:数据帧能够重传的一个条件:以太网要实现重传,必须保证这个站在收到冲突信号的时候这个帧没有传完。

所以基于这种情况,以太网规定了一个最短帧的长度为64个字节,即512bit。因为64字节正好是争用期长度(碰撞窗口长度),如果在争用期内没有发生碰撞,那么就不会发生碰撞了。因此,凡长度小于64字节的帧都是由于冲突而异常停止的无效帧。接收端收到这种帧会直接丢弃。(对于10Mb/s传统以太网而言!!!)

我们知道了信号在以太网上传播1km需要5us,以太网上最大的端到端的时延必须小于争用期的一半(25.6us),相当于以太网的最大端到端长度约为5km。实际上的以太网覆盖范围远没有这么大。因此实际的以太网都能在争用期51.2us内检测到可能发生的碰撞。以太网确定以51.2us作为争用期,不仅考虑了端到端时延,而且还考虑了好多其他因素。

  • 强化碰撞

当发送数据的站一旦发现发生了碰撞时,除了立即停止发送数据外,还要再继续发送32比特或48比特的人为干扰信号(就是之前提到的“拥挤”信号),以便让所有用户都知道发生了碰撞。

以太网还规定了帧间最小间隔为9.6us,相当于96比特时间,这样做是为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备。

  • 以太网建立重传机制的原因:

首先,以太网不想采用连接机制,因为会降低效率,但他又想有一定的重传机制,因为以太网的重传是微秒级,而传输层的重传,如TCP的重传达到毫秒级,应用层的重传更达到秒级,我们可以看到越底层的重传,速度越快,所以对于以太网错误,以太网必须有重传机制。

  • CSMA/CD协议的工作过程:

(1)准备发送:适配器从网络层获得一个分组,加上以太网的首部和尾部,组成以太网帧,,放入网卡的缓存中,但在发送之前,必须先检测信道。
(2)检测信道:不停地检测信道,一直等待信道空闲,并在96比特时间内信道保持空闲(保证了帧间最小时间间隔),就发送这个帧。
(3)在发送过程中仍不停地检测信道,即网络适配器要边发送边监听。这里只有两种可能性:

发送成功:在争用期内一直未检测到碰撞,这个帧发送成功,回到(1)

发送失败:在争用期内检测到碰撞,这时立即停止发送数据,并按规定发送人为干扰信号。适配器接着就执行指数退避算法,等待r倍512比特时间后,返回到步骤(2),继续检测信道。若重传16次仍不能成功,则停止重传向上报错。

以太网每发完一帧,一定要把已经发送的帧暂时保留一下。如果在争用期内检测出发生了碰撞,那么还要在推迟一段时间后再把这个帧重传一次。

————————————————

参考:

[1]https://blog.csdn.net/loveCC_orange/article/details/79177129

(CSDN博主「loveCC_orange」的原创文章,遵循 CC 4.0 BY-SA 版权协议)
[2]https://blog.csdn.net/CYKsky/article/details/43058607

[3]https://baike.baidu.com/item/CSMA/CD/986847

什么是CSMA/CD相关推荐

  1. CSMA/CD在全双工和半双工模式下的区别

    谈谈以太网中何时使用CSMA/CD冲突检测机制 关于以太网何时使用CSMA/CD检测机制,这个问题前两天刚和朋友做了讨论.在网络上搜索和很久,也有一些同行们不太理解,特别是一些初学CCNA的,没有工作 ...

  2. 3.5.4 CSMA/CD 协议

    3.5.4 CSMA/CD 协议

  3. 【计算机网络】数据链路层 : CSMA/CD 协议 ( 载波监听多点接入 / 碰撞检测 协议 | 单程端到端传播时延 | 截断二进制指数规避算法 | 计算示例 | 最小帧长问题 )★

    文章目录 一. CSMA/CD 协议 二. 传播时延对于 载波监听 的影响 三. 单程端到端传播时延 相关概念 四. 碰撞后重传时机 ( 截断二进制指数规避算法 ) 五.截断二进制指数规避算法 计算示 ...

  4. CSMA/CD协议——学习笔记

    CSMA/CD协议要点: 1)适配器从网络层获得一个分组,加上以太网的首部和尾部,组成以太网帧,放入适配器的缓存中,准备发送. 2)若适配器检测到信道空闲(即在96比特时间内没有检测到信道上有信号), ...

  5. 119.CSMA/CD

    csma/cd:(carrier sense multiple access /collision detect )载波监听多路访问/碰撞检测方法. 在**以太网(**总线型网络 1-多)中,所有的节 ...

  6. 计算机网络·CSMA/CD协议有关计算

    CSMA/CD 一.官方解释 二.争用期 三.二进制退避算法 一.官方解释 如果两个人同时和我们说话,我们是不能够听清说的啥的.计算机也是一样,在同一时间里只能允许一台计算机发送数据,否则各个计算机之 ...

  7. 3.5.5 CSMA/CD 协议

    目录 思维导图 CSMA/CA 协议 CSMA/CA 工作原理 CSMA/CA与CSMA/CD 对比 思维导图 CSMA/CA 协议 CSMA/CA 工作原理 CSMA/CA与CSMA/CD 对比

  8. 信道分类、信道复用技术、CSMA/CD 协议、PPP 协议、MAC 地址、局域网、以太网、交换机、虚拟局域网

    1.信道分类 1.1 广播信道 一对多通信,一个节点发送的数据能够被广播信道上所有的节点接收到. 所有的节点都在同一个广播信道上发送数据,因此需要有专门的控制方法进行协调,避免发生冲突(冲突也叫碰撞) ...

  9. CSMA/CD工作原理

    CSMA/CD就是载波监听多点接入/碰撞检测 CSMA/CD工作原理可以概括如下: 1:先听后说,边听边说 2:一旦冲突,立即停说 3:等待时机,然后再说 在发送数据前,先监听总线是否空闲,若总线忙, ...

  10. 王道考研 计算机网络12 点对点链路 广播式链路 介质访问控制MAC 动态分配信道 ALOHA协议 CSMA CSMA/CD CSMA/CA协议

    传输数据使用的两种链路 广播式链路: 传输的信息会传到所有的主机上 介质访问控制 动态分配信道-ALOHA协议 1.纯ALOHA协议: 2.时隙ALOHA协议 总结: 动态分配信道-CSMA协议 ca ...

最新文章

  1. 【STM32】外部中断实验代码详解
  2. php维护session,维护带有cookie的PHP session_start()
  3. mysql中dml语言_八、mysql DML语言
  4. 如果企业级客户不爽,亚马逊AWS该怎么办?
  5. java实现扫雷小游戏【完整版】
  6. Win7免费升级Win10
  7. 学习笔记2 光伏MPPT算法
  8. 使用java解压GZip文件
  9. 搬: 含有对象成员指针的类的对象成员指针初始化问题
  10. 如何提高软件开发团队的协作效率
  11. vue-draggle实现元素拖动,放大,缩小,多元素一起改变位置
  12. 百兆网络变压器原理图及网络变压器功能(附PDF工程图纸)
  13. Chart.xkcd图表库
  14. css3常用语言-动画
  15. android什么意思!读完我这份《Android开发核心源码精编解析》面试至少多要3K!面试建议
  16. Vue3 element-ui实现Pagination分页组件--封装分页
  17. Ant Design 编写登录和注册页面
  18. 一文8个步骤从0到1教你基于数据驱动的接口自动化框架封装
  19. NBA名人堂之-萨姆·琼斯|皮特·马拉维奇|埃尔·门罗|比尔·沙尔曼|杰里·韦斯特
  20. OpcEnum交互式用户不可选解决办法

热门文章

  1. 操作系统4小时速成:进程管理占考试40%,进程状态,组织,通信,线程拥有调度,进程拥有资源,进程和线程的区别
  2. android获取各运营商信号,一篇关于 Android 获取运营商的全面笔记
  3. stay_foolish_stay_hungry(没事多看看)
  4. 从市场换手率变化判断头部
  5. 微信小程序map地图
  6. kubernetes简介
  7. 万用表和示波器哪个更容易上手
  8. 超级终端之手机连接篇
  9. 使用Kindle4rss推送自己感兴趣的博文
  10. 大数据架构之--Kappa架构