二、随机访问介质访问控制
信道上的所有用户可随机发送信息
1. 简单ALOHA协议
解决信息发送时的冲突问题。其特点是不监听信道,不按时间槽发送,随机重发。
思想:在超时后,等随机一段时间后再重传
2. 时隙ALOHA协议
时隙ALOHA协议的思想:把时间分成若干个相同的时间片,所有用户在时间片开始时刻同步接入网络信道,若发生冲突,则必须等到下一个时间片开始时刻再发送(超时重传)。
3. CSMA协议(无确认机制)
全称叫载波监听多路访问协议。
CS:载波监听,监听总线上的电压摆动值,电压摆动值超过阈值,就认定有信号出现了碰撞
MA:多点接入,意思就是许多计算机以多点接入的方式连接着一根总线上。
- 坚持CSMA:先监听信道,如果信道是空闲的,就直接传输,否则就一直监听。
- 非坚持CSMA:先监听信道,如果信道是空闲的,就直接传输,否则就等待一个随机时间后再去监听。
- p-坚持CSMA:监听信道空闲,空闲时,以p概率直接传输,不必等待;概率1-p等待到下一个时间槽再传输,信道忙则持续监听,直到空闲,再以p概率发送。若发生冲突,则等待下一个时间槽,再重复以上操作。
4. CSMA/CD协议(无确认机制)
应用于总线型网络、半双工网络,不能允许双方同时使用网络。其中CD的意思是碰撞检测。在发送数据时也要去监听信道,判断是否发送了碰撞。
无法在无线网络中进行碰撞检测,因此不适用于无线网络。
-
CSMA/CD协议帧发送流程图
-
CSMA/CD协议帧接收流程图
碰撞示意图,
- 双方主机最多经过2ʈ的时长就可以检测到是否发送了碰撞
- 见过2ʈ的时长后没有检测到碰撞,那么此次发送就不会发送碰撞
- 每一个主机在自己发送顿之后的一小段时间内,存在着遭遇碰撞的可能性。这一小段时间是不确定的。它取决于另一个发送帧的主机到本主机的距离,但不会超过总线的端到端往返传播时延(2ʈ),即一个争用期时间。
最小帧长:以太网规定最小帧长为64字节,最小帧长确保了主机可以在帧发送完成之前就检测到是否发生了碰撞(小于64字节的帧都是在路上发生过碰撞的帧)。
最大帧长:以太网规定帧最大长度为1518字节
5.CSMA/CD的截断二进制指数退避算法
该算法用于计算退避时间:
退避时间
=
2
ʈ
∗
{
0
,
1
,
.
.
.
,
2
k
−
1
}
,
其中
k
=
M
i
n
[
重传次数,
10
]
退避时间 = 2ʈ * \{0,1,...,2^k-1\},其中k=Min[重传次数,10]
退避时间=2ʈ∗{0,1,...,2k−1},其中k=Min[重传次数,10]
- 若连续多次发生碰撞,就表明可能有较多的主机参与竞争信道。但使用上述退避算法可使重传需要推迟的平均
时间随重传次数而增大(这也称为动态退避),因而减小发生碰撞的概率,有利于整个系统的稳定。 - 当重传达16次仍不能成功时,表明同时打算发送帧的主机太多,以至于连续发生碰撞,则丢弃该帧,并向高层报告。
6.CSMA/CA协议(有确认机制)
CSMA/CA:载波监听多址接入/碰撞避免。适用于无线网络。
所有站点必须在持续检测到信道空闲一段时间后才能发送帧,这段时间称为 帧间间隔IFS。IFS的长短取决于帧的优先级。常用的IFS如下:
- 短帧间间隔SIFS:长度为28微秒,常用于ACK帧,CTS帧(clear to send),过长MAC帧分片后的数据帧
- SCF帧间间隔DIFS:128微秒,在DCF方式中用于发送数据帧和管理帧。
工作原理
CSMA/CA协议中必须使用退避算法的情况
- 发送数据帧之前检测到信道处于忙状态
- 在每一次重传一个数据帧时
- 在每一次成功发送后要连续发送下一个帧时
不使用退避算法的情况:信道空闲,并且所发送的数据帧不是成功发送完上一个立即连续发送的数据帧(不满足上面的第三种情况时)
7. CSMA/CA的退避算法
在发送帧前,需要 先结果DIFS时间后,再退避一段时间,才能将数据发送出去
8.CSMA/CA的信道预约和虚拟载波监听
信道预约:尽可能减少碰撞的概率和降低碰撞的影响。信道预约流程如下,
- 原站在发送数据帧之前先发送一个短的控制帧,称为请求发送RTS(Request To Send), 它包括源地址
目的地址以及这次通信(包括相应的确认帧)所需的持续时间。 - 若目的站正确收到源站发来的RTS帧,且媒体空闲,就发送一个响应控制帧,称为允许发送CTS(Clear To Send),它也包括这次通信所需的特续时间(从RTS帧中将此持续时间复制到CTS帧中)。
- 源站收到CTS帧后,再等待一段时间SFS后,就可发送其数据帧。
- 其他各站在接收到CTS帧或数据帧后就推迟接入无线局域网。
虚拟载波监听:除RTS帧和CTS帧会携带通信需要持续的时间,数据帧也能携带通信需要持续的时间,这称为802.11的虚拟载波监听机制。
站点只要监听到RTS顿、CTS帧或数据帧中的任何一个,就能知道信道被占用的特续时间,而不需要真正监听到信道上的信号,因此虚拟载波监听机制能减少隐蔽站带来的碰撞问题。