[ 计算机网络 | 第三章 ] 数据链路层 06 无线局域网

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确认 确认数据正确收到 无线信道出错率高,每次发送都必须确认

随机退避:

比喻

  1. 有线以太网的CSMA/CD像一群人围着圆桌讨论------大家都在听,谁想说话先说,如果同时开口就互相谦让。
  2. 无线局域网的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),再到信道类型的切换(有线→无线)------每一次场景变化,都暴露出上一层技术的局限性,催生出新的解决方案。

数据链路层的所有协议,都是在回答同一个问题:在给定的物理环境下,如何在相邻节点之间可靠地、高效地传输帧? 而每一个场景给出了不同的答案,构成了我们现在看到的这个丰富的协议家族。

祝你有开心的一天

相关推荐
迈威通信14 小时前
储能BMS、PCS设备协议繁多,工业网关该如何选型才能支撑边缘计算?
网络·人工智能·安全·边缘计算·信息与通信
chenzhen_090714 小时前
WebSocket
网络·websocket·网络协议
handler0115 小时前
【Linux】五种IO模型详解
linux·运维·服务器·c语言·网络·笔记·php
ylscode15 小时前
联想驱动程序暗藏内核级杀器:BYOVD攻击链下的EDR防护溃堤实录
网络·安全·安全威胁分析
运维行者_20 小时前
Applications Manager中的Redis监控
大数据·服务器·数据库·人工智能·网络协议
祁白_1 天前
[0xV01D]_Night Traffic_writeUp
网络·安全·ctf·writeup
xingyuzhisuan1 天前
网络 Token 常见故障原理,基础排查科普
运维·服务器·网络·php
北京耐用通信1 天前
自动化工程师必修课:耐达讯自动化Modbus TCP转PROFIBUS协议转换的核心逻辑与应用
人工智能·物联网·网络协议·自动化·信息与通信
学习3人组1 天前
企业交换机OSPF路由协议配置与防护
网络