4. 以太网的MAC帧
## 4. 以太网的MAC帧 以太网MAC帧格式有两种标准:DIX Ethernet V2 标准(以太网V2)和IEEE 802.3标准。此处仅介绍最常用的以太网V2标准的帧格式,如图3.23所示。
原转写引用的配图未随 Markdown 保存,请回到原 PDF 核验。
图3.23 以太网V2标准的MAC帧格式
**参阅图片** 以太网MAC帧的格式(2010,2011)
1)帧前插入的8B前导码分为两个字段:第一个字段是7B的前同步码,用于实现比特同步;第二个字段是1B的帧开始定界符,标志MAC帧的开始。
## 注意
以太网帧不需要帧结束定界符。因为当以太网传送帧时,各帧之间必须保持至少96比特时间的间隙,因此,接收方只要找到帧开始定界符,其后连续到达的比特流即属于同一帧。此外,以太网采用了违规编码法的思想,这种编码(曼彻斯特编码)的特点是在每个码元中间都有一次电压跳变。当发送方把一个帧发送完毕后,就不再发送其他码元,因此发送方网络接口上的电压也不再变化,这样接收方就能很容易地找到帧的结束位置,这个位置往前数4B就是FCS字段,从而确定数据字段的结束位置。
**参阅图片** 以太网帧中地址字段的功能(2018)
2)目的地址:6B,帧在局域网中的目的适配器的MAC地址。
<!-- page: 104 -->
2027年计算机网络考研复习指导
3)源地址:6B,发送该帧的源适配器的 MAC 地址。
4)类型:2B,标识上一层使用的是什么协议,以便将收到的 MAC 帧的数据交给相应的上层协议。例如,当类型字段的值是 0x0800 时,表示上层使用的是 IP。
**考虑速度** 以太网帧填充与最小帧长的关系(2012)
5)数据:46~1500B,承载上层的协议数据单元(如 IP 数据报)。以太网的最大传输单元为 1500B,若 IP 数据报超过此长度,则需在网络层进行分片。此外,由于 CSMA/CD 协议算法限制,以太网帧必须满足最小长度为 64B,当 IP 数据报不足 46B 时,MAC 子层会在数据字段后面添加整数字节的填充字段,以确保帧长达到 64B。
# 注意
“46 是怎么来的?”——由 CSMA/CD 协议可知,以太网帧的最短帧长为 64B,而 MAC 帧的首部和尾部的长度为 18B,因此数据字段最少为 $64 - 18 = 46\mathrm{B}$。
6)检验码(FCS):4B,采用 32 位 CRC 码,检验范围从目的地址到数据字段(含目的地址、源地址、类型和数据),但不检验前导码。
IEEE 802.3 帧格式与以太网 V2 帧格式的区别在于:用长度字段替代了 V2 帧中的类型字段,指示数据字段的长度。在实践中,这两种机制可以并存,由于 IEEE 802.3 数据字段的最大长度为 1500B,故长度字段的值 $\leqslant 1500$;从而 1501 到 65535 的值则被解释为类型标识符。
# 5. 高速以太网
速率达到或超过 $100\mathrm{Mb / s}$ 的以太网称为高速以太网,其主要类型如表 3.3 所示。
表 3.3 几种高速以太网技术
| 标准名称 | 100Base-T 以太网 | 吉比特以太网 | 10 吉比特以太网 |
| --- | --- | --- | --- |
| 传输速率 | 100Mb/s | 1Gb/s | 10Gb/s |
| 传输介质 | 双绞线 | 双绞线或光纤 | 双绞线或光纤 |
| 通信方式 | 支持半双工和全双工 | | 只支持全双工 |
| 介质访问控制协议 | 半双工模式下使用 CSMA/CD 协议 | | 无 |
(1)100Base-T 以太网(快速以太网)
**考虑速度** 100Base-T 的传输介质类型(2019)
100Base-T 以太网是在双绞线上以 100Mb/s 速率传输基带信号的星形以太网,支持全双工和半双工两种工作模式。当使用以太网交换机组网时,通常运行在全双工模式而无冲突发生,因此无须使用 CSMA/CD 协议。但在半双工模式下,仍需依赖 CSMA/CD 协议来处理冲突。
其帧格式仍遵循 IEEE 802.3 标准,保持最小帧长为 64B 不变,但将单个网段的最大长度缩短至 $100\mathrm{m}$。同时,帧间最小间隔从 $9.6\mu \mathrm{s}$ 减为 $0.96\mu \mathrm{s}$,以适应更高的传输速率。
(2)吉比特以太网(千兆以太网)
吉比特以太网支持 1Gb/s 的传输速率,兼容全双工和半双工模式。它使用 IEEE 802.3 标准的帧格式。使用双绞线或光纤作为传输介质。在半双工模式下使用 CSMA/CD 协议(很少部署);而在全双工模式下不使用 CSMA/CD 协议。与 10Base-T 和 100Base-T 技术向后兼容。
(3)10 吉比特以太网
10 吉比特以太网的帧格式与 $10\mathrm{Mb / s}$、$100\mathrm{Mb / s}$ 和 $1\mathrm{Gb / s}$ 以太网完全相同,并保留 IEEE 802.3 规定的最小和最大帧长。仅工作在全双工模式,无争用问题,因此无须使用 CSMA/CD 协议。
<!-- page: 105 -->
第3章 数据链路层
93
以太网从 10Mb/s 到 10Gb/s 的演进充分证明了其可扩展性(速率从 10Mb/s 到 10Gb/s)、灵活性(多种介质、全/半双工模式、共享/交换构架)、易部署性和稳健性。
## 3.6.3 IEEE 802.11 无线局域网
### 1. 无线局域网的组成
无线局域网可分为两大类:有固定基础设施的无线局域网和无固定基础设施的移动自组织网络。所谓“固定基础设施”,是指预先部署、能覆盖一定地理范围的固定基站。
#### (1)有固定基础设施无线局域网
对于有固定基础设施的无线局域网,IEEE 制定了 802.11 系列协议标准,包括 802.11a/b/g/n 等。802.11 协议采用星形拓扑,其中心节点称为接入点(Access Point,AP),在 MAC 层使用 CSMA/CA 协议。采用 802.11 系列协议的局域网通常也称 Wi-Fi。
802.11 协议规定,无线局域网的最小构件是基本服务集(Basic Service Set,BSS)。一个 BSS 包含一个 AP 和若干移动站。站内通信或与外部站点的通信都必须通过该 BSS 的 AP。此处的 AP 即为 BSS 中的基站(base station)。配置 AP 时,需要为其分配一个不超过 32B 的服务集标识符(Service Set IDentifier,SSID)和一个工作信道。SSID 即为该无线局域网的名称。BSS 覆盖的地理范围称为基本服务区(Basic Service Area,BSA),其直径一般不超过 100 米。
一个 BSS 可以是孤立的,也可通过 AP 连接到分配系统(Distribution System,DS),再与其他 BSS 互连,从而构成扩展的服务集(Extended Service Set,ESS)。分配系统的作用是使整个 ESS 对上层呈现为一个单一的 BSS。ESS 还可通过一种称为 Portal(门户)的设备,为无线用户提供接入有线以太网的能力。Portal 的功能相当于网桥。在图 3.24 中,若移动站 A 要与另一 BSS 中的移动站 B 通信,则数据流动路径为 A→AP1→AP2→B,其中 AP1 与 AP2 的通信通过有线链路完成。
原转写引用的配图未随 Markdown 保存,请回到原 PDF 核验。
图 3.24 基本服务集和扩展服务集 当移动站 A 从一个 BSS 漫游到另一个 BSS 时(图 3.24 中的 A'),仍可保持与 B 的通信。但所使用的 AP 会发生改变。 #### (2)无固定基础设施的移动自组织网络 另一种无线局域网是无固定基础设施的自组织网络,也称自组网络(ad hoc network)。此类网络不包含 AP,而是由若干处于平等地位的移动站临时组成的对等网络(见图 3.25)。各节点地位平等,中间节点需转发其他节点的数据,因此兼具终端与路由器的功能。 自组网络通常这样形成:若干可移动设备彼此邻近且存在通信需求时,会自发组建一个网络。在此类网络中,每个移动站都需主动参与路由的发现与维护。由于节点位置不断变化,网络拓扑可能频繁且快速地改变,因此传统在固定网络中有效的路由协议往往难以适用于自组网络,必须采用专门为其设计的路由机制。 <!-- page: 106 --> 2027年计算机网络考研复习指导
原转写引用的配图未随 Markdown 保存,请回到原 PDF 核验。
图3.25 由若干处于平等地位的移动站临时组成的对等网络 需要注意的是,自组网络与移动IP有本质区别:移动IP旨在支持主机在不同网络间漫游并接入互联网,其底层仍依赖固定网络的路由基础设施;而自组网络是一种分布式的无线自治系统,不仅拥有专用的路由协议,还能独立于互联网运行,无须依赖任何预设的固定基础设施。 ## 2. CSMA/CA 协议 CSMA/CD 协议已成功用于有线局域网,但无线局域网不能简单照搬 CSMA/CD 协议。无线局域网仍使用 CSMA 协议,但无法实现冲突检测,主要有两个原因: 1)适配器接收到的信号强度通常远小于其发送信号的强度,且无线信道中信号强度的动态范围极大,若要实现冲突检测,硬件上的成本将会过高。 2)在无线通信中,并非所有站点都能互相侦听到对方(却可能产生冲突),即存在隐蔽站问题,导致冲突检测机制无法发现所有冲突。 在图3.26中,A站和B站均在AP的覆盖范围内,但彼此距离较远,无法侦听到对方。当A站和B站同时检测到信道空闲时,都向AP发送数据,导致发生冲突,而双方均无法察觉,这就是隐蔽站问题。这里A站和B站互为隐蔽站,它们检测不到彼此的信号,却能产生冲突。
原转写引用的配图未随 Markdown 保存,请回到原 PDF 核验。
图3.26 A站和B站同时向AP发送数据,发生冲突
为此,802.11协议定义了广泛应用于无线局域网的CSMA/CA协议。它对CSMA/CD协议进行改进,将“冲突检测”改为“冲突避免”(Collision Avoidance,CA)。“冲突避免”并不是指协议可以完全避免冲突,而是要尽量降低冲突发生的概率。由于802.11协议不支持冲突检测,一旦站点开始发送帧,就必须完整发送该帧;若在冲突存在时,仍发送整个帧(尤其是长数据帧),将严重降低网络效率,因此必须采用冲突避免技术来降低冲突概率。
**尊重阅读** CSMA/CA协议的确认机制(2011)
鉴于无线信道的通信质量远不如有线信道,802.11协议在数据链路层引入确认/重传(ARQ)机制;站点每发送完一帧后,必须收到接收方的确认帧(ACK),才能继续发送下一帧。因此,802.11无线局域网采用的是一种停止-等待式可靠传输协议。
802.11 协议在 MAC 子层定义了两种介质访问控制方式。
1)分布式协调功能(DCF)。不采用任何中心控制,各站通过争用信道获得发送权。这是802.11协议必须实现的方式,也是目前广泛使用的方式。
<!-- page: 107 -->
第3章 数据链路层
95
2)点协调功能(PCF)。使用 AP 集中控制,用类似于探询的方法将发送权轮流分配给各站,从而避免冲突。它是 802.11 协议的可选方式,实际很少使用。
802.11 协议规定,各站在发送数据前必须检测信道,若信道忙,则禁止发送。为进一步减少冲突,802.11 协议还要求:即使检测到信道空闲,也需再等待一段短暂时间(确保信道持续空闲),方可发送帧。该时间称为候间间隔(InterFrame Space, IFS),其长度取决于帧的类型。
**特点信息** ▶ CSMA/CA 协议的帧间间隔类型与功能(2020)
1)DIFS(分布式协调 IFS):最长的 IFS,在 DCF 方式下用来发送数据帧和管理帧。
2)PIFS(点协调 IFS):中等长度的 IFS,在 PCF 方式中使用。
3)SIFS(短 IFS):最短的 IFS,用于分隔同一对话中的连续帧,如 ACK 帧、CTS 帧、分片后的数据帧,以及对 AP 探询的响应帧等。
当信道由忙变为空闲时,在有多个站点同时等待发送的情况下,若它们都在时间 DIFS 后立即发送数据,则必然导致冲突。因此,CSMA/CA 协议规定:当检测到信道从忙变为空闲时,任何站点要发送数据,必须先等待时间 DIFS,再进入争用期,并执行随机退避,即随机选择一个退避时限数,并在每个空闲时限将其减 1,直至减为 0 后才发送。当且仅当检测到信道空闲且这个数据帧是要发送的第一个数据帧时,才不使用退避算法,其他所有情况都必须使用退避算法,具体为:① 要发送第一个数据帧之前检测到信道忙;② 未收到确认,要重传数据帧;③ 每次确认成功后要发送下一个数据帧。CSMA/CA 协议的退避算法与 CSMA/CD 协议类似,第 $i$ 次退避在 $[0, \dots, (2^{k+k}-1)]$ 个时限中随机选择一个,当时限范围最大达到 1023 时(对应第 6 次重传),就不再增加。
CSMA/CA 协议算法归纳如下:
1)若站点首次尝试发送数据(非因重传而发送),且检测到信道空闲,则在等待时间 DIFS 后(信道持续空闲),立即发送整个数据帧。否则执行步骤 2)。
2)站点选取一个随机数,设置退避计时器。计时器运行的规则是:若信道忙,则冻结计时器(暂停递减),并继续等待,直至信道变为空闲(称为推迟接入);若信道空闲,且在时间 DIFS 内持续空闲,则开始争用信道,进行倒计时。当计时器减至 0 时(仅可能发生在信道持续空闲期间),站点立即发送整个数据帧并等待确认。
3)发送站收到确认后,若仍有后续帧待发送,则转到步骤 2)。若在规定时间(由重传计时器控制)内未收到确认,则按二进制指数退避规则增大竞争窗口,再转到步骤 2)重新尝试。
**注意**
**推迟接入和退避的区别。** 推迟接入发生在信道忙时,为的是等待争用期的到来,此时退避计时器处于冻结状态。而退避是争用期各站点执行的算法,此时信道是空闲的,退避总出现在 DIFS 之后。
802.11 协议还规定各站采用虚拟载波监听机制:源站在发送数据前,通过帧首部的持续期字段,向所有能接收到该帧的站点通告其将占用信道的总时长(包括目的站回复 ACK 所需的时间)。其他站点收到后,将据此设置自身的网络分配向量(Network Allocation Vector,NAV),并在 NAV 计时期间暂停发送,进而显著降低冲突概率。所谓虚拟载波监听,是指这些站点并未实际监听物理信道,而基于接收到的通知主动避让,效果等同于持续监听信道。
**特点信息** ▶ CSMA/CA 协议的信道预约机制(2018)
为了缓解隐蔽站的问题,802.11 协议允许发送站对信道进行预约。在图 3.26 中,A 站和 B 站互为隐蔽站,下面以 A 站和 AP 通信为例,介绍信道预约的方法(见图 3.27)。
<!-- page: 108 -->
2027年计算机网络考研复习指导
1)在 A 站向 AP 发送数据帧 DATA 前,先检测信道。若信道空闲,则等待时间 DIFS 后,广播一个请求发送 RTS(Request To Send)控制帧,目的是告诉所有能够收到 RTS 帧的站:“我要占用信道一段时间 [SIFS+ CTS+ SIFS+ DATA + SIFS+ACK]”,即从成功收到 RTS 帧起,到 AP 完成 ACK 发送为止的时间。这个时间被写入 RTS 帧首部。
2)若 AP 正确收到 RTS 帧且信道空闲,则等待时间 SIFS 后,广播一个允许发送 CTS(Clear To Send)控制帧。目的不仅是告诉源站 “可以发送数据了”,同时也是告诉所有能收到 CTS 帧的站 “我要占用信道一段时间 [SIFS+DATA + SIFS+ACK]”,即从成功收到 CTS 帧起,到 AP 完成 ACK 发送为止的时间。该时间同样被写入 CTS 帧首部。
3)A 站收到 CTS 帧后,再等待时间 SIFS,即可发送数据帧。其首部写入时间 [DATA + SIFS + ACK],即从开始接收数据帧起①,到 AP 完成 ACK 发送为止的时间。
**参考文献** ① NAV 的工作原理(2024)
任何站点只要收到 RTS 帧、CTS 帧或数据帧之一,就会根据其首部的持续期字段设置自己的 NAV,如图 3.27 所示。虽然 B 站收不到 A 站发送给 AP 的 RTS 帧,但能收到 AP 广播的 CTS 帧,B 站根据 CTS 帧首部的内容设置自己的 NAV,因此在这段时间内不会发送数据、干扰信道。因此,虚拟载波监听机制能够有效减少由隐蔽站引发的冲突问题。
原转写引用的配图未随 Markdown 保存,请回到原 PDF 核验。
图 3.27 使用 RTS 和 CTS 帧的冲突避免 显然,使用 RTS/CTS 帧会使网络的通信效率有所下降,但这两种控制帧都很短,与数据帧相比开销不算大。相反,若不使用这种控制帧,则一旦发生冲突而导致数据帧重传,浪费的时间往往更多。信道预约并非强制要求,各站点可自行决定是否启用。或仅当待发送的数据帧长度超过某一阈值时才使用 RTS/CTS 帧,从而在可靠与效率之间取得平衡。 CSMA/CD 协议与 CSMA/CA 协议的主要区别如下: 1)冲突处理机制不同。CSMA/CD 协议能在发送过程中检测冲突,但无法避免冲突;CSMA/CA 协议无法在发送时检测冲突(尤其是发生在接收端的冲突),因此只能尽量避免冲突。 2)传输介质不同。CSMA/CD 协议用于总线形有线以太网,CSMA/CA 协议则用于无线局域网。 3)检测方式不同。CSMA/CD 协议通过检测线路中的电压变化来判断是否冲突;而 CSMA/CA 协议只能在发送前通过能量检测、载波侦听或两者的混合方式,综合判断信道是否空闲。 总结:CSMA/CA 协议的思想是 “先打招呼,再发数据”,发送前先广播通知其他站点,在 ① 帧的首部位于帧的起始位置,接收方在物理层逐比特接收数据时,一旦识别出帧定界符,就可提取并解析首部内容,并立即设置 NAV,无须等待整帧接收完成。由于数据字段通常较长,其接收时延不可忽略,若等到整帧收完才设置 NAV,则可能错过冲突避免的关键窗口。因此,持续期字段必须包含从当前帧开始接收起,到 ACK 发送完毕为止的全部时间。 <!-- page: 109 --> 第3章 数据链路层 其指定的时段内暂时发送,以预防冲突;而CSMA/CD协议则是“边发边听,撞了就停”,发送前先监听信道,发送过程中持续检测信号,一旦发现冲突,就立即停发,并启动退避重传机制。 ## 3.802.11 局域网的MAC帧 802.11局域网的帧共有三种类型:数据帧、控制帧和管理帧。其中,数据帧以及三种常用的控制帧(RTS帧、CTS帧和ACK帧)的格式如图3.28所示。 802.11帧由以下三部分组成: 1)MAC首部,共30B。帧的复杂性主要体现在MAC首部。 2)帧主体,即数据部分,最大长度不超过2312B,远大于以太网帧的数据载荷。 3)帧检验序列(FCS),作为MAC尾部,共4B。
原转写引用的配图未随 Markdown 保存,请回到原 PDF 核验。
(a) 数据帧格式 (帧控制字段中的子类型为0000)
原转写引用的配图未随 Markdown 保存,请回到原 PDF 核验。
(c) CTS和ACK帧格式 (帧控制字段中的子类型为1100和1101)
图3.28 数据帧以及三种常用的控制帧(RTS帧、CTS帧和ACK帧)的格式
**查看图表** 802.11 帧前三地址字段的作用(2017、2022)
802.11帧首部中最关键的部分是四个地址字段(均为MAC地址),此处仅讨论前三个(地址4用于自组网络)。这三个地址的具体含义由帧控制字段中的两个标志位“去往AP”和“来自AP”共同决定。表3.4列出了802.11帧的地址字段最常用的两种情况。
表 3.4 802.11 帧的地址字段最常用的两种情况
| 去往AP | 来自AP | 地址1 | 地址2 | 地址3 | 地址4 |
| --- | --- | --- | --- | --- | --- |
| 0 | 1 | 接收地址 = 目的地址 | 发送地址 = AP地址 | 源地址 | — |
| 1 | 0 | 接收地址 = AP地址 | 发送地址 = 源地址 | 目的地址 | — |
其中,地址1是直接接收该帧的节点地址,地址2是实际发送该帧的节点地址。
现假定在同一个BSS中,A站向B站发送数据,该过程分可为两个阶段。
第一阶段:A站 $\rightarrow$ AP
A站构造一个802.11帧发送给AP。该帧首部字段设置如下:
“去往 $\mathrm{AP} = 1$ ”而“来自 $\mathrm{AP} = 0$ ;
地址1为AP的MAC地址。地址2为A站的MAC地址。地址3为B站的MAC地址。
<!-- page: 110 -->
2027年计算机网络考研复习指导
## 第二阶段:AP→B站
AP收到该帧后,将其转发给B站。此时构造的新802.11帧首部字段设置如下:
“去往 AP=0” 而 “来自 AP=1”;
地址1为B站的MAC地址,地址2为AP的MAC地址,地址3为A站的MAC地址。
理解这三个地址的关键:地址1和地址2始终表示当前无线传输的两端,即直接接收方和直接发送方。当主机发往AP时,接收方是AP,但最终目的不是AP,因此用地址3存放实际目的地址;当AP发往主机时,发送方是AP,但原始源不是AP,因此用地址3存放实际源地址。
下面讨论一种更复杂的情况。如图3.29所示,两个AP通过有线链路连接到同一个路由器R,A站和B站分别位于两个不同的子网中。现分析A站向B站发送数据的完整过程。由于A站与B站不在同一个子网内,该通信需经由路由器R转发,整个过程也可分为两个阶段。
原转写引用的配图未随 Markdown 保存,请回到原 PDF 核验。
图3.29 链路上的802.11帧和802.3帧