介质访问控制

需熟练掌握信道划分以及随机访问信道控制的各种方式,在选择题中会考察。除此外,需理解CSMA/CD的细节,在往年真题的大题中也考察过。

共享介质

共享介质
A
B
C
D
E

在介绍 MAC 概念之前,必须要说明一下共享介质的概念。

在一个网络环境中,多个设备可能需要同时访问同一个物理介质来发送数据,这个介质可以是电缆、光纤或者无线信道。

当设备发送数据时,数据包会在整个介质上传播,所有连接到该介质的设备都可以接收到数据包。如果多个设备同时发送数据,介质上的数据信号就会相互冲突进而导致错误。

所以 MAC 协议确保了 共享介质上的 有效、公正且有序的数据传输。

MAC方式总结

介质访问控制(MAC,Media Access Control)可以分为 信道划分 以及 随机访问 两种大方向。

信道划分 介质访问控制:也叫做多路复用,在一条传输介质上同时传输多个不同种类的信号(种类可以根据不同的参数进行划分),这样不同的设备可以发送特定类型的信号,并且不同信号之间相互不干扰,信道划分 访问控制可以分为以下几种:

  • FDM:频分多路复用
  • TDM:时分多路复用
  • WDM:波分多路复用
  • CDM:码分多路复用

随机访问 介质访问控制是指多台设备共享同一个通信介质时,它们可以随机地尝试发送数据,而不需要事先协调,当发生冲突后再做后续的协调,以保证不会接收到错误的数据。

  • ALOHA
  • CSMA
  • CSMA/CD
  • CSMA/CA

多路复用

  1. 频分多路复用(Frequency Division Multiplexing,FDM):
    • FDM是一种通过将频谱划分成不同的频率带宽块,使多个信号能够同时传输的方法。每个信号占用不同的频带宽度,以避免干扰。
    • 电视和广播广播中的不同频道,以及有线通信中的多频道宽带互联网,都使用了FDM。
  2. 时分多路复用(Time Division Multiplexing,TDM):
    • TDM是一种通过在时间轴上分割信号的方式,使多个信号能够依次传输的技术。每个信号在不同的时间段内传输,时间段通常非常短,以实现快速切换。
    • 电话网络中的T1和E1传输系统以及数字电视信号的传输都采用了TDM。
  3. 波分多路复用(Wavelength Division Multiplexing,WDM):
    • WDM是一种在光纤通信中使用的多路复用技术,它通过在光波的波长维度上分隔信号来允许多个信号共享同一光纤。
    • 长距离光纤通信网络中使用WDM来实现高容量数据传输。
  4. 码分多路复用(Code Division Multiplexing,CDM):
    • CDM是一种通过在传输中使用不同的编码序列来区分不同的信号的方式。每个信号都与一个唯一的编码序列相关联,以使接收器能够区分它们。
    • 无线通信中的CDMA(Code Division Multiple Access)是一种使用CDM的技术。
MUX
channel 1 (f1)
DEMUX
channel 2 (f2)
channel 3 (f3)
MUX
1
DEMUX
2
3
4
1
2
3
4
1
2
3
4
frequency
MUX
DEMUX
FDM
TDM
WDM

CDMA原理

在CDMA中,每一个比特时间划分为 m 个短的间隔,称为码片(chip),每个站被指派一个惟一的 m bit 码片序列(chip sequence) 。

每个站被指派一个惟一的 m bit 码片序列(chip sequence) 。

  • 如发送比特 1,则发送自己的 m bit 码片序列。
  • 如发送比特 0,则发送该码片序列的二进制反码。

令向量 $S$ 表示站 S 的码片向量,令 $T$ 表示其他任何站的码片向量。两个不同站的码片序列正交,就是向量 $S$ 和 $T$ 的规格化内积(inner product)都是0:

$$S \cdot T = \frac{1}{m} \sum_{i=1}^{m}{S_i T_i} = 0$$

