← 返回 计算机网络原理

计算机网络原理

第七章 第1节

第七章:无线与移动网络(一)

1. 这一章到底在讲什么?

前面我们默认通信链路大多是有线的,比如:

主机 —— 网线 —— 交换机 —— 路由器

但是无线网络变成了:

手机 / 笔记本 ))) 空气 ))) AP / 基站

所以问题变了。

有线网络里,线缆比较稳定;无线网络里,信号在空气中传播,会遇到:

距离变远,信号变弱;

墙、桌子、人、车会阻挡;

多个设备同时发,会互相干扰;

主机可能移动;

不同位置听到的信号不一样。

所以第七章前半部分重点是:

无线链路为什么难?WiFi 是怎么解决共享信道问题的?

2. 无线网络中的基本组件

无线网络主要有三个东西。

2.1 无线主机

无线主机就是:

手机;

笔记本;

平板;

IoT 设备;

车载设备。

它们运行应用,也有协议栈。

注意:

无线主机不一定是移动的。

比如家里的台式机插了无线网卡,它是无线主机,但不移动。

2.2 基站 / AP

基站可以理解成:

无线设备连接到有线网络的入口。

在不同场景下叫法不同:

场景 | 名字 WiFi | AP,Access Point 蜂窝网络 | 基站,base station 4G/5G | eNodeB / gNodeB

它负责和无线主机通信,同时连接到有线网络基础设施。

比如你手机连 WiFi:

手机 ))) AP —— 交换机 —— 路由器 —— Internet

AP 就像无线世界和有线世界之间的桥。

2.3 无线链路

无线链路就是:无线主机 ))) AP / 基站

或者:无线主机 ))) 无线主机

无线链路的特点是:

速率不同;

距离不同;

频段不同;

抗干扰能力不同。

比如:

技术 | 大致特点 Bluetooth | 距离短,速率低 WiFi | 中短距离,速率较高 4G/5G | 覆盖范围大,移动性强 卫星 | 范围很大,延迟高

3. 无线网络分类

单跳 多跳 有基础设施 WiFi / 蜂窝网络 mesh network 无基础设施 Bluetooth / ad hoc MANET / VANET

第七章 第1节 配图 1

我们用朴素话解释。

3.1 有基础设施 + 单跳

这是最常见的。

比如 WiFi:

手机 ))) AP —— Internet

手机只需要无线连接到 AP,后面就走有线网络。

蜂窝网络也是类似:

手机 ))) 基站 —— 运营商核心网 —— Internet

这种模式特点:

有中心节点,主机通过 AP 或基站接入网络。

3.2 有基础设施 + 多跳

比如无线 mesh 网络。

有一些节点既可以接入主机,也可以帮其他节点中继。

主机 ))) 节点A ))) 节点B ))) Internet

比单跳复杂,因为中间节点还要帮别人转发。

3.3 无基础设施 + 单跳

比如蓝牙。

两个设备直接通信:

耳机 ))) 手机

没有 AP,也没有基站。

3.4 无基础设施 + 多跳

比如 MANET、VANET。

MANET:移动自组织网络;

VANET:车载自组织网络。

节点之间自己组成网络,还要相互转发。

比如车和车之间通信:

车A ))) 车B ))) 车C

这种最复杂,因为:

没有中心;

节点还会移动;

路由经常变化。

4. 基础设施模式和自组织模式

4.1 基础设施模式

基础设施模式就是:有 AP 或基站。

比如 WiFi 里面:

笔记本 ))) AP —— 有线网络

特点:

主机之间通常不直接通信;

都通过 AP 或基站中转;

移动时可能要切换 AP 或基站;

AP / 基站负责接入控制和资源管理。

4.2 自组织模式

自组织模式就是:

没有 AP 或基站,节点自己组网。

比如几个笔记本直接无线互联。

特点:

节点之间直接通信;

节点可能帮别人转发;

网络拓扑容易变化;

路由更难。

5. 无线链路为什么难?

这是第七章前半部分的核心。

有线链路里,信号沿着线走。

