IEEE 802.11 无线局域网

这一节真正的难点只有一个:802.11 帧里的三个地址(2017、2022 年考过)。其余内容——BSS、ESS、自组网络——都是概念题。三个地址之所以难,是因为无线局域网里多出了一个以太网里没有的角色:AP 是链路层设备,却要替通信双方转发帧。把这一点想清楚,地址表不用背。

CSMA/CA 协议本身在 3.5.2,本节只讲网络组成和帧。

机制

两类无线局域网

无线局域网分为有固定基础设施和无固定基础设施两大类。“固定基础设施”指预先建立的、能覆盖一定地理范围的固定基站。

有固定基础设施的无线局域网由 IEEE 制定的 802.11 系列标准规定(802.11a/b/g/n 等),使用星形拓扑,中心称为接入点(Access Point,AP),在 MAC 层使用 CSMA/CA 协议。使用 802.11 系列协议的局域网也称 Wi-Fi。

802.11 规定无线局域网的最小构件是基本服务集(Basic Service Set,BSS)。一个 BSS 包括一个 AP 和若干移动站,各站在本 BSS 内的通信,以及与本 BSS 外部站点的通信,都必须通过本 BSS 的 AP。AP 就是 BSS 中的基站。安装 AP 时,必须为其分配一个不超过 32 字节的服务集标识符(SSID)和一个信道,SSID 就是使用该 AP 的无线局域网的名称。BSS 覆盖的地理范围称为基本服务区(BSA),直径一般不超过 100m。

BSS 可以是孤立的,也可以通过 AP 连接到一个分配系统(Distribution System,DS),再连接到另一个 BSS,构成一个扩展服务集(Extended Service Set,ESS)。分配系统的作用是使 ESS 对上层的表现就像一个 BSS。ESS 还可以通过一种称为 Portal(门户)的设备,为无线用户提供到有线以太网的接入,门户的作用相当于网桥。

flowchart LR
    subgraph ESS["扩展服务集 ESS"]
        direction LR
        subgraph BSS1["BSS 1"]
            A["移动站 A"]
            AP1["AP1"]
        end
        subgraph BSS2["BSS 2"]
            AP2["AP2"]
            B["移动站 B"]
        end
    end
    A -. "无线" .-> AP1
    AP1 == "分配系统 DS(有线)" ==> AP2
    AP2 -. "无线" .-> B
    AP1 --- PT["Portal<br/>作用相当于网桥"] --- ETH["其他 802.x 局域网"]
    classDef ap fill:#dbeafe,stroke:#2563eb
    class AP1,AP2 ap

A 要和另一个 BSS 中的 B 通信,必须经过两个接入点,路径是 A → AP1 → AP2 → B,AP1 到 AP2 这一段是有线传输。移动站 A 从某个 BSS 漫游到另一个 BSS 时仍可保持与 B 的通信,只是它使用的 AP 改变了。

无固定基础设施的无线局域网称为自组网络(ad hoc network)。它没有 AP,由一些处于平等状态的移动站相互通信组成临时网络。各节点地位平等,中间节点都是转发节点,因此都具有路由器的功能。自组网络中每个移动站都要参与其他移动站的路由发现和维护,而且拓扑可能变化很快,固定网络中行之有效的路由选择协议对移动自组网络已不适用。

自组网络和移动 IP 并不相同。移动 IP 使漫游的主机能用多种方法连接到因特网,其核心网络功能仍基于固定网络中一直使用的路由选择协议;自组网络则是把移动性扩展到无线领域中的自治系统,有自己特定的路由选择协议,可以不和因特网相连。移动 IP 见 4.6 移动 IP。

802.11 帧

802.11 帧共有三种类型:数据帧、控制帧和管理帧。数据帧由三部分组成:

部分长度说明
MAC 首部30B帧的复杂性都在首部
帧主体0~2312B比以太网的最大长度长很多
FCS4BMAC 尾部

首部依次为:帧控制 2B、持续期 2B、地址 1 6B、地址 2 6B、地址 3 6B、序号控制 2B、地址 4 6B。