任何一个码片向量和该码片向量自己的规格化内积都是1:

$$S \cdot S = \frac{1}{m} \sum_{i=1}^{m}{S_i^2} = 0$$

ALOHA协议

1. 纯ALOHA (Pure ALOHA)

Station1
Station1
Station2
Station2
Station3
Station3
Station4
Station4
Frame 1.1
Frame 1.1
Resend
Resend
Frame 1.2
Frame 1.2
Frame 2.1
Frame 2.1
Resend
Resend
Frame 3.1
Frame 3.1
Resend
Resend
Frame 4.1
Frame 4.1
Frame 2.1
Frame 2.1
Frame 4.1
Frame 4.1
Frame 3.1
Frame 3.1
Collision
duration
Collision...
Collision
duration
Collision...
Resend
Resend
Text is not SVG - cannot display

工作原理:

  • 当一个站点有数据要发送时,它会直接发送数据。
  • 发送完成后,该站点会等待一个预定的时间间隔,以便接收来自接收方的确认。
  • 如果在此时间段内未接收到确认,站点会假定数据已冲突并被损坏,因此它会在随机的后续时间重新发送数据。

2. 时隙ALOHA (Slotted ALOHA)

Station1
Station1
Station2
Station2
Station3
Station3
Station4
Station4
Frame 1.1
Frame 1.1
Frame 1.2
Frame 1.2
Frame 2.1
Frame 2.1
Resend
Resend
Frame 3.1
Frame 3.1
Resend
Resend
Frame 4.1
Frame 4.1
Frame 2.1
Frame 2.1
Frame 4.1
Frame 4.1
Frame 3.1
Frame 3.1
Slot 1
Slot 1
Resend
Resend
Slot 2
Slot 2
Slot 3
Slot 3
Slot 4
Slot 4
Slot 5
Slot 5
Slot 6
Slot 6
Text is not SVG - cannot display

工作原理:

  • 与纯ALOHA不同,时隙ALOHA将时间分为固定的时隙或间隔。
  • 站点只在时隙的开始时发送数据,这减少了两个数据包可能在同一时间内发送的机会,因为它们必须在时隙边界上对齐。
  • 如果数据冲突(多个站点在同一时隙发送数据),发送站点会在随机的后续时隙重试。

CSMA协议

CSMA(Carrier Sense Multiple Access)的中文叫做 载波监听多路访问,理解 CSMA 的关键在于理解它的名称中的两个部分:载波监听 以及 多路访问:

  • 载波监听(Carrier Sense):因为 CSMA 是随机访问介质控制的一种方式,所以在发送数据前,必须确定当前通信介质中没有其他设备正在发送数据。所以载波监听可以被理解为以太网口内部芯片自带的一种功能,具体而言就是一种可以监听 信道在当前位置是否有数据传输的 的一种功能。
  • 多路访问(Multiple Access):多个设备可以访问同一个通信介质。这意味着在任何给定时间,任何设备都可以尝试发送数据。

所以 CSMA 可以理解为 通过 载波监听 避免冲突,进而实现共享介质上的 多路访问。

以下图为例,A、B、C、D 分为是连接到同一共享介质上的不同设备,当 A 开始发送数据时,B、C、D 分别会在不同的时刻监测到信号,具体的时刻为 设备与A之间的距离 / 信号传播速度

A
B
C
D
Time
Time
Transmission Time
B senses here
C senses here
D senses here
Vulerable Time =
Propogation Time

CSMA 的问题在于它无法处理碰撞,当一个设备监听到当前介质中无信号时,它就可以发送数据,但监听得到的结果可能是 “假结果”。因为有可能其他设备已经发送信号了,只是信号由于传播时延还没有到达当前设备。

所以假设当前设备监听得到了 “假结果”,那么此时发送数据后介质上就会发生冲突。

CSMA如何处理冲突