无线链路里,信号在空气中传播,所以问题很多。

5.1 信号衰减

距离越远,信号越弱。

可以理解:离 AP 越远,WiFi 越差

原因是无线电磁波传播时能量会扩散,还会被墙、人体、家具吸收。

所以:距离增加,接收信号强度下降。

第七章 第1节 配图 2

5.2 干扰

无线频段是共享资源。

比如 2.4GHz 频段里可能有:

WiFi;

蓝牙;

微波炉;

其他邻居家的 WiFi;

无线鼠标键盘。

这些都会产生干扰。

所以即使离 AP 不远,也可能因为旁边干扰太多,网络很差。

5.3 多径传播

无线信号不是只走一条直线。

它可能被墙壁、地面、桌子反射,形成多条路径。

例如:

AP 直接到手机 AP → 墙壁反射 → 手机 AP → 地面反射 → 手机

这些信号到达时间略有不同,会叠加在一起。

可能增强,也可能抵消。

所以会出现:明明只挪了一小步,信号突然变好或变差。

这就是多径带来的影响。

6. SNR 和 BER

6.1 SNR:信噪比

第七章 第1节 配图 3

SNR 是:

SNR=SNSNR=\frac{S}{N}

S 是 signal,信号功率。

N 是 noise,噪声功率。

通常用 dB 表示:

SNR(dB)=10log10SNSNR(dB)=10{log}_{10}\frac{S}{N}

可以这样理解:SNR 越大,信号比噪声强得越多,通信越可靠。

比如:

老师声音很大,教室很安静 → SNR高 老师声音很小,教室很吵 → SNR低

6.2 BER:误码率

BER 是:

BitErrorRateBitErrorRate

误码率。

意思是:传输的 bit 里面,有多少比例出错。

SNR 和 BER 的关系大概是:

SNR 越高 → BER 越低 SNR 越低 → BER 越高

所以无线系统要根据当前 SNR 调整传输方案。

7. 无线通信中的控制手段

无线通信想提高性能,主要调几个东西:

信号强度 调制方式 传输速率 能耗 误码率

朴素理解:如果信道条件好:信号强,干扰少,那就可以用高速率、高阶调制。

如果信道条件差:信号弱,噪声大,那就要降低速率,换更稳的调制方式。

所以 WiFi 里面会看到:

离路由器近,速率高; 离路由器远,速率低。

是系统根据信道质量做自适应。

8. 隐藏终端问题

第七章 第1节 配图 4

这是无线网络非常经典的问题。

假设有 A、B、C 三个节点:

A ))) B ))) C

A 能听到 B。

C 能听到 B。

但是 A 和 C 相距较远,互相听不到。

现在:

A 想给 B 发数据;

C 也想给 B 发数据;

A 听不到 C,所以以为信道空闲;

C 听不到 A,也以为信道空闲;

结果 A 和 C 同时发,B 处发生碰撞。

这叫:隐藏终端问题。

重点:

发送方听不到另一个发送方,但它们的信号会在接收方那里相撞。

也就是:A 和 C 彼此隐藏,但都能干扰 B。

9. 暴露终端问题

还有一个暴露终端问题。

假设:

A ))) B C ))) D

B 正在给 A 发数据。

C 听到了 B 的发送,于是 C 以为信道忙,不敢给 D 发。

但其实:

C 给 D 发;

B 给 A 发;

这两个通信可能不会互相干扰。

所以 C 本来可以发送,却因为听到了 B 而不敢发送。

这叫:暴露终端问题。

重点:节点以为自己会造成干扰,其实不会,于是白白不发送,降低效率。

10. CDMA:码分多址

CDMA 是:

CodeDivisionMultipleAccessCodeDivisionMultipleAccess

码分多址。

它的核心思想是:

大家可以同时用同一个频段发送,但是每个人用不同的“码”来区分。

类比一下:

技术 | 类比 TDMA | 不同人分时说话 FDMA | 不同人去不同房间说话 CDMA | 大家同时说话,但每个人说不同语言

10.1 CDMA 的基本思想

每个站点分配一个码片序列。

