CSMA、CSMA/CD

ALOHA系统中每个站点发送数据都是随心所欲的,因此发生碰撞的概率很大,如果每个站点发送前都侦听下共用信道,发现信道空闲后再发送,碰撞概率就大大下降,这正是Carrier Sense Multiple Access的思想。基于aloha协议的思想,CSMA协议对其最大的改进即是引入了LBT机制(Listen Before Talk),在CSMA中的CS(Carrier Sense)即是指Listen监听机制。

CSMA

CSMA能够分成下面三种:

  • 1-persistentes CSMA:“节点须要持续监听信道。一旦节点发现信道空暇后,则立马发送数据。”。

  • 0-persistentes CSMA:“节点不连续监听信道,若该时刻节点监听信道为busy,那么等待一段时间后。再次进行监听。

    若节点该时刻监听信道为空暇,则立马发送数据。

  • p-persistentes CSMA:“节点须要持续监听信道,一旦发现信道空暇后,节点以p的概率立马发送数据。以1-p的概率不发送数据。

    若节点该时刻不发送数据。那么等待一段时间后。再次进行监听,并以p概率再次发送”。

CSMA/CD(有线连接局域网)

CSMA/CD从思想上应该是源自于1-坚持CSMA,即1-persistentes CSMA。在其基础上。增加了CD(Collision Detection)的机制。冲突检測。即CD的机制主要是用来发现冲突。并解决冲突的。

我们以下描写叙述CSMA/CD的详细工作机制:

节点发送数据之前须要持续监听信道。一旦节点发现信道空暇,则立马发送数据。在发送数据的同一时候,节点持续监听信道,"探測" 是否有别的节点也在该时刻发送数据。

若传输过程中没有检測到别的节点的传输,那么成功传输。

在成功传输后,节点须要等待帧间间隔IFG(interframe gap)时间后。能够进行下一次传输。

若在传输过程中,探測到别的节点也在传输,那么则检測到冲突。发生冲突后,节点立马停止当前的传输。而且发送特定的干扰序列(JAM序列),用以加强该次冲突(用以保证其余全部节点都检測到该次冲突),在JAM序列发送完之后,节点随机选择一个时间倒数进行backoff。当backoff完毕之后。节点能够尝试再次重传”。

概括为“先听后发,边听边发,冲突停发,随机重发”。

展开解释一下冲突检测:
电磁波的传播速率有限,当站点检测到信道空闲时,信道未必空闲(有其他站点正在发送但还没传播过来)。为了确保站点在发送数据的同时能检测到可能存在的碰撞,需要在发送完帧之前就能收到自己已经发送出去的数据,即帧的传输时延至少要两倍于信号在总线上的传播时延,在站点发送帧至多经过时间2t(端到端传播时延的2倍)就能知道发送的帧有没有碰撞。

由此可得所有数据帧都要有一个最小帧长。任何站点收到小于最小帧长的数据都应直接抛弃(说明发生了冲突导致帧长小于最小帧长)

\[最小帧长 = 总线传播时延*数据传输速率*2 \]

image

CSMA/CD采用二进制指数退避算法来解决碰撞问题。算法精髓如下:
1)确定基本退避时间,一般取两倍的总线端到端传播时延2t(即争用期)。
2)定义参数k,它等于重传次数,但k不超过10,即k=min[重传次数,10].
当重传次数不超过10时,k等于重传次数;当重传次数大于10时,k就不再增大而一直等于10(这个
条件往往容易忽略,请读者注意)。
3)从离散的整数集合[0,1,……,2^(k-1)]中随机取出一个数r,重传所需要退避的时间就是r倍的
基本退避时间,即2rt.
4)当重传达16次仍不能成功时,说明网络太拥挤,认为此帧永远无法正确发出,抛弃此帧
并向高层报告出错(这个条件也容易忽略,请读者注意)。

posted @ 2022-04-14 21:37  Exungsh💫  阅读(367)  评论(0编辑  收藏  举报