介质访问协议

Aloha

  • Pure Aloha:如果某个主体想发送一个帧,直接发送;如果产生冲突,冲突帧无效,之后重传;

  • Slotted Aloha:将发送时间分槽,按时间槽发送帧,降低冲突;

随机介质访问方式

  • MA((Multiple Access):多路访问
  • CSMA(Carrier Sense Multiple Access):载波监听多路访问
  • CSMA/CD(…Collision Detection):……冲突检测

载波监听多路访问(CSMA)

CSMA协议是在ALOHA协议基础上,多了一个载波监听装置的改进协议。

为了降低冲突,每个站点在发送前先侦听共用信道,发现信道空闲后再发送。根据侦听方式和侦听到信道忙后的处理方式不同,CSMA分为三种

1-坚持CSMA

一个结点要发送数据时,首先侦听信道;如果信道空闲,那么立即发送数据;如果信道忙,那么等待,同时继续侦听直至信道空闲;如果发生冲突,随机等待一段时间后,再重新开始侦听信道。

产生冲突情况:

  1. 传播延迟:结点 A 开始发送数据时,结点 B 也正好有数据要发送,但这时结点 A 发出数据的信号还未到达结点 B,结点 B 侦听到信道空闲,于是立即发送数据,结果必然导致冲突。
  2. 结点 A 正在发送数据时,结点 B 和 C 也准备发送数据,侦听到信道忙,于是坚持侦听,结果当结点 A 一发送完毕,结点 B 和 C 就会立即发送数据,同样导致冲突。

非坚持CSMA

一个结点要发送数据时,首先侦听信道;;如果信道空闲,那么立即发送数据;;如果信道忙,那么放弃侦听,等待一个随机的时间后再重复上述过程。

非坚持 CSMA 协议在侦听到信道忙后就放弃侦听,因此降低了多个结点等待信道空闲后同时发送数据导致冲突的概率,但也会增加数据在网络中的平均延迟。信道利用率的提高是以增加数据在网络中的延迟时间为代价的。

p-坚持CSMA

一个结点要发送数据时,首先侦听信道;如果信道忙,就持续侦听",直至信道空闲; 如果信道空闲,那么以概率发送数据,以概率推迟到下一个时隙;如果在下一个时隙信道仍然空闲,那么仍以概率发送数据,以概率推迟到下一个时隙;这个过程一直持续到数据发送成功或因其他结点发送数据而检测到信道忙为止,若是后者,则等待下一个时隙再重新开始侦听。

降低 1-坚持 CSMA 协议中多个结点检测到信道空闲后同时发送数据的冲突概率; 采用坚持“侦听”的目的是,试图克服非坚持 CSMA 协议中由于随机等待而造成的延迟时间较长的缺点。因此,p-坚持 CSMA 协议是非坚持 CSMA 协议和 1-坚持 CSMA 协议的折中方案。

信道状态 1-坚持 非坚持 p-坚持
空闲 立即发送数据 立即发送数据 以概率发送数据,以概率推迟到下一个时隙
继续坚持侦听 放弃侦听,等待随机时间后再侦听 继续坚持侦听

带碰撞检测的CSMA/CD

先听后发,边听边发,冲突停发,随机重发

  1. 适配器从网络层获得一个分组,封装成以太网帧,放入适配器的缓存,准备发送;
  2. 如果适配器侦听到信道空闲,那么它开始发送该帧。如果适配器侦听到信道忙,那么它持续侦听直至信道上没有信号能量,然后开始发送该帧。
  3. 在发送过程中,适配器持续检测信道。若一直未检测到碰撞,则顺利地把这个帧发送完毕。若检测到碰撞,则中止数据的发送,并发送一个拥塞信号,以让所有用户都知道。
  4. 在中止发送后,适配器就执行指数退避算法,等待一段随机时间后返回到步骤(2)。

采用CSMA/CD协议的以太网只能进行半双工通信

站点A在最多经过时间(争用期,碰撞窗口)就能直到是否发生碰撞,只有经过争用期这段时间还未检测到碰撞时,才能确定这次发送不会发生碰撞。

发生冲突后,参与冲突的两个站点再次发送会导致持续的冲突。CSMA/CD采用二进制指数退避算法解决碰撞问题

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

这种算法使重传需要推迟的平均时间随重传次数的增大而增大 (动态退避),因而能降低发生碰撞的概率。

CSMA/CA协议

CSMA/CD协议用于使用有线连接的局域网,在无线局域网环境下,接收信号的强度远小于发送信号的强度,并且无线介质中信号强度的动态变化范围很大,如果进行碰撞检测,硬件花费较大。因此,CSMA/CA将“碰撞检测”改为“碰撞避免(Collision Avoidance)”,指协议尽量降低碰撞发生的概率。

CSMA/CA算法:

  1. 若站点最初有数据要发送(不是发送不成功再进行重传),且检测到信道空闲,在等待时间DIFS后,发送整个数据帧;
  2. 否则,站点执行CSMA/CA退避算法,选取一个随机回退值。一旦检测到信道忙,退避计时器就保持不变;检测到信道空闲,退避计时器进行倒计时;
  3. 当退避计时器减到0时(这时信道只可能是空闲的),站点就发送整个帧并等待确认;
  4. 发送站若收到确认,就知道已发送的帧被目的站正确接收。这时如果要发送第二帧,就要从步骤(2)开始;
  5. 若发送站在规定时间内没有收到确认帧ACK(由重传计时器控制),就必须重传该帧,再次使用 CSMA/CA 协议争用该信道,直到收到确认,或经过若干次重传失败后放弃发送;
  • CSMA/CD协议的基本思想是发送前侦听,边发送边侦听,一旦出现碰撞马上停止发送

  • CSMA/CA协议的基本思想是在发送数据时先广播告知其他结点,让其他结点在某段时间内不要发送数据,以免出现碰撞

参考资料

  1. James F.Kurose,Keith W.Ross.计算机网络:自顶向下方法[M].北京:机械工业出版社,2018.5.
  2. 计算机网络:随机访问介质访问控制之 CSMA/CA 协议