持续期字段记录允许发送数据的站点对信道预约的时间,它是 CSMA/CA 中网络分配向量 NAV 的来源。帧控制字段中较重要的是类型字段和子类型字段,用来区分帧的功能,例如控制帧有 RTS、CTS 和 ACK 等子类型。帧控制字段里还有”去往 AP”和”来自 AP”两个 1 位的字段,它们决定下面三个地址的含义。

三个地址:为什么需要三个

以太网帧只有两个地址,因为以太网上的帧从源适配器直接到达目的适配器,“这一跳的收发双方”和”整个通信的两端”是同一对站点。无线局域网不一样:BSS 内的所有通信都必须经过 AP,一次通信被 AP 拆成两跳,每一跳的收发双方中总有一个是 AP。

所以 802.11 这样安排:地址 1 是直接接收数据帧的节点地址,地址 2 是实际发送数据帧的节点地址——它们是无线信道两端的接收地址和发送地址,描述的是”这一跳”。这一跳的两端里缺了一个真正的通信端点,就用地址 3 补上:

去往 AP来自 AP这一跳地址 1地址 2地址 3
10主机 → AP接收地址 = AP 地址发送地址 = 源地址目的地址
01AP → 主机接收地址 = 目的地址发送地址 = AP 地址源地址

当主机发往 AP 时,接收地址不是实际的目的地址,因此用地址 3 存放实际的目的地址;当 AP 发往主机时,发送地址不是实际的源地址,因此用地址 3 存放实际的源地址。“接收地址”不等于”目的地址”,“发送地址”不等于”源地址”,这是整张表的关键。地址 4 教材称用于自组网络,不作讨论。

例:同一个 BSS 中 A 向 B 发送数据帧。A 发往 AP 时,“去往 AP = 1""来自 AP = 0”,地址 1 是 AP,地址 2 是 A,地址 3 是 B。AP 转发给 B 时,“去往 AP = 0""来自 AP = 1”,地址 1 是 B,地址 2 是 AP,地址 3 是 A。

AP 与路由器之间:地址 3 的真正用途

更复杂的情形是两个 AP 有线连接到路由器,路由器要向 A 发送数据。路由器是网络层设备,它看不见链路层的 AP,只认识 A 的 IP 地址;而 AP 是链路层设备,只认识 MAC 地址,不认识 IP 地址。

sequenceDiagram
    participant A as 移动站 A
    participant AP as AP
    participant R as 路由器接口 R1
    Note over R,A: R1 向 A 发送
    R->>AP: 802.3 帧:源 = R1,目的 = A(R1 先用 ARP 求得 A 的 MAC 地址)
    AP->>A: 802.11 帧(去往 AP=0,来自 AP=1):地址1 = A,地址2 = AP,地址3 = R1
    Note over A,R: A 向 R1 发送
    A->>AP: 802.11 帧(去往 AP=1,来自 AP=0):地址1 = AP,地址2 = A,地址3 = R1
    AP->>R: 802.3 帧:源 = A,目的 = R1

A 发往 R1 时,A 只能把帧交给 AP,但必须告诉 AP”最终要交给谁”,这就是地址 3 = R1 的意义:地址 3 在 BSS 和有线局域网互联中起关键作用,它允许 AP 在构建以太网帧时确定目的 MAC 地址。反方向同理,地址 3 = R1 让 A 知道这个数据报来自子网中的哪个路由器接口。

计算模板:写出 802.11 帧的三个地址

  1. 定这一跳:主机 → AP(去往 AP = 1),还是 AP → 主机(来自 AP = 1)。
  2. 地址 1 = 这一跳的接收方,地址 2 = 这一跳的发送方。
  3. 地址 3 = 这一跳里缺席的那个真正端点:主机 → AP 时补真正的目的,AP → 主机时补真正的源。
  4. 题目常用 BSSID 指代 AP 的地址;以太网那一段上的帧只有源、目的两个地址。

例(2017 真题,王道 3.6.5 第 27 题):主机 H(00-12-34-56-78-9a)发送一个封装访问 Internet 的 IP 分组的 802.11 数据帧 F,AP 的 MAC 为 …78-9b,与 AP 有线相连的路由器 R 的接口为 …78-9c。F 的地址 1、2、3 分别是?

这一跳是 H → AP,去往 AP = 1。地址 1 = 接收方 AP(9b),地址 2 = 发送方 H(9a),地址 3 = 缺席的真正目的——访问 Internet 的分组要交给路由器 R 转发,所以是 R(9c)。答案为 9b, 9a, 9c,即 B。

