介质访问是为了解决什么问题?
为了避免多个发送方同时发送数据造成的冲突。
通过介质访问控制,可以实现在广播信道上进行点对点通信。(例如,以太网的拓扑结构是总线,当一台计算机发送数据时,其他所有计算机都能接收到数据。)

介质访问控制 - 图1MAC 子层
数据链路层中有一个 MAC 子层,专门负责介质访问控制的。

冲突检测**
多个站点同时发送时,信号相互叠加,电压的变化幅度会增大,适配器可以检测到这种情形。

信道划分-介质访问控制

image.png

1. 频分复用

一个简单的例子:不同的用户,分别使用不同的频段与基站进行通信

2. 时分复用

一个例子:将 1 秒划分为 10 个时隙,不同用户使用不同的时隙。

统计时分复用器可以接受不同用户发来的比特流“帧”,暂时存放在缓存中,再将这些比特流的“帧”安排到合适的时隙发出
image.png

3. 码分复用

码分复用的数学原理
为不同的发送方分配不同的码片向量 介质访问控制 - 图4,这些向量都是正交的,且每个维度的分量都是 1 或 -1
将不同发送方发送的向量线性相加,发送给接收方。
如果接收方正在和 A 通信,那么他只需要用 A 的码片向量与收到的向量做内积,就可以知道 A 发送的是 介质访问控制 - 图5介质访问控制 - 图6 还是 介质访问控制 - 图7 了。

操作过程
码片向量可以用二进制串来表示,例如 0101 ,表示向量 介质访问控制 - 图8
如果发送方想要发送 0 ,就发送码片向量;如果想要发送 1 ,就发送码片向量按位取反

随机访问-介质访问控制

1. ALOHA协议

2. CSMA协议

1-坚持CSMA
如果信道空闲,立即发送数据
如果信道忙碌,继续侦听

非坚持CSMA
如果信道空闲,立即发送数据
如果信道忙碌,等待一段随机的时间,再继续侦听

p-坚持CSMA
如果新高空闲,则以 p 的概率发送数据
如果信道忙碌,则继续侦听

3. CSMA/CD协议

该协议可以一边发送数据一边检测冲突,还可以从冲突中恢复

使用 CSMA/CD 协议的网络,只能在半双工模式下工作

适配器每发送一个帧,就要执行一次 CSMA/CD 算法

检测冲突的原理
先看一次发送的情形。设单程端到端传播时延为 介质访问控制 - 图9
在 A 发送数据后的 介质访问控制 - 图10 时间内,如果 B 发送数据,就会发生碰撞。

image.png

A 最多在发送后的 介质访问控制 - 图12 时间内即可检测到冲突,因此 介质访问控制 - 图13 叫做争用期。如果在争用期(介质访问控制 - 图14)内未检测到冲突,意味者信道已经被成功抢占了。
因此规定:介质访问控制 - 图15
由于发送的帧长度大于最小帧长度的,即发送的时间要大于 介质访问控制 - 图16,因此发送方可以在发送的时候检测是否发生冲突。

  • 如果发生冲突,立刻终止发送,此时已发送的帧长度是小于最小帧长度的,接收方会丢弃这种帧
  • 如果未发生冲突,则代表信道已经被自己抢占了,可以继续发送

从冲突中恢复
检测到冲突后,发送方会间隔一定的时间进行重发,重发的方法是二进制指数退避算法
二进制指数退避算法如下:

  • 首先确定一个基本退避时间,一般是 介质访问控制 - 图17。重发的时间间隔是该时间的整数倍。
  • 如果当前是第 介质访问控制 - 图18 次重发,就从集合 介质访问控制 - 图19 中随机选择一个数,等待这么多倍的基本退避时间后进行重发

注:

  • 介质访问控制 - 图20
  • 如果重发次数超过了 16,就向高层报告错误