比如站点 A 的码是:

A=(111+1+11+1+1)A=(-|1|-|1|-|1|+|1+1-1+1+1)

如果 A 要发送 bit 1,就发送自己的码:

1A1⇒A

如果 A 要发送 bit 0,就发送自己码的反码:

0A0⇒-A

也就是:

A=(+1+1+111+111)-A=(+|1|+|1|+|1|-|1-1+1-1-1)

10.2 为什么能区分不同用户?

因为不同用户的码要满足正交性。

比如 A 和 B 的码正交:

AB=0A⋅B=0

自己的码和自己点乘:

AA=1A⋅A=1

这里里用了平均内积:

ST=1mi=1mSiTiS⋅T=\frac{1}{m}\mathop{\sum }\limits_{i=1}^{m}{S}_{i}{T}_{i}

所以:

自己的码和自己算 → 1 自己的码和别人算 → 0 自己的码和自己反码算 → -1

这个就是 CDMA 能从混合信号里分离出目标用户数据的原因。

11. CDMA 解码例子

假设同时有三个用户 A、B、C 发送。

无线信道里收到的信号是叠加结果:

S=A+B+CS=A+B+C

现在接收方想知道 C 发了什么。

就拿收到的总信号 S 和 C 的码做内积:

SC=(A+B+C)CS⋅C=(A+B+C)⋅C

展开:

SC=AC+BC+CCS⋅C=A⋅C+B⋅C+C⋅C

因为码之间正交:

AC=0BC=0CC=1A⋅C=0B⋅C=0C⋅C=1

所以:

SC=1S⋅C=1

这说明 C 发的是 bit 1。

如果算出来是:

SC=1S⋅C=-1

说明 C 发的是 bit 0。

如果算出来接近 0,说明 C 没有发送。

12. CDMA 的理解

CDMA

它就是:

给每个用户一个互相正交的码。 发送时用码表示 bit。 接收时用对应码做内积,把目标用户信号提出来。

CDMA 如何让多个用户同时发送?

答:使用不同的正交码片序列。

为什么不同用户不会互相影响?

答:理想情况下码片序列正交,内积为 0。

如何恢复某个用户的数据?

答:接收混合信号与该用户码片序列做内积。

13. IEEE 802.11:WiFi

802.11 就是 WiFi 的标准族。

不同版本速率、频段、范围不同。

标准 | 常见名字 | 频段 | 特点 802.11b | WiFi 早期 | 2.4GHz | 11 Mbps 802.11g | WiFi 早期 | 2.4GHz | 54 Mbps 802.11n | WiFi 4 | 2.4/5GHz | 更高速 802.11ac | WiFi 5 | 5GHz | 更高吞吐 802.11ax | WiFi 6 | 2.4/5GHz | 高效率

重点是:

802.11 是无线局域网协议,链路层使用 CSMA/CA,而不是以太网的 CSMA/CD。

14. 802.11 LAN 结构

WiFi 有两种模式:

14.1 基础设施模式

这是最常见的。

无线主机 ))) AP —— switch/router —— Internet

一个 AP 加上它服务的一组无线主机,叫:

BSS:BasicServiceSetBSS:BasicServiceSet

基本服务集。

比如:

BSS1:AP1 + 一些主机 BSS2:AP2 + 一些主机

14.2 自组织模式

没有 AP。

无线主机之间直接通信。

比如:笔记本A ))) 笔记本B

15. WiFi 连接 AP:关联 associate

手机或笔记本连 WiFi,本质是:

主机和某个 AP 建立关联。

关联之前,主机要先发现附近有哪些 AP。

15.1 被动扫描

被动扫描就是:AP 主动发信标帧 beacon,主机被动听。

过程:

AP 周期性发送 beacon frame;

beacon 里包含 SSID、AP MAC 地址等信息;

主机听到 beacon;

主机选择一个 AP;

主机发送关联请求;

AP 返回关联响应。

像打开手机 WiFi 列表,看到很多 WiFi 名字,本质上就是 AP 在广播自己的存在。

15.2 主动扫描

