CSMA/CD协议分析笔记
CSMA/CD(carrier sense multiple access with collision detection)文章目录
- CSMA/CD协议分析笔记
- 前言
- 一、解读CS MA / CD
- CS——“载波监听”
- MA——“多点接入”
- CD——“碰撞(冲突)检测”
- 二、传播时延对载波监听的影响
- 为什么先听后发还是会产生冲突???
- 端到端往返传播时延
- 三、产生冲突(确定碰撞)后的重传时机
- 如何确定碰撞后的重传时机??
- 最小帧长问题
- 四、强化碰撞
- 五、要点归纳
- 1.准备发送
- 2.检测信道
- 3.边发送边监听
前言
课程视频https://www.bilibili.com/video/BV19E411D78Q/?p=35
CSMA/CD协议,意思是载波监听多点接入/碰撞检测,属于共享信道中动态媒体接入控制的随机接入的协议,即所有用户可以随机发送信息,发送信息时占用全部信道带宽。
CSMA/CD口诀:先听后发;边听边发;冲突停止;随机重发
一、解读CS MA / CD
CS——“载波监听”
检测信道。不管在发送前还是发送后,每个站都必须不停地检测信道,检查是否有其他的计算机在发送数据。
MA——“多点接入”
总线型网络,即计算机以多点接入地方式连接在一根总线上。
CD——“碰撞(冲突)检测”
半双工网络“边发送边监听”,即适配器边发送数据边检测信道上地信号电压地变化情况,以便于判断自己在发送数据时其他站是否也在发送数据。当几个站同时在总线上发送数据时,总线上的信号电压变化幅度将会增大(互相叠加),当适配器检测到地信号电压变化幅度超过一定地门限值时,就认为总线上至少有两个站同时发送数据,即产生了冲突或碰撞。
二、传播时延对载波监听的影响
为什么先听后发还是会产生冲突???
因为电磁波在总线上总是以有限的速率传播的。
设局域网两端站A和站B相距1km,用同轴电缆相连。电磁波在1km电缆的传播时延约为5us。因此,A向B发出的数据,在约5us后才能传送到B。如果B在A发送的数据到达前发送数据,这是B的载波监听检测不到A发送的信息,就一定会在某个时间A的帧和B的帧碰撞。产生碰撞之后,A和B分别对数据进行差错控制,一定会检测到所接收到的数据出现错误,而碰撞之后接收的数据发生错误,这两个帧都会变得无用,A和B站也会停发数据,不让这个错误继续下去。
端到端往返传播时延
在局域网的分析中,常把总线上的单程端到端传播时延记为τ
发送的数据站希望尽早知道是否发生了碰撞,最多要经过的时间是两倍的总线端到端的传播时延(2τ),或总线的端到端往返传播时延,也称为争用期/冲突窗口/碰撞窗口
只要经过2τ时间还没有检测到碰撞,就能肯定这次发送不会发生碰撞
经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
三、产生冲突(确定碰撞)后的重传时机
以太网使用截断二进制指数退避算法来确定碰撞后重传的时机。这种算法让发生碰撞的站在停止发送数据后,不是等待信道变成空闲后就立即重新发送数据,而是推迟(避让)一个随机的时间。
如果几个发生碰撞的站都在监听信道,那么都会同时发现信道变成了空闲。如果在此时都同时重新发送,那么一定会又发生碰撞
如何确定碰撞后的重传时机??
- 确定基本推迟时间为争用期2τ
- 定义参数k,它等于重传次数,但k不超过10,即k=min[重传次数,10]。重传次数不超过10时,k等于重传次数;当重传次数大于10时,k就不再增大而一直等于10
- 从离散的整数集合[0,1,2k-1]中随机取出一个数,重传所需要退避的时间就是r倍的基本推迟时间,即r * 2τ
- 当重传达到16次仍然不成功,说明网络太拥挤,认为此帧永远无法正确发出,抛弃此帧并向高层报告出错
(2)若再次碰撞,则进行第二次重传:k=2,r从{0,1,2,3}选;重传推迟时间为0或2τ或4τ或6τ,在这四个时间中随机选一个
(3)若再次碰撞,则进行第三次重传:k=3,r从{0,1,2,3,4,5,6,7}选......;
(10)若还是碰撞,则进行第十次重传:k=10,r从{0,1,2,......,1022,1023}选......
(11)若还是碰撞,则进行第十一次重传:k=10,r从{0,1,2,......,1022,1023}选......
(16)若还是碰撞,说明网络太拥挤,此时认为此帧永远无法正确发出,抛弃此帧并向高层报告出错。
若连续发生多次冲突,就表明可能有较多的站参与争用信道。使用此算法可使重传需要推迟的平均时间随重传次数的增大而增大,因而减小发生碰撞的概率,有利于整个系统的稳定。
最小帧长问题
——帧的传输时延至少要两倍的信号在总线中的传播时延——
%为什么要设置最小帧长???%
如果某一个站发送了一个很短的帧,假定这个帧在继续向前传播到达目的站之前和别的站发送的帧发生了碰撞,因而目的站点接收到错误的帧,然后将该帧丢弃。而发送站不知道这个帧发生了碰撞,因而不会重传此帧。
最小帧长的计算:
以太网规定的最小帧长为64B,即512bit。凡是长度小于64B的都是由于冲突而异常终止的无效帧。只要接收到这种无效帧,就应当立即丢弃。
最小帧长相关例题请跳转到计算机网络——CSMA/CD最小帧长相关题目
协议规定了基本推迟时间为争用期2τ,具体的争用期时间是51.2us。对于10Mbit/s以太网,在争用期内可发送512bit,即64字节,也可以说争用期是512比特时间。
四、强化碰撞
当发送数据的站点一旦发生了碰撞,除了立即停止发送数据外,还需要再继续发送32比特或者48比特的人为干扰信号,以便于让所有用户都知道现在已经发生了碰撞
T1:A站从发送数据开始到检测到碰撞并停止发送的时间间隔T2:A站得知碰撞已经发生时发送的强化碰撞的干扰信号的持续时间
发生碰撞使A浪费的时间:T1+T2
整个信道被占用的时间:T1+T2+τ
为了使刚刚收到数据帧的目的站点清理接收缓存,做好接收下一帧的准备,以太网规定了帧间最小间隔9.6us,相当于96比特时间。
五、要点归纳
1.准备发送
在发送数据帧之前,先要检测信道。适配器从网络层获得一个分组,加上以太网的首部和尾部,组成以太网帧,放入适配器的缓存中。
2.检测信道
若检测到信道忙,就不停的检测信道,一直等待信道转为空闲。
若检测到信道为空闲,并在96比特时间内信道保持空闲(保证了帧间最小间隔),就发送这个帧。
3.边发送边监听
-
发送成功
在争用期内一直未检测到碰撞,那么这个帧肯定能发送成功。 -
发送失败
(1)在争用期内检测到碰撞,这时立即停止发送数据,按照规定发送人为干扰信号
(2)适配器执行截断二进制指数退避算法,等待r倍的512比特时间后,返回步骤2继续检测信道
(3)若重传16次仍不能成功,则停止重传向上报错
以太网每发完一个帧,一定要把已发送的帧暂时保留一下。如果在争用期内检测出发生了碰撞,那么还要再推迟了一段时间后再把这个帧重传一次。