CSMA 不具备碰撞处理的功能,冲突处理是 CSMA/CD 的功能。 这意味着在 CSMA 中,设备不会主动检测到碰撞。

但是 CSMA 也具备一定冲突处理的功能,这依赖于超时和重传机制。

在 CSMA 中,发送设备在传输数据后会等待确认响应(如 ACK,Acknowledgment 确认帧)。如果发生碰撞,接收设备无法正确接收数据,因此不会发送确认帧。 发送设备在等待一段时间后没有收到确认响应,推断可能发生了数据丢失(可能由于碰撞)。

这个知识了解即可,目的是帮助大家理清 CSMA 和 CSMA/CD 的区别。下文通过一个实例说明 CSMA 的冲突处理功能:

假设有两个设备 A 和 B,它们都使用 CSMA 协议并共享同一个信道:

  1. 初始状态:信道空闲,设备 A 和 B 都准备发送数据。
  2. 监听信道:A 和 B 都监听信道,发现信道空闲。
  3. 发送数据:A 和 B 几乎同时开始发送数据,由于没有碰撞检测机制,它们不知道发生了碰撞。
  4. 碰撞发生:A 和 B 的数据在信道上发生冲突,接收设备无法解码出有效数据,因此不会发送确认帧。
  5. 等待确认:A 和 B 等待一段时间,发现没有收到确认帧,推断可能发生了碰撞。
  6. 重传尝试:A 和 B 各自等待一个随机时间(不同的随机时间),然后重新尝试发送数据。

CSMA 也 根据其在信道空闲时的行为分为三种类型,如下所示,了解即可。

特征1-persistent CSMANon-persistent CSMAp-persistent CSMA
信道空闲时的行为立即开始传输数据立即开始传输数据根据概率p决定是否传输数据
信道忙时的行为立即开始传输数据等待一个随机时间后重新监听根据概率p决定是否重新监听
碰撞的可能性高(当多个设备同时监听信道)低(等待随机时间片段)中等(取决于p的值和竞争情况)
等待时间无等待随机等待时间片段随机等待时间片段
适用性适用于低碰撞概率,高速局域网适用于高碰撞概率,低速局域网适用于中等碰撞概率和速率的局域网

CSMA/CD协议

CSMA/CD (CSMA with Collision Detection,载波监听多路访问/碰撞检测) 是 CSMA 的一种拓展,在了解这个知识之前,请确保你已经明晰了什么是 CSMA 中的 CS(Carrier Sense 即 载波监听),以及什么是 CSMA 中的 MA(Multiple Access 即 多路访问)。

CSMA/CD 比 CSMA 多出一个 CD(Collision Detection 即 碰撞检测)的功能。 在上文中我们提到,CSMA 中监听到信道空闲可能是 “虚假的”,所以在 CSMA 发送数据后介质中也许会发生冲突,但 CSMA 只能依靠非常原始的方案处理冲突。

CSMA/CD 就高级一些,在发送数据期间,我们刚刚提到的 监测器件(Carrier,就是 CSMA 中 C 的简称)会一直监听有没有冲突发生, 如果有冲突的话,就等待一段随机的时间,然后重试以上过程,并且发送一个特殊信号告诉其他设备发生了冲突。

A
B
C
D
Time
Time
t1
t4
Collision occurs here
A detects
collision here
C detects
collision here

上图说明了 碰撞检测的功能,这里需要内化 传播时延和传输时间 这两个概念:

  • 传输时延 = 距离 / 信号传播速度
  • 传输时间 = 数据大小 / 数据传输速率

碰撞发生的时间和检测到碰撞的时间是不一样的,在上图中竖线表示时间轴,通过时间轴我们可以得知某个事件发生的时间。

A
B
Time
Time
A
B
Time
Time
B 在这个时刻接收到最后一个比特
最小传输时长 = 2 ×最大传播时延