主动扫描就是:主机主动问:附近有哪些 AP?

过程:

主机广播 probe request;

AP 收到后返回 probe response;

主机选择 AP;

主机发送关联请求;

AP 发送关联响应。

对比:

扫描方式 | 谁先发 被动扫描 | AP 先发 beacon 主动扫描 | 主机先发 probe request

16. 802.11 为什么不用 CSMA/CD?

第六章讲以太网时,我们学过:

CSMA/CDCSMA/CD

也就是:先听再发,边发边检测碰撞。

但是 WiFi 用的是:

CSMA/CACSMA/CA

也就是:先听再发,尽量避免碰撞。

为什么 WiFi 不用 CSMA/CD?

核心原因:无线中很难边发边检测碰撞。

16.1 原因一:发送信号太强,接收别人的信号太弱

无线网卡自己发送时,自己的信号对自己来说非常强。

别人的信号相对很弱。

所以发送时很难同时听清别人有没有也在发。

就像:

自己大喊的时候,很难听清远处别人是不是也在说话。

16.2 原因二:隐藏终端问题

A 听不到 C。

即使 A 发送时没检测到 C,也不代表 B 那里不会冲突。

所以无线里的碰撞判断更困难。

16.3 原因三:碰撞代价高

无线中一旦长数据帧碰撞,整段数据都浪费了。

所以 WiFi 的思想不是:

碰撞了再处理。

而是:尽量提前避免碰撞。

这就是 Collision Avoidance。

17. CSMA/CA 的基本流程

CSMA/CA 可以这样理解:

先听一会儿,没人说话再随机等一等,然后发送。 收到 ACK 才算成功。

流程如下。

17.1 发送方流程

如果主机要发送数据:

第一步,侦听信道。

如果信道空闲持续 DIFS 时间,就发送整个帧。

信道空闲 DIFS → 发送 data

第二步,如果信道忙,就随机选择一个回退值。

比如选择:

backoff=5backoff=5

只有在信道空闲时,倒计时才减少。

如果信道又忙了,倒计时暂停。

等信道再次空闲,再继续倒计时。

倒计时到 0 后,发送数据帧。

17.2 接收方流程

接收方收到数据后,如果帧正确,就等一个更短的时间:

SIFSSIFS

然后发送 ACK。

所以:发送方 data → 接收方 SIFS → ACK

注意:

SIFS<DIFSSIFS<DIFS

这表示 ACK 的优先级更高。

因为别人要等 DIFS,而 ACK 只等 SIFS,所以 ACK 能抢先发出去。

18. 为什么需要 ACK?

以太网通常不在链路层 ACK。

但是 WiFi 需要 ACK。

原因:

无线链路不可靠,发送方不知道对方是否真的收到了。

可能的情况:

数据帧丢了;

数据帧碰撞了;

数据帧被干扰了;

接收方收到了但 ACK 丢了。

所以 WiFi 中:

收到 ACK → 认为成功 没收到 ACK → 认为失败,重传

19. 为什么要随机回退?

假设两个主机 A、B 都等到信道空闲。

如果都立刻发送:

A 发送 B 发送

那就又撞了。

所以大家要随机等一段时间。

比如:

A 随机等 3 个时隙 B 随机等 7 个时隙

那么 A 先发送,B 听到信道忙,就暂停。

这样就避免了同时发送。

这和第六章以太网的二进制指数退避有点像,但 WiFi 的目标更偏向:

事前避免碰撞。

20. CSMA/CA 大体流程

先听信道 空闲等DIFS 忙则随机退避 只在空闲时倒计时 倒计时到0发送 接收方等SIFS回ACK 没ACK则扩大窗口重传

21. CSMA/CA 仍然无法完全避免冲突

CA 是避免冲突,不是消灭冲突。

无线里仍然可能冲突。

比如隐藏终端:

