【概述】
在随机访问介质访问控制中,不采用集中控制方式解决发送信息的次序问题,所有问题都可以根据自己的意愿随机地发送信息,占用信道全部速率
在总线型局域网中,当有两个或更多用户同时发送信息时,就会产生帧的冲突,从而导致所有冲突用户均发送失败
为解决随机接入产生的碰撞,每个用户按照一定规则反复重传它的帧,直到该帧无碰撞地通过,常见的协议有:ALOHA 协议、CSMA 协议、CSMA/CD 协议、CSMA/CA 协议
这些协议的核心思想都是争用信道,争用成功者获得信道的使用权,独享信道所有资源
由于争用过程中可能出现失败,会使得所有结点进行重发,这就会造成冲突开销,降低信道利用率
【ALOHA 协议】
纯 ALOHA 协议
纯 ALOHA 的基本思想是:当网络中的任何一个站点需要发送数据时,不进行任何检测就发送数据,如果一段时间内没有收到确认,发送的站点就认为传输过程中发生冲突,之后依照概率 $p$,等待一随机时间后再次发送,直到发送成功
此外,在接收方收到数据后,会进行检错,若发现数据帧有错,则不予确认
综上,纯 ALOHA 协议的特点可概括为:不监听信道,随机发送
时隙 ALOHA 协议
采用纯 ALOHA 协议的网络的吞吐量很低,为克服这个缺点,在纯 ALOHA 协议的基础上有了时隙 ALOHA 协议
对于站点发送数据的随意性,时隙 ALOHA 协议将网络上各个站点的时间进行同步,将时间划分为一段段等长的时隙,规定只能在每个时隙开始时才可发送帧
可以发现时隙 ALOHA 协议避免了发送数据的随意性,减少了数据产生冲突的可能性,提高了信道的利用率
综上,时隙 ALOHA 协议的特点可概括为:不监听信道,按时隙发送
【CSMA 协议】
概述
时隙 ALOHA 协议虽然比纯 ALOHA 协议效率有了提高,但每个站点都是不监听信道就发送数据,因此出现碰撞的概率很大
载波侦听多路访问(Carrier Sense Multiple Access,CSMA)协议对上述情况作出了改进,设置了一个载波侦听装置,其在每个站点都在发送前侦听信道,若信道空闲则发送,若信道忙碌则等待,这大大减小了冲突的概率,提高了信道利用率
所谓载波侦听(Carrier Sense,CS),是指每个站发送数据前检测总线上是否有其他站在发送数据,在多个站发送数据时,总线信号电压会因信号叠加而增大,当某站检测到电压摆动值超过一定幅度后,就认为至少两个站在同时发送数据,产生了冲突
而多路访问(Multiple Access,MA),是指多个计算机以多点接入的方式连接在一根总线上
CSMA 协议有三种不同类型,其特点如下:
归结来说,CSMA 的特点可以概括为:先听再发,空闲就发,忙则等待
1-坚持 CSMA
1-坚持 CSMA(1-persistent CSMA)的基本思想是:当一个结点要发送数据时,先侦听信道,若信道空闲,就立即发送数据;若信道忙,则等待,并继续侦听直到信道空闲,若发生冲突,则随机等待一段时间后,再重新开始侦听信道
1-坚持的含义是:当侦听到信道忙后,继续侦听信道,当侦听到信道空闲后,立即发送数据,即发送帧的概率为 $1$
传播时延对 1-坚持 CSMA 影响很大,举例来说,在某结点 $A$ 开始发送数据时,结点 $B$ 也要发送数据,但由于传播时延的问题,结点 $A$ 发出的信号距离结点 $B$ 有一定距离,此时结点 $B$ 侦听到信道空闲,于是立即发送数据,这必然导致信道冲突
此外,若不考虑传播时延,1-坚持 CSMA 也有较大可能产生冲突,举例来说,结点 $A$ 正在发送数据,此时结点 $B$、$C$ 正准备发送数据,他们均侦听到信道忙,于是继续侦听,当结点 $A$ 一发送完毕,$B$、$C$ 立即发送,这同样导致了信道冲突
非坚持 CSMA
非坚持 CSMA(Non-presistent CSMA)的基本思想是:当一个结点要发送数据时,先侦听信道,若信道空闲,就立即发送数据;若信道忙,就放弃侦听,等待一随机时间后再开始侦听
非坚持 CSMA 在侦听到信道忙后就放弃侦听,这减少了多个结点同时等待信道空闲后发送数据导致冲突的概率,但这却使得数据在网络中的平均时延增加了,即信道利用率的提高是以数据在网络中的时延为代价的
p-坚持 CSMA
p-坚持 CSMA(p-persistent CSMA)用于时分信道,其基本思想是:当一个结点要发送数据时,先侦听信道,若当前时隙内信道空闲,便以 $p$ 的概率发送数据,以 $1-p$ 的概率推迟到下一时隙;若信道忙,则等待下一时隙再侦听;之后重复上述过程,直到数据发送成功或因其他结点发送数据而检测到信道忙为止,若是后者,则会等待一个随机时间后再重新开始侦听
p-坚持的含义是:在检测到信道空闲后,以概率 $p$ 发送数据,以概率 $1-p$ 推迟到下一时隙
可以发现,p-坚持 CSMA 是 1-坚持 CSMA 与 非坚持 CSMA 的折中方案,其降低了 1-坚持 CSMA 中多个结点检测到信道空闲后同时发送数据的冲突概率,还克服了 非坚持 CSMA 中由于随机等待造成延迟较长的缺点,但其在发生冲突后仍要坚持发完数据,这无疑造成了资源浪费
【CSMA/CD 协议】
概述
载波侦听多路访问/碰撞检测(Carrier Sense Multiple Access with Collision Detection,CSMA/CD)协议,是 CSMA 的改进方案,常用于总线型局域网
CSMA/CD 是在 CSMA 的基础上加了碰撞检测(Collision Detection,CD),是指边发送边侦听,即载波侦听装置边发送边检测信道上信号电压的变化情况,以便判断自己在发送数据时是否有其他站点也在发送数据
CSMA/CD 的基本思想是:当一个结点要发送数据时,先侦听信道,若信道空闲,则发送数据;若信道忙,则等待,直到信道空闲再重新发送
同时,在数据发送过程中,收发双方会一直侦听,若直到发送完毕没有侦听到其他信号,则该数据帧传输完毕;若发送过程中侦听到其他信号,则发生冲突,发送方会立即停止发送,并发送一个48 bit 的拥塞信号,之后,采用二进制指数退避算法,等待一段时间后继续开始侦听
归结来说,CSMA/CD 的特点可以概括为:先听再发,边听边发,冲突停发,随机再发
传播时延与争用期
设单程端到端传播时延为 $\tau$,在 $t=0$ 时站点 $A$ 发送数据,此时由于传播时延的存在,在 $t=\tau-\delta$ 时,站点 $B$ 检测到信道是空闲的,其发送数据
经过 $\frac{\delta}{2}$ 后,即在 $t=\tau-\frac{\delta}{2}$ 时,站点 $A$ 与站点 $B$ 发送的数据发送碰撞,但此时 $A$ 与 $B$ 均不知道
在 $t=\tau$ 时,$B$ 收到来自 $A$ 的数据,此时 $B$ 检测到碰撞,于是停发数据,之后发送一个 48 bit 的拥塞信号;在 $t=2\tau-\delta$ 时,$A$ 检测到 碰撞,也停发数据,并发送一个 48 bit 的拥塞信号
可以发现,在站 $A$ 发送帧后最多经过 $2\tau$ 的时间,即可知道所发送的帧是否经过碰撞,因此,常将以太网端到端的往返时间 $2\tau$ 称为争用期
进一步,可以断定,只要在 $2\tau$ 的时间内未检测到碰撞,则可认为肯定未发生碰撞
最小帧长
为确保发送方在发送数据的同时能够检测可能存在的冲突,需要在发送完帧前就能收到自己发送出去的数据,即帧的传输时延至少要两倍于信号在总线中的传播时延
因此,CSMA/CD 中的所有数据帧都要大于一个最小帧长,任何站点收到帧长小于该最小帧长的帧,就将其当做无效帧
最小帧长被定义为:
若要发送的数据帧小于最小帧长,会在数据字段后加入一个填充字段,以保证发送的数据帧不小于最小帧长
例如,以太网规定争用期为 $51.2 \mu s$,那么,对于 $10Mb/s$ 的以太网,在争用期内可发送 $512\: bit$ 即 $64B$ 的数据
如果前 $64B$ 没有发生冲突,那么就表明已经成功抢占信道,后续的数据不会发生冲突
因此,以太网规定最短帧长为 $64B$,凡是小于 $64B$ 的帧都是由于冲突而异常终止的无效帧
二进制指数退避算法
在 CSMA/CD 中,除了上述的检测冲突外,CSMA/CD 还能从冲突中恢复,一旦发生冲突,参与冲突的两个站点立刻再次发送是无意义的,只会导致无休止的冲突
因此,CSMA/CD 中采用二进制指数退避算法来解决碰撞问题,算法流程如下:
- 确定基本退避时间,一般取争用期 $2\tau$
- 设置参数 $k$,其值为重传次数,但不超过 $10$,即 $k=min[重传次数,10]$
- 在整数集合 $\{0,1,…,2^k-1\}$ 中随机取一个数 $r$,重传所需要退避时间为 $2r\tau$
- 当重传达到 $16$ 次仍不成功,说明网络拥挤,认为该帧永远无法正确发出,抛弃该帧并向高层报告出错
使用二进制指数退避算法,可以使重传需要推迟的平均时间随着重传次数的增大而增大,从而减小发生碰撞的概率,从而稳定整个系统
【CSMA/CA 协议】
概述
CSMA/CD 在有线局域网中得到有效应用,但在无线局域网中无法直接使用该协议,主要是由于以下两个原因:
- 接收信号强度小于发送信号强度,且在无线介质上信号强度动态变化范围很广,若要进行碰撞检测,硬件开销过大
- 在无线通信中,存在隐蔽站点问题,即并非所有站点都能听到对方($A$、$C$ 互相检测不到,信道空闲同时向 $B$ 发送数据,导致冲突)
为此,在 IEEE 802.11 标准中,定义了载波侦听多路访问/碰撞避免(Carrier Sense Multiple Access with Collision Avoidance,CSMA/CA)协议,其用于无线局域网
碰撞避免(Collision Avoidance,CA),是指尽量降低碰撞发生的概率
CSMA/CA 的基本思想是:当一个结点要发送数据时,先侦听信道,若信道空闲,则发送数据;若信道忙,则等待,直到信道空闲再重新发送
同时,在发送数据时,若要发送的是第一个数据帧,则直接进行发送;若不是第一个数据帧,要采用二进制指数退避算法来计算随机退避时间,确定下一个帧要发送的时间
归结来说,CSMA/CA 的特点可以概括为:先听再发,忙则等待,预约信道,随机再发
碰撞避免
CSMA/CA 采用预约信道、ACK 帧、RTS/CTS 帧三种机制来实现碰撞避免,其中,前两者是 CSMA/CA 必选的机制,后者是可选的机制
预约信道,是指发送方在发送数据时,向其他站点通知自己传输数据所需的时间,以便令其他站点在这段时间内不发送数据,从而避免碰撞
ACK 帧,是指在站点正确接收到发送给自己的数据帧后,都要向发送方发回一个 ACK 帧,若接收失败,则不采取任何行动;同时,发送方在发送完数据帧后,若在规定时间内没有收到 ACK 帧,则认为发送失败,进行该数据帧的重发,直到收到 ACK 帧或达到规定最大重发次数为止
RTS/CTS 帧,主要用于解决无线局域网中的隐蔽站点问题,其中,RTS 帧为请求发送帧,其包含发送地址、接收地址、下一数据发送时间等,用于通知接收站要发送信息;CTS 帧为响应发送帧,用于对 RTS 帧做出回应,通知发送站可以发送信息
当采用 RTS/CTS 帧机制时,CSMA/CA 的工作流程如下:
- 检测信道是否空闲,若信道空闲,发送 RTS 帧;若信道忙,则等待
- 接收方收到 RTS 帧后,响应 CTS 帧给发送方,此时两站点建立一定关系,其他站再向接收方发送 RTS 帧会被拒绝
- 发送方收到响应的 CTS 帧后,开始发送数据帧,同时预约信道,告知其他站点自己要使用信道的时间
- 接收方收到数据帧后,通过差错控制机制来检测数据帧,若正确,则响应 ACK 帧,否则直接丢弃
- 发送方收到响应的 ACK 帧后,进行下一数据帧发送;若未收到,则采用指数二进制退避算法确定随机退避时间,根据时间进行重传