【计算机网络-数据链路层】介质访问控制协议(MAC协议)
介质访问控制(MAC):采取一定的措施,使得两对节点之间的通信不会发生相互干扰的情况。
1 静态划分信道——信道划分 MAC 协议
- 信道划分 MAC:将使用介质的每个设备与来自同一信道上的其他设备的通信隔离开,将时域和频域资源合理地分配给网络上的设备。
- 特点:按集中控制的方式解决发送信息的次序问题,用户不能随意按照自己意愿发送信息。
- 网络负载情况:
- 网络负载重:共享信道效率高,不会发生碰撞,且公平。
- 网络负载轻:共享信道效率低。
- 多路复用技术:将多个信号组合在一条物理信道上进行传输,使得计算机或者终端设备共享信道资源,提高信道的利用率。
1.1 频分多路复用(FDM)——“并行”
- 频分多路复用:用户在分配到一定的频带后,在通信的过程中自始至终都占据着这个频带。频分复用的所有用户在同样的时间内占用不同的带宽(频率带宽)资源。
- 优点:充分利用传输介质带宽,系统效率较高;由于技术比较成熟,实现也比较容易。
1.2 时分多路复用(TDM)——“并发”
- 时分多路复用:将时间划分为一段段等长的时分复用帧(TDM 帧)。每一个时分复用的用户在每一个 TDM 帧中占据固定序号的时隙,所有用户轮流占据信道。
- TDM 帧:在物理层传输比特流所划分的帧,标志着一个周期。
1.2.1 同步时分多路复用
- 同步时分多路复用:这种技术按照信号的路数划分时间片,每一路信号具有相同大小的时间片。时间片轮流分配给每路信号,该路信号在时间片使用完毕以后要停止通信,并把物理信道让给下一路信号使用。当其他各路信号把分配到的时间片都使用完以后,该路信号再次取得时间片进行数据传输。
1.2.2 异步时分多路复用
异步时分多路复用(STDM,又称为统计时分多路复用):每一个 STDM 帧中的时隙数小于集中器上的用户数。各个用户有了数据的时候就随时发送到集中器的输入缓存中,然后集中器按照顺序依次扫描输入缓存,将缓存中的输入数据放入 STDM 帧中,一个 STDM 帧满了以后就发出。
STDM 帧不是固定分配时隙,而是按需动态分配时隙。
1.3 波分多路复用(WDM)
波分多路复用:即光的频分多路复用,在一根光纤中传输不同波长(频率)的光信号,由于波长(频率)不同,所以各路光信号互不干扰,最后再用波长分解复用器将各路波长分解出来。
1.4 码分多路复用(CDM)
码分多路复用:采用不同编码区分各路原始信号的一种复用方式。
1.4.1 码分多址(CDMA)
- 码片(chip):每个比特时间再划分 m 个短的间隔(通常 m 为 64 或 128)
- 使用 CDMA 的每一个站被指派一个唯一的 m bit 码片序列(码片向量)
假设 A 站的码片向量为 S,B 站的码片向量为 T,则有:
- S 表示 A 站发送比特 1
- -S 表示 A 站发送比特 0
- 0 表示 A 站不发送
- T 表示 B 站发送比特 1
- -T 表示 B 站发送比特 0
- 0 表示 B 站不发送
【注】为了方便,将 0 写成 -1,1 写成 +1 的形式。
且 S 和 T 的规格化内积必须满足:
S · T = 0
S · (-T) = 0
(-S) · T = 0
S · S = 1
S · (-S) = -1
T · T = 1
T · (-T) = -1
【规格化内积】两个向量的内积再除以向量的分量个数 m,即 X · Y = 1/m * ∑XiYi。特别地,X · X = 1/m * ∑Xi2。
规格化内积满足乘法交换律:X · (A + B) = X · A + X · B。
现在 A、B 两站向 C 站发送数据,有以下几种情况:
情况 | A 站 | B 站 | 叠加后在公共信道上 | C 站得到的 A 站数据 | C 站得到的 B 站数据 |
---|---|---|---|---|---|
A 站发送比特 1,B 站发送比特 1 | S | T | S + T | S · (S+T) = 1,代表比特 1 | T · (S+T) = 1,代表比特 1 |
A 站发送比特 1,B 站发送比特 0 | S | -T | S - T | S · (S-T) = 1,代表比特 1 | T · (S-T) = -1,代表比特 0 |
A 站发送比特 0,B 站发送比特 1 | -S | T | T - S | S · (T-S) = -1,代表比特 0 | T · (T-S) = 1,代表比特 1 |
A 站发送比特 0,B 站发送比特 0 | -S | -T | -S - T | S · (-S-T) = -1,代表比特 0 | T · (-S-T) = -1,代表比特 0 |
A 站不发送,B 站发送比特 1 | 0 | T | T | S · T = 0,代表未发送 | T · T = 1,代表比特 1 |
A 站不发送,B 站发送比特 0 | 0 | -T | -T | S · (-T) = 0,代表未发送 | T · (-T) = -1,代表比特 0 |
A 站发送比特 1,B 站不发送 | S | 0 | S | S · S = 1,代表比特 1 | T · S = 0,代表未发送 |
A 站发送比特 0,B 站不发送 | -S | 0 | -S | S · (-S) = -1,代表比特 0 | T · (-S) = 0,代表未发送 |
A 站不发送,B 站不发送 | 0 | 0 | 0 | S · 0 = 0,代表未发送 | T · 0 = 0,代表未发送 |
1.4.2 相关例题
【例 1】共有 4 个站进行码分多址通信。4 个站的码片序列为:
A. (−1 −1 −1 +1 +1 −1 +1 +1)
B. (−1 −1 +1 −1 +1 +1 +1 −1)
C. (−1 +1 −1 +1 +1 +1 −1 −1)
D. (−1 +1 −1 −1 −1 −1 +1 −1)
现收到这样的码片序列 S = (-1 +1 -3 +1 -1 -3 +1 +1)。问哪个站发送数据了?发送数据的站发送的是 0 还是 1?
【解】规格化内积:
- S · A = (-1 +1 -3 +1 -1 -3 +1 +1) * (−1 −1 −1 +1 +1 −1 +1 +1) / 8 = 1,表示 A 站发送了比特 1
- S · B = (-1 +1 -3 +1 -1 -3 +1 +1) * (−1 −1 +1 −1 +1 +1 +1 −1) / 8 = -1,表示 B 站发送了比特 0
- S · C = (-1 +1 -3 +1 -1 -3 +1 +1) * (−1 +1 −1 +1 +1 +1 −1 −1) / 8 = 0,表示 C 站未发送
- S · D = (-1 +1 -3 +1 -1 -3 +1 +1) * (−1 +1 −1 −1 −1 −1 +1 −1) / 8 = 1,表示 D 站发送了比特 1
【例 2】站点 A、B、C 通过 CDMA 共享链路,A、B、C 的码片序列分别是 (1,1,1,1)、(1,-1,1-1) 和 (1,1,-1,-1)。若 C 从链路上收到的序列是 (2,0,2,0,0,-2,0,-2,0,2,0,2),则 C 收到 A 发送的数据是( )
A. 000
B. 101
C. 110
D. 111
【解】把 C 从链路上收到的序列分为三组:S1 = (2,0,2,0),S2 = (0,-2,0,-2),S3 = (0,2,0,2),然后与 A 站的码片向量进行规格化内积:
- S1 · A = (2,0,2,0) * (1,1,1,1) / 4 = 1,表示 A 站发送了比特 1
- S2 · A = (0,-2,0,-2) * (1,1,1,1) / 4 = -1,表示 A 站发送了比特 0
- S3 · A = (0,2,0,2) * (1,1,1,1) / 4 = 1,表示 A 站发送了比特 1
C 收到 A 发送的数据是 101,选 B。
【例 3】一条广播信道上接有 3 个站点 A、B、C,介质访问控制采用信道划分方法,采用码分复用技术,A、B 要向 C 发送数据,设 A 的码片序列为 (+1,-1,-1,+1,+1,+1,+1,-1),站 B 可以选用的码片序列为( )
A. (-1,-1,-1,+1,-1,+1,+1,+1)
B. (-1,+1,-1,-1,-1,+1,+1,+1)
C. (-1,+1,-1,+1,-1,+1,-1,+1)
D. (-1,+1,-1,+1,-1,+1,+1,+1)
【解】规格化内积必须为 0。
- A 项:A · B = (+1,-1,-1,+1,+1,+1,+1,-1) · (-1,-1,-1,+1,-1,+1,+1,+1) = 0.25
- B 项:A · B = (+1,-1,-1,+1,+1,+1,+1,-1) · (-1,+1,-1,-1,-1,+1,+1,+1) = -0.25
- C 项:A · B = (+1,-1,-1,+1,+1,+1,+1,-1) · (-1,+1,-1,+1,-1,+1,-1,+1) = -0.25
- D 项:A · B = (+1,-1,-1,+1,+1,+1,+1,-1) · (-1,+1,-1,+1,-1,+1,+1,+1) = 0
- 所以选 D。
2 动态划分信道——随机访问 MAC 协议
- 特点:不同于静态划分信道,动态划分信道允许所有的用户随机发送信息,发送的时候占据全部带宽。
- 网络负载情况:
- 网络负载重:产生冲突开销。
- 网络负载轻:共享信道效率高,单个结点可以利用信道全部带宽。
若恰巧有两个用户在同一时刻发送信息,则在共享媒体上就要产生碰撞,因此必须有解决碰撞的网络协议。这些协议就是随机访问 MAC 协议,胜利者通过争用获得信道,从而获得信息的发送权,所以又称为争用型协议。
2.1 ALOHA 协议
2.1.1 纯 ALHOA 协议
- 思想(想发就发):不监听信道,不按照时间槽发送,随机重发。
- 检测冲突:如果发生冲突,接收方就会检测出差错,然后不予确认,发送方在一定时间内收不到确认信息就判定发生冲突。
- 解决冲突:超时后等待一段随机时间后重新发送。
2.1.2 时隙 ALHOA 协议
- 思想(控制了想发就发的随意性):将时间分为若干个相同的时间片,所有用户在时间片开始时刻同步接入网络信道,如果发生冲突,则必须等待下一个时间片开始的时刻再发送。
【注】纯 ALOHA 协议和时隙 ALOHA 协议的区别:
- 纯 ALOHA 协议要比时隙 ALOHA 的吞吐量更低,效率更低。
- 纯 ALOHA 协议是想发就发,而时隙 ALOHA 协议只有在时间片段开始的时候才发送。
2.2 CSMA 协议
CSMA 是载波监听多路访问,全称 Carrier Sense Multiple Access (CSMA),与 ALOHA 协议的区别是多了一个载波侦听装置。
- CS:载波监听/侦听,每一个站点在发送数据之前要检测一下总线上是否有其他计算机在发送数据。
- MA:多点接入,表示计算机以多点接入的方式连接在一根总线上。
项目 | 1-坚持 CSMA 协议 | 非坚持 CSMA 协议 | p-坚持 CSMA 协议 |
---|---|---|---|
信道空闲 | 立即发送数据 | 立即发送数据 | 以概率 p 发送数据,以概率 1-p 推迟到下一个时隙 |
信道忙 | 继续坚持侦听 | 放弃侦听,随机等待一段时间后再侦听 | 持续侦听,直到信道空闲 |
信道冲突 | 随机等待一段时间后,重新开始侦听 | ||
优点 | 只要空闲就发送,避免媒体使用率损失 | 可以减少冲突发生的可能性 | 既能减少冲突,又能增加媒体使用率 |
缺点 | 若有两个站点有数据发送,冲突就不可避免 | 可能站点都在等待,使得媒体使用率降低 | 发生冲突后还是坚持要把数据帧发完,造成浪费 |
2.3 CSMA/CD 协议(碰撞检测)
- CS:载波监听/侦听,每一个站点在发送数据之前以及在发送数据的时候要检测一下总线上是否有其他计算机在发送数据。
- MA:多点接入,表示计算机以多点接入的方式连接在一根总线上(总线型网络)。
- CD:碰撞检测(冲突检测),边发送边监听,适配器边发送数据边检测信道上信号电压的变化情况,判断自己在发送数据的时候其他站点是否也在发送数据(半双工网络)。
- 应用:有线连接的局域网(总线型局域网,即以太网)。
【注】以太网和局域网的区别:
- 分类的区别:以太网分类归为总线型局域网,而局域网的拓扑结构包括星形、树形、环形和总线型,局域网是四者的统称。
- 使用协议的区别:以太网通常采用 CSMA/CD 协议,而局域网的使用协议多样,包括 TCP/IP 协议、IPX/SPX 协议、NetBEUI 协议等。
- 以太网是一种局域网,但是因为现在大部分的局域网均为以太网,因此一般提及局域网都会默认为以太网。
2.3.1 传播时延对载波监听的影响
如上图所示,A 站和 D 站均需要发送数据。
【注】在局域网分析中,把总线上的单程端到端传播时延记为
τ
(即将 A 向 B 发送数据的传播时延设为τ
)。
以下为时刻表:
时刻 t | 发生的情形 |
---|---|
0 | A 发送数据,D 检测信道为空闲 |
τ-δ | A 发送的数据仍未到 D,而 D 检测信道为空闲,所以 D 发送数据 |
τ-δ/2 | A 发送的数据和 D 发送的数据发生了碰撞,但这时 A 和 D 都不知道发生了碰撞 |
τ | D 检测到了碰撞,停止发送数据 |
2τ-δ | A 检测到了碰撞,停止发送数据 |
因此,A 和 D 发送数据失败。
从图中可以看出,对于 A 来说,在发送数据后最多经过2τ
时间后就可以知道所发送的数据是否遇到了碰撞。
争用期:当δ→0
时,2τ-δ → 2τ
,称2τ
为争用期。
【注】具体的争用期时间为 51.2us。因此对于 10Mbit/s 的以太网,在争用期内可发送 512 bit,即 64B,也可以说争用期是 512 比特时间(1 比特时间:发送 1 比特所需的时间)。
2.3.2 最小帧长问题
最小帧长问题:在检测到碰撞之前,由于数据帧太短,还未来得及停止发送数据,数据已经发送完毕了。
解决办法:帧的发送时延 ≥ 2 * 总线传播时延 = 2τ
帧的发送时延 = 帧长 (bit) / 数据传输速率
- 当取等号时,有
最小帧的发送时延 = 2 * 总线传播时延 = 2τ
,此时最小帧长 = 2 * 总线传播时延 * 数据传输速率 = 2τ * 数据传输速率
【注】以太网规定的最短帧长为 64B,凡是长度小于 64B 的都是由于冲突而异常终止的无效帧。如果发送的数据小于 64B,则必须加入一些填充字节,使帧长不小于 64B。这就意味着,在以太网发送数据时,若前 64B 未发生冲突,那么后续数据也一定不会发生冲突。即,如果发生冲突,一定发生在发送前 64B 数据的时刻。
2.3.3 截断二进制指数退避算法
若检测到了碰撞,则需要选择另一个时机重传数据,这就是截断二进制指数退避算法。
- 确定一个基本退避(推迟)时间争用期
2τ
。 - 令
k = min{10, 重传次数}
。 - 从离散的整数集合
[0, 1, 2,..., 2k-1]
中随机取出一个数 r,重传所需要的退避时间 = 2rτ
。 - 当重传达到 16 次仍不能够成功时,说明网络太过拥挤,此时认为帧永远无法正确发出,抛弃此帧,并向高层报告错误。
过程如下:
重传次数 | k | 在整数集合中随机选取一个数 r | 重传推迟时间 |
---|---|---|---|
1 | 1 | 0, 1 | 0 或 2τ |
2 | 2 | 0, 1, 2, 3 | 0 或 2τ 或 4τ 或 6τ |
3 | 3 | 0, 1, 2, 3, 4, 5, 6, 7 | 0 或 2τ 或 4τ 或 6τ 或 8τ 或 10τ 或 12τ 或 14τ |
4 | 4 | 0, 1, ..., 15 | 0 或 2τ 或 4τ 或 6τ 或 8τ 或 10τ 或 12τ 或 14τ 或...或 30τ |
5 | 5 | 0, 1, ..., 31 | 0 或 2τ 或 4τ 或 6τ 或 8τ 或 10τ 或 12τ 或 14τ 或...或 62τ |
... | ... | ... | ... |
10 | 10 | 0, 1, ..., 1023 | 0 或 2τ 或 4τ 或 6τ 或 8τ 或 10τ 或 12τ 或 14τ 或...或 2046τ |
11 | 10 | 0, 1, ..., 1023 | 0 或 2τ 或 4τ 或 6τ 或 8τ 或 10τ 或 12τ 或 14τ 或...或 2046τ |
... | ... | ... | ... |
16 | 10 | 0, 1, ..., 1023 | 0 或 2τ 或 4τ 或 6τ 或 8τ 或 10τ 或 12τ 或 14τ 或...或 2046τ |
2.3.4 CSMA/CD 协议的内容
网络适配器的工作如下:
- (1)准备发送:适配器从网络层获得一个分组,加上以太网的首部和尾部,组成以太网帧,放入适配器的缓存中。
- (2)检测信道:若检测到信道忙,则继续不停检测,一直到信道空闲。此时若在 96 比特时间内信道保持空闲,则开始发送数据帧。
- (3)边发送边监听:有两种可能:
- 发送成功:争用期内一直未检测到碰撞,就认为发送成功。
- 发送失败:争用期内检测到碰撞,这时立即停止发送数据,并发送人为干扰信号。适配器执行退避算法,等待 r 倍 512 比特时间(争用期时间)后检测信道(回到第 2 步)。
2.3.5 相关例题
【例 1】长度为 1km,数据传输速率为 10Mb/s 的以太网,电磁信号传播速率为 2×105km/s,则其最短帧长为?
【解】1km 电缆的单程传播时间为 (1km) / (2×105km/s) = 5us,来回路程传播时间为 10us。
最短帧长 = 10Mb/s × 10us = (10×106b/s) × (10×10-6s) = 100bit。
【例 2】考虑建立一个 CSMA/CD 网,电缆长 1km,不使用重发器,运行速率为 1Gb/s,电缆中的信号速度是 2×105km/s,求最小帧长度是多少?
【解】1km 电缆的单程传播时间为 (1km) / (2×105km/s) = 5us,来回路程传播时间为 10us。
最短帧长 = 1Gb/s × 10us = (109b/s) × (10×10-6s) = 10000bit。
【例 3】若构造一个 CSMA/CD 总线网,速率为 100Mbps,信号在电缆中的传播速度为 2×105km/s,数据帧的最小长度为 125 字节。试求总线电缆的最大长度(假设总线电缆中无中继器)。
【解】长度为 L 的电缆的单程传播时间为 L / (2×105km/s),来回路程传播时间为 L / (105km/s)。
最短帧长 = 125 × 8bit = 1000bit = (100×106b/s) × (L / (105km/s)),把 L 解出来即可:L = 1000m。
2.4 CSMA/CA 协议(碰撞避免)
IEEE 802.11 标准是现今无线局域网通用的标准,它定义了应用于无线局域网的 CSMA/CA 协议。
- CA:碰撞避免,并不是完全避免碰撞,而是尽量降低碰撞发生的概率。
- 应用:无线连接的局域网。
【注】无线局域网不能使用 CSMA/CD 协议,只能使用改进的 CSMA/CA 协议。原因有两点:
- 接收信号的强度往往远小于发送信号的强度,而且无线介质上信号强度的动态变化范围很大,硬件上很难实现碰撞检测。
- 隐蔽站问题:对方发送的信号检测不到,但能产生碰撞。
2.4.1 处理隐蔽站问题——RTS 和 CTS
隐蔽站问题:站 A 和 B 都在 AP 的覆盖范围内,但 A 和 B 相距较远,彼此都听不见对方。当 A 和 B 检测到信道空闲时,都向 AP 发送数据,导致碰撞的发生。
为了避免该问题,802.11 允许发送站对信道进行预约。
源站要发送数据帧之前先广播一个很短的请求发送 RTS(Request To Send)控制帧,它包括源地址、目的地址和这次通信(含相应的确认帧)所持续的时间,该帧能被其范围内包括 AP 在内的所有站点听到。
若信道空闲,则 AP 广播一个允许发送 CTS (Clear To Send)控制帧,它包括这次通信所需的持续时间(从 RTS 帧复制), 该帧也能被其范围内包括 A 和 B 在内的所有站点听到。B 和其他站听到 CTS 后,在 CTS 帧中指明的时间内将抑制发送。CTS 帧有两个目的:
- 给源站明确的发送许可。
- 指示其他站点在预约期内不要发送。
2.4.2 帧间间隔(IFS)
帧间间隔定义了不同种类帧的优先级,这样的好处是进一步避免信道使用冲突,避开不同帧的同时发送。帧间间隔有三种:
- SIFS(最短的 IFS,最高优先级):长度为 28us,用于 ACK 帧、CTS 帧、由过长的 MAC 帧分片后的数据帧,以及所有回答 AP 探询的帧和在 PCF 方式中接入点 AP 发送出的任何帧。
- PIFS(中等长度 IFS,点协调 IFS,中等优先级):用于 PCF 时站点传送帧所必需等待的时间。
- DIFS(最长的 IFS,分布式协调 IFS,最低优先级):长度为 128us,用于 DCF 时站点传送帧前所必须等待的时间,以及用来发送数据帧和管理帧。
优先级的作用:
- 高优先级需要等待的时间较短,因此可优先获得发送权。
- 低优先级需要等待的时间较短,若某个站的低优先级帧还没来得及发送,而其他站的高优先级帧已发送到信道上,则信道变为忙,因而低优先级帧只能推迟发送,这样就减少了碰撞的机会。
2.4.3 CSMA/CA 协议的内容
- 在发送数据之前,先检测信道是否空闲。
- 空闲的话则发出 RTS(Request to send);信道忙则等待。
- 接收端接收到 RTS 后会响应 CTS(Clear to send)。
- 发送端收到 CTS 后,开始发送数据帧(同时预约信道:发送方告知其他站点自己要传多久的数据)。
- 接收端收到数据帧后,将用 CRC 来检验数据是否正确,正确的话则响应 ACK 帧。
- 发送方收到 ACK 以后就可以进行下一个数据帧的发送,若没有则一直重传至规定重发次数为止(采用二进制指数退避算法来确定随机的推迟时间)。
【注】CSMA/CA 协议的基本思想是在发送数据时先广播告知其他结点,让其他结点在某段时间内不要发送数据,以免出现碰撞。CSMA/CD协议的基本思想是发送前侦听,边发送边侦听,一旦出现碰撞马上停止发送。
3 动态划分信道——轮询访问 MAC 协议
轮询访问 MAC 协议的特点:不产生冲突,且发送时占用全部带宽。
3.1 轮询协议
- 轮询协议:主结点会轮流邀请从属结点发送数据。
- 问题:
- 存在轮询开销。
- 等待延迟。
- 单点故障:主结点故障后,从属结点无法发送信息。
3.2 令牌传递协议
- 令牌:一个特殊格式的MAC控制帧,不包含任何信息,可以控制信道的使用,确保同一时刻只有一个结点独占信道。
- 令牌环网:逻辑上是环形拓扑,物理上是星型拓扑。
- 特点:常用于负载较重、通信量较大的网络中。
- 数据和令牌的传递过程:
- 网络空闲时,没有主机要传递信息,令牌在各个主机之间循环传递。
- 当主机要发送信息的时候,等待令牌传递到当前主机,修改令牌的标志位,使得令牌从空闲的状态变成忙碌的状态,然后再在令牌的控制帧后面加上数据,构成数据帧。
- 发送数据帧,接收到的站点一边转发数据,一边查看帧的目的地址。如果目的地址和自己的地址相同,那么接收站就赋值该数据帧以便进一步处理。
- 轮转的发送数据,当数据再次回到发送方的时候,先检查数据帧是否出错,如果数据帧出错,重新发送数据;如果没有问题,回收数据帧,不再对该令牌进行转发,修改标志位,然后重新产生一个令牌。
- 问题:
- 令牌的开销。
- 等待开销。
- 单点故障:如果其中一个计算机故障,整个路可能就断了。