A ))) AP ((( B

A 和 B 互相听不到。

A 觉得信道空闲,B 也觉得信道空闲。

它们可能都发给 AP,结果 AP 处冲突。

所以还需要 RTS/CTS。

22. RTS/CTS 机制

RTS/CTS 的核心思想是:

发送长数据之前,先用短控制帧预约信道。

RTS:

RequestToSendRequestToSend

请求发送。

CTS:

ClearToSendClearToSend

允许发送。

22.1 RTS/CTS 流程

假设 A 要给 AP 发数据。

A 先发 RTS 给 AP;

AP 收到后广播 CTS;

周围节点听到 CTS 后,知道 AP 接下来要接收 A 的数据;

其他节点在预约时间内保持安静;

A 发送 DATA;

AP 返回 ACK。

流程:

A → AP:RTS AP → 所有人:CTS A → AP:DATA AP → A:ACK

22.2 RTS/CTS 解决什么问题?

主要解决隐藏终端问题。

比如:

A ))) AP ((( B

A 和 B 互相听不到,但都能听到 AP。

如果 A 发 RTS,AP 回 CTS。

B 虽然听不到 A 的 RTS,但能听到 AP 的 CTS。

于是 B 知道:

AP 现在要接收别人发来的数据,我先别发。

这样就减少了隐藏终端导致的数据帧冲突。

22.3 RTS 本身会不会冲突?

会。

比如 A 和 B 同时发 RTS。

但是 RTS 很短,就算冲突,浪费也小。

这比两个很长的数据帧撞掉更划算。

所以 RTS/CTS 的思想是:用短帧的小代价,保护长帧的大传输。

23. RTS/CTS 的代价

RTS/CTS 也不是永远都用。

因为它多了控制开销:

RTS + CTS + DATA + ACK

如果数据帧本来很短,用 RTS/CTS 反而不划算。

所以实际系统里通常是:

长帧更适合 RTS/CTS,短帧可以直接发。

24. 本部分核心对比:以太网 和 WiFi

对比 | 有线以太网 | WiFi 802.11 介质 | 网线 | 空气 共享信道问题 | 有,但现代交换机减少很多 | 明显存在 MAC 协议 | CSMA/CD | CSMA/CA 碰撞处理思想 | 检测碰撞后停止 | 尽量提前避免碰撞 是否容易检测碰撞 | 容易 | 很难 是否需要链路层 ACK | 通常不需要 | 需要 典型问题 | 碰撞域 | 隐藏终端、暴露终端、信号衰减

以太网是“边发边听,撞了就停”; WiFi 是“发之前多等等,尽量别撞,收不到 ACK 就重传”。

25. 这部分考试重点整理

25.1 无线链路特点

信号衰减 干扰 多径传播 SNR 和 BER 权衡 隐藏终端 暴露终端

25.2 CDMA

不同用户使用不同正交码 发送1:发送码片序列 发送0:发送反码 接收端用对应码做内积恢复数据

公式:

ST=1mi=1mSiTiS⋅T=\frac{1}{m}\mathop{\sum }\limits_{i=1}^{m}{S}_{i}{T}_{i}

结果:

与自己的码点乘 = 1 与别人码点乘 = 0 与自己反码点乘 = -1

25.3 WiFi 802.11

AP BSS associate passive scanning被动扫描 active scanning 主动扫描 CSMA/CA ACK RTS/CTS

25.4 CSMA/CA

监听信道 空闲DIFS后发送 忙则随机回退 倒计时只在空闲时减少 发送整个帧 接收方SIFS后ACK 没收到ACK就重传

25.5 RTS/CTS

RTS:请求发送 CTS:允许发送 目的:缓解隐藏终端问题 思想:用短控制帧预约信道,避免长数据帧碰撞

26. 总结

无线网络最大的问题是“空气是共享的,而且每个人听到的空气状态还不一样”。 所以 WiFi 不能像有线以太网一样边发边检测碰撞,而是采用 CSMA/CA:先听、随机等、发完等 ACK。 为了解决隐藏终端问题,还可以用 RTS/CTS 先预约信道。 CDMA 则是另一种思路:大家同时发,但用不同正交码把用户区分开。

下一部分就可以继 802.11 帧结构、移动性、4G/5G 蜂窝网络、移动 IP 这些。