最小帧大小 = 带宽 ×最小传输时长
A 在这个时刻传输结束
B 在 A 发送的信号刚到达的前一瞬间
开始发送数据
A 必须还在传输数据,也就是说数据传输还没有结束,
才能在这个时刻检测到冲突
一般的冲突场景
碰撞的边界情况
冲突在这个时刻发生

这里再总结一下 CSMA/CD 的流程

  1. 监听信道(Carrier Sense):设备在尝试发送数据之前首先监听物理信道,检查是否有其他设备正在传输数据。如果信道忙,则设备等待,直到信道变为空闲。
  2. 等待随机时间(Backoff):如果信道忙,设备会随机选择一个退避时间(Backoff time),然后等待该时间段,以便稍后重新尝试发送数据。这个随机等待时间有助于减少碰撞的概率,因为不同设备的退避时间可能不同。
  3. 发送数据:当设备检测到信道为空闲时,它可以开始发送数据帧。设备发送数据时会继续监听信道,以检测是否发生碰撞。
  4. 碰撞检测(Collision Detection):如果两个或多个设备同时发送数据并发生碰撞,它们会检测到碰撞并立即停止发送。这是通过在发送过程中持续监听信道来实现的。如果设备在发送数据时检测到信道上的信号强度增加(即碰撞),它会立即停止发送,以避免数据损坏。
  5. 碰撞处理:一旦设备检测到碰撞,它会发送一个特殊的信号(碰撞信号)通知其他设备发生了碰撞。所有参与碰撞的设备将等待一段随机的时间,然后重新尝试发送数据。
  6. 重传数据:设备在等待随机时间后,会重新尝试发送数据。如果再次发生碰撞,设备将重复上述碰撞处理步骤,直到成功发送数据或达到最大重传次数(通常是16次)为止。
  7. 成功发送或放弃:如果设备成功发送数据(即没有发生碰撞),接收设备将确认数据的接收。如果设备多次尝试发送数据但仍然无法成功,它最终会放弃发送,以避免网络过度拥塞。

CSMA/CA协议

CSMA/CA考点说明
Source
Source
Destination
Destination
Other Nodes
Other Nodes
DIFS
DIFS
SIFS
SIFS
RTS
RTS
CTS
CTS
CTS
CTS
DATA
DATA
ACK
ACK
ACK
ACK
SIFS
SIFS
SIFS
SIFS
Delay
Access
Delay...
Text is not SVG - cannot display

CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)是一种用于无线局域网(如Wi-Fi)中的协议,用于协调多台无线设备共享通信媒体的访问。与CSMA/CD不同,CSMA/CA采用碰撞避免而非碰撞检测的方式来管理共享媒体。以下是CSMA/CA的主要过程:

  1. 侦听信道(Carrier Sense):当一个设备想要传输数据时,它首先侦听信道,检查信道是否忙碌。如果信道被其他设备使用,当前设备会等待一段随机的时间再次检测信道是否空闲。这是为了避免同时尝试发送数据而导致碰撞。
  2. 发送请求(Request to Send,RTS):如果信道在一段时间内保持空闲,设备可以选择发送一个RTS帧,该帧包含了将要传输的数据的信息。这个RTS帧通知其他设备,该设备打算发送数据,以防止其他设备在此期间发送数据。
  3. 清除发送请求(Clear to Send,CTS):如果其他设备接收到RTS帧并且信道仍然空闲,它会发送CTS帧作为响应。CTS帧确认了该设备的数据传输请求,并告诉发送设备可以开始传输数据。
  4. 数据传输:一旦设备收到CTS帧,它可以开始传输实际的数据帧。其他设备会侦听传输,以确保不会干扰正在传输的设备。
  5. ACK帧(Acknowledgment):接收设备在成功接收到数据后发送一个ACK帧,以通知发送设备数据已被成功接收。如果发送设备没有收到ACK帧,它会假定数据包已丢失,然后根据需要重新传输数据。

视频讲解