802.11 无线局域网:当线缆消失之后
在前面的章节,我们见证了以太网从共享式到交换式,再到VLAN逻辑隔离的完整演进。
这些技术都依赖同一个前提:有一根物理线缆连接着设备。
但是现实中不是这样。我们用手机刷视频、用电脑打CSGO------这些设备根本没有插网线。它们通过无线电波在空中传输数据。
当线缆消失,数据链路层面对的是一个新的环境。
新矛盾:无线信道更不可靠,冲突更难检测
无线信道和有线信道的本质区别
| 对比维度 | 有线以太网 | 无线局域网 |
|---|---|---|
| 传输介质 | 双绞线/光纤,信号被约束在线缆内 | 无线电波,信号在开放空间中扩散 |
| 干扰来源 | 主要是电磁干扰,相对可控 | 微波炉、蓝牙、墙壁反射、其他WiFi设备 |
| 信号衰减 | 随距离线性衰减,可预测 | 受障碍物影响极大,一面墙就能让信号减半 |
| 通信范围 | 线缆多长,信号就到多远 | 开放空间,信号覆盖范围不规则 |
| 冲突检测 | 设备能同时发和收,可以边发边听 | 设备发送时听不到其他设备的信号 |
最后一个区别是关键。 它直接决定了无线局域网不能使用CSMA/CD。
为什么无线中不能做冲突检测?

在有线以太网中,设备可以"边发边听"------发送信号的同时,监测线缆上是否有其他信号叠加。这是因为 线缆上的信号强度相对一致,发送方和接收方的信号在线缆中相遇后,电压会叠加,发送方能够检测到这种变化。
但在无线环境中,情况完全不同:

1. 信号强度差异巨大。 设备A发出的信号,在A自己的天线处强度极高。而远处设备B的信号到达A时,已经衰减得非常微弱。A在发送时,自己发出的强信号会完全淹没B传来的弱信号------A根本"听不到"B也在发送。
比喻:你在广场上大声喊话。你喊的时候,自己的声音在你的耳朵里是最响的。远处有人同时喊,他的声音传到你这里已经很微弱了,被你自己的喊声完全盖住。你根本不知道有人在和你同时喊------这就是无线通信中的"冲突检测失败"。
2. 隐藏终端问题。 即使两个设备都能检测到基站的信号,它们之间可能互相检测不到。设备A和设备B之间有障碍物,或者距离太远,它们互相"隐身"。
3. 暴露终端问题。 设备A正在向基站发送数据,设备B检测到A在发送,就以为信道忙。但实际上,B想发送数据的目标是设备C,而C在另一个方向,B的发送根本不会干扰A。B白白等待了。
核心矛盾:
"无线信道的物理特性导致冲突检测不可靠" vs "仍然需要多台设备共享同一个无线频段"
既然冲突无法可靠检测,那就换一个思路------不要等冲突发生了再去补救,而是想办法让冲突尽量不发生。 这就是CSMA/CA的诞生背景。
CSMA/CA:避免冲突,而非检测冲突
CSMA/CA 和 CSMA/CD 的核心区别
| 对比维度 | CSMA/CD(有线以太网) | CSMA/CA(无线局域网) |
|---|---|---|
| 全称 | Carrier Sense Multiple Access with Collision Detection | Carrier Sense Multiple Access with Collision Avoidance |
| 核心策略 | 先监听,发送时检测冲突,冲突后退避 | 先监听,随机等待,预约信道,确认收到 |
| 冲突处理 | 发生了再处理(反应式) | 尽量减少发生概率(主动式) |
| 为什么不同 | 有线信道可以边发边听 | 无线信道发送时听不到别人 |
CSMA/CA 的核心思想:我不确定会不会冲突,所以我要主动地、谨慎地避免冲突------即使这会牺牲一些效率。
CSMA/CA 的工作流程

几个关键机制:
| 机制 | 作用 | 说明 |
|---|---|---|
| DIFS | 帧间间隔,保证高优先级帧先发 | 数据帧必须等待DIFS,控制帧(如ACK)只需等待更短的SIFS |
| 随机退避 | 避免多个等待的设备同时开始发送 | 即使信道空闲,也必须随机等一段时间再发 |
| RTS/CTS | 预约信道,解决隐藏终端问题 | 发送方和接收方通过短帧握手,"通知"周围设备信道即将被占用 |
| ACK确认 | 确认数据正确收到 | 无线信道出错率高,每次发送都必须确认 |
随机退避:

比喻:
- 有线以太网的CSMA/CD像一群人围着圆桌讨论------大家都在听,谁想说话先说,如果同时开口就互相谦让。
- 无线局域网的CSMA/CA像一个人在空旷的广场上喊话------喊之前先听一下(监听),听到了别人声音就等一等(退避),喊完后一定要对方回一句"听到了"(ACK),如果对方没回就再喊一遍(重传)。
为什么CSMA/CA比CSMA/CD更"保守"?
因为无线信道的出错代价更高。 有线线缆上,信号被约束在物理介质内,外部干扰相对可控。但在开放空间中,无线电波受墙壁反射、微波炉干扰、其他WiFi信号竞争------误码率远高于有线。
保守的设计等同于:
- 每次发送都要确认(ACK),增加了开销
- 即使信道空闲也要随机退避,增加了延迟
- RTS/CTS预约机制占用了额外带宽
但这是值得的。 在一个不可靠的无线信道上,主动避免冲突比被动检测冲突更高效。
802.11的MAC帧格式
无线局域网的帧格式比有线以太网更复杂,这是因为它需要处理更多的控制信息。