例(王道 3.6.5 第 25 题):主机 A 经 AP1 给主机 B 发送数据,B 在 AP2 的 BSS 中。在 MAC 帧从 AP2 转发到 B 的这段链路上,三个地址分别是?来自 AP = 1,地址 1 = B,地址 2 = AP2(BSSID2),地址 3 = 源 A。答案为 D(MAC_B, BSSID2, MAC_A)。

边界

地址 3 不一定是”对端主机”,而是”这一跳里缺席的那个链路层端点”。 2017 真题里 H 访问的是 Internet 上某台服务器,但地址 3 填的是路由器 R 的接口,而不是服务器——服务器的 MAC 地址根本不会出现在这个局域网里。MAC 地址只在一个局域网内有意义,跨网络的最终目的由 IP 地址表达。这条和 4.2.4 网络层转发分组的过程里”目的 MAC 是默认网关”是同一条原理。

AP 与路由器是两种不同层次的设备。 AP 工作在链路层,只认 MAC 地址;路由器工作在网络层,看不见 AP。所以路由器发给 A 的以太网帧,目的地址直接写 A,而不是 AP。

口径差异:家里的"无线路由器"不是教材里的 AP

教材口径:AP 是单纯的链路层设备,通过有线连到路由器,只认 MAC 地址。

工程口径:家用”无线路由器”是 AP + 以太网交换机 + 路由器(含 NAT、DHCP) 三合一的设备,所以它有 IP 地址、能分配地址、能上网。其中 AP 那一部分的行为仍符合教材——做题时把它拆开看:地址 3 指向的”路由器接口”就是这台设备里路由器那一部分的 MAC 地址。

口径差异:地址 4 的用途

教材口径:地址 4 用于自组网络。

标准口径:IEEE 802.11 中,自组网络(IBSS)的帧”去往 AP”和”来自 AP”均为 0,只用三个地址(地址 3 为 BSSID);只有两者同为 1、即帧在 AP 之间经无线分配系统转发时,才用到地址 4。

考试只涉及地址 1~3,按教材口径作答即可。

帧主体 2312 字节不是以太网的 1500 字节,这是 802.11 帧比以太网帧”长很多”的来由;同样,802.11 的 MAC 首部是 30 字节,以太网是 14 字节。

自组网络 ≠ 移动 IP。 前者没有 AP、节点兼作路由器、可以不接入因特网;后者是让主机移动后仍能用原 IP 地址接入因特网,依赖固定网络的路由协议。

ESS 里 AP 之间走有线。 同一 ESS 中不同 BSS 的站点通信时,两个 AP 之间通过分配系统有线传输,不是 AP 与 AP 之间无线转发。

对照速查

名词要点
BSS1 个 AP + 若干移动站;最小构件;站间通信都经 AP
SSID≤ 32 字节,无线局域网的名字
BSABSS 覆盖范围,直径一般 ≤ 100m
ESS多个 BSS 经分配系统 DS 连接;Portal 相当于网桥
自组网络无 AP,节点平等且都有路由功能,可不接入因特网
802.11 帧首部 30B + 帧主体 0~2312B + FCS 4B;数据帧、控制帧、管理帧三类
说法对错
同一 BSS 内两个站点可以不经过 AP 直接通信❌
802.11 帧中地址 1 是目的地址❌(是接收地址,主机 → AP 时为 AP)
802.11 帧的地址含义取决于”去往 AP""来自 AP”两位✅(王道 3.6.6 第 24 题)
路由器转发给无线主机的以太网帧,目的地址是 AP❌(是主机 A)
自组网络中的节点都具有路由器的功能✅

考点

  • BSS = 1 个 AP + 若干移动站,站间通信都经过 AP;ESS 经分配系统连接多个 BSS
  • 802.11 帧:首部 30B,帧主体 0~2312B,FCS 4B
  • 三个地址(2017、2022):地址 1 = 接收方,地址 2 = 发送方,地址 3 = 这一跳缺席的真正端点
  • 地址含义由帧控制中的”去往 AP""来自 AP”决定
  • 自组网络与移动 IP 的区别

链接