802.11 MAC帧的一般格式


各字段说明
| 字段 | 长度 | 说明 |
|---|---|---|
| Frame Control | 2字节 | 帧类型(数据/控制/管理)、协议版本、更多分片标记等 |
| Duration/ID | 2字节 | 预约信道的持续时间,告诉其他设备"我要用多久" |
| Addr1 | 6字节 | 接收端MAC地址(即时的接收方) |
| Addr2 | 6字节 | 发送端MAC地址(即时的发送方) |
| Addr3 | 6字节 | 取决于帧类型,通常是最终目的地 或源地址 |
| Seq Control | 2字节 | 帧序列号,用于去重和重组 |
| Addr4 | 6字节 | 仅在**无线分布式系统(WDS)**中使用,即无线网桥场景 |
| Frame Body | 0-2312字节 | 数据载荷 |
| FCS | 4字节 | CRC校验码 |
为什么有四个地址字段?
这是802.11帧和有线以太网帧最关键的区别之一。
在有线以太网中,帧只有两个地址(源MAC和目的MAC),因为帧只能在同一条线缆上传输,发送方和接收方直接相连。
在无线局域网中,情况更复杂。考虑一个典型的WiFi通信场景:
手机A ←→ 无线路由器 ←→ 互联网上的服务器B
当手机A向服务器B发送数据时:
- Addr1(接收端):无线路由器的MAC地址(即时的接收方)
- Addr2(发送端):手机A的MAC地址(即时的发送方)
- Addr3(最终目的地):服务器B的MAC地址(经过路由器NAT转换后的目的地址)
当无线路由器向手机A转发数据时:
- Addr1(接收端):手机A的MAC地址
- Addr2(发送端):无线路由器的MAC地址
- Addr3(原始源):服务器B的MAC地址
三个地址分别表示:谁在收(即时接收方)、谁在发(即时发送方)、最终是谁的或最初是谁的。这种设计解决了"经过一个中间设备(路由器)中转时,如何保留原始发送方和最终接收方地址"的问题。
Addr4只在无线分布式系统(WDS)中使用------当两个无线路由器通过无线桥接时,需要四个地址来标识即时收发双方加上最终收发双方。
与有线以太网的关键差异
| 对比维度 | 有线以太网(802.3) | 无线局域网(802.11) |
|---|---|---|
| 传输介质 | 双绞线/光纤,信号被约束 | 无线电波,开放空间扩散 |
| 介质访问控制 | CSMA/CD(先听后发,冲突退避) | CSMA/CA(先听后等,预约信道,确认重传) |
| 地址字段 | 2个(源MAC、目的MAC) | 3个或4个(即时收发 + 最终收发) |
| ACK确认 | 不需要(有线信道可靠) | 必须确认,每次发送后等待ACK |
| RTS/CTS | 无 | 有(可选),解决隐藏终端问题 |
| 帧间间隔 | IFG(帧间间隔),96个比特时间 | DIFS、SIFS等多级间隔,保证优先级 |
| 冲突检测 | 边发边听,检测电压异常 | 无法检测,因为信号强度差异和隐藏终端 |
| 最小帧长 | 64字节(保证冲突检测) | 无此限制(因为不做冲突检测) |
| 最大帧长 | 1518字节 | 2312字节(允许更大帧,减少开销) |
| 可靠性机制 | 出错丢帧,交给TCP重传 | 链路层重传,发送方没收到ACK就自动重试 |
📌 小结:无线局域网面对的根本困境是------物理信道更不可靠、冲突无法可靠检测。CSMA/CA因此选择了和CSMA/CD完全不同的道路:用随机退避、信道预约、ACK确认这"三件套"来主动避免冲突,而不是被动检测冲突。802.11的帧格式也因此比以太网更复杂------四个地址字段适应了无线通信中"有中间设备中转"的场景,序列号字段支持了链路层的重传和去重。
📌 数据链路层到此全部结束。回顾这一整章的旅程,我们走过了很多场景:
- 点对点直连 → PPP协议,解决两台机器的帧传输问题
- 共享介质争用 → CSMA/CD,解决多台机器共享一根线时的冲突问题
- 交换式精准转发 → 交换机自学习,每个端口独享带宽,冲突消失
- 逻辑隔离广播域 → VLAN,在一个物理网络里用标签切分出多个虚拟子网
- 无线信道的新挑战 → CSMA/CA,用避免代替检测,用确认对抗不可靠
这条演进之路的核心驱动力是什么?
从冲突域的缩小(集线器→交换机),到广播域的缩小(交换机→VLAN),再到信道类型的切换(有线→无线)------每一次场景变化,都暴露出上一层技术的局限性,催生出新的解决方案。
数据链路层的所有协议,都是在回答同一个问题:在给定的物理环境下,如何在相邻节点之间可靠地、高效地传输帧? 而每一个场景给出了不同的答案,构成了我们现在看到的这个丰富的协议家族。
祝你有开心的一天