简介
IEEE 802.11 标准的无线网络俗称 Wi-Fi,Wi-Fi 用于有限的地址范围,比如家庭,办公室,校园等等,信号通过空气传输,在此情况下,Wi-Fi 设计的主要难点是对共享通信介质的协调访问。和 Ethernet 相比,Wi-Fi 支持额外的电源管理模式和安全机制。
-
Wi-Fi 隐藏节点问题
以太网中的节点在接收其他节点数据时,能够同时发送数据。与以太网不同,无线网络中的节点不具备该特性,这使得在无线网络中的冲突检测非常复杂。无线网络中节点通常不能同时收发数据,一个无线节点可能因为太远而不能接收其他节点的传输,这类情况非常复杂。
由于传输媒介和传输范围的影响,Wi-Fi 存在一个隐藏节点问题。假设 A,B,C,D这 4 个节点都只能跟左右邻居节点传送和接收数据。
1、B 可以和 A,C 这 2 个节点传送和接收数据,但不能和 D 节点通信
2、C 可以和 B,D 这 2 个节点传送和接收数据,但不能和 A 节点通信
假设节点 A 和节点 C 都想和节点 B 通信,A 和 C 各自传送一个信息给 B,因为 A 和 C 都在各自的传输范围之外,所以 A 和 C 无法感知对方正在和 B 通信,又因为节点 B 无法同时接收 2 个信号,所以这个时候 A 和 C 的信号会在 B 发生碰撞,和以太网不同的是,A 和 C 都无法侦听到信号碰撞。节点 A 和节点 C 被称作彼此的 隐藏节点。如下图所示。
- Wi-Fi 暴露节点问题
Wi-Fi 除了一个隐藏节点问题也存在另一个相关的暴露节点问题。如下图所示,假设节点 B 要传送信息给节点 A,节点 C 因为听得到节点 B 正在传送信息而发现了节点 B 和节点 A 的通信。节点 C 了解到 B 正在传送,但是下了一个错误的判断,认为节点 C 自己不能传送信息给任何节点。如果此时节点 C 想传送信息给节点 D 是可以,不会造成问题,因为 C 传送给 D 并不会干扰到 A 接收 B 的信息。
-
CSMA/CA
以太网对于信号冲突的问题有一个 CSMA/CD 的算法来处理,CD 是冲突检测(监听链路的空闲状态,当链路成为空闲状态之后再传输,如果信号发生碰撞则退避),而 Wi-Fi 也有遵循一个与以太网的 CSMA/CD 类似的算法。由于存在隐藏节点和暴露节点的问题,Wi-Fi 采用 CSMA/CD (Carrier Sense Multiple Access with Collision Avoidance,载波监听多路访问/碰撞避免)解决这两个问题。 以太网采用的是 CSMA/CD,。
载波监听:在发送 frame 之前,监听信道中是否有信号在传输,如果没有就发送。由于存在隐藏节点的问题,仅仅没有监听到其他节点的信号并不能保证在接收端不会发生冲突。基于此,CSMA/CA 要求接收方成功接收了 frame ,则接收方必须给发送方发送一个 ACK ,如下图所示。
RTS-CTS 机制
如果发生了冲突,那么 frame 将变得无效。所以 802.11 设计了一个 RTS-CTS 机制,这个机制可以在一定程度上解决隐藏节点的问题。
如上图所示,发送端传送资料之前,先和接收端先彼此交换控制 frame,这次交换是用来告知附近所有的节点传送即将要开始了。发送端先送出 RTS(Request to Send,RTS) frame 给接收端,接收端收到 RTS 之后回送一个 CTS(Clear to Send,CTS) frame 。其中 RTS frame 和 CTS frame 包含发送端和接收端想要保留传输媒介多长时间的信息。
任何可以听到 CTS frame 的节点表示节点离接收端很近,所有可以听到 CTS frame 的节点在 CTS 指定的时间内都不可以传送数据,防止信号碰撞。
任何可以听到 RTS frame 的节点表示节点离发送端很近,所有可以听到 RTS frame 的节点在 RTS 指定的时间内都不可以传送数据,防止信号碰撞。在指定时间到达后,经过一个小的时间间隔,信道变为可用,其他节点可以尝试发送数据。如果多个节点同时侦测到线路是闲置的且同时去尝试发送 RTS frame,那么这些节点的 RTS 会发生信号碰撞,一段时间后,当节点没有收到 CTS frame,节点就会知道信号发生了碰撞。每个节点就会随机等待一段时间再尝试一次,等待时间由 exponential backoff algorithm (指数退避算法)决定,这点和以太网一样。
分布式系统
网络中所有的节点并不是完全相同的,有些节点可以移动(笔记本电脑,手机),有些节点连接到有线网络基础设施上,802.11称这些基站为接入点(Access Point,AP),多个 AP 通过分布式系统(distribution system,DS)彼此相连,一个 DS 连接多个 AP,一个节点只和一个 AP 相连。分布式网络运行在ISO架构的第2层链路层,它与无线链路在同一个协议层运行。分布式系统如下图所示。
每个节点与各自的一个 AP 相连接,如果 2 个节点彼此可达,那么它们就能够直接通信,如下图所示。
节点 A 要传送数据给节点 C,那么传送线路 A --> AP1 --> C。
节点 A 要传送数据给节点 E,那么传送线路 A --> AP1 --> DS --> AP3 --> E 。
- 扫描
在 802.11 中,节点如何选择它们的 AP 呢?若节点从一个 AP 的传输范围移动到另一个 AP 的传输范围,那么这个时候节点又是怎么选择 AP 呢?
如上图所示,节点选择 AP 的技术称为 扫描(scanning), 节点通常在想要加入一个网络或者想要更换其他 AP 的时候执行扫描过程,扫描过程有 4 个步骤。
1)节点发送 Probe frame,
2)所有收到 Probe 的 AP 会回传 Probe Response frame,
3)节点从中选择一个 AP,然后发送一个 Association Request frame,
4)AP 通过 Association Response frame 来应答。
-
主动扫描 (Active Scanning)
如上图所示,如果节点 C 从 AP1 的服务范围移动到 AP2 的服务范围,在节点 C 移动的时候,节点 C 会先发送出 Probe frame, AP2 会回送 Probe Response frame,在某个位置时,AP2 对于节点 C 的信号强度强于 AP1,节点 C 连上了 AP2。从节点的角度来看,节点主动寻找 AP 的过程称为主动扫描。
-
被动扫描 (Passive Scanning)
AP 定期发送 Beacon frame,用于广播 AP 的能力(Beacon frame 里面包含 AP 的传输速度),从节点的角度来说,这属于被动扫描,节点可以根据 Beacon frame 的内容然后发送 Association Request frame 给此 AP,达到切换 AP 的目的。
Frame 格式
1、来源和目的地址 Addr1,Addr2,Addr3,Addr4 各 48 bit
2、Data,最多 2312 bytes
3、CRC 错误检查码 32 bit
4、控制栏位 Frame Control 16 bit。Type 和 Subtype 栏位描述这个 Frame 是 RTS 或 CTS 或者是扫描演算法正在使用的,接着的 2 个 bit 栏位描述 Frame 前往 DS 和来自 DS
5、Frame 包含 4 个地址,这 4 个地址的解读依赖于 Frame Control 里面的 To DS 和 From DS 这 2 个栏位的设定值。
最简单的例子,当 frame 被一个节点直接传送到另一个节点,To DS 和 From DS 这 2 个 1 bit 栏位都设置为 0 ,此时 Add1 表示目的地节点,而 Addr2 表示来源节点。最复杂的是 To DS 和 From DS 这 2 个 1 bit 栏位都设置为 1,此时表示 frame 从一个无线节点 --> DS --> 另一个无线节点。
下图是 To DS 和 From DS 的设置值对应的各个 Addr 节点。
总结
作为网络方面的简单入门内容,文章主要是介绍 Wi-Fi 的简单知识。这篇博客内容总结于黄能富教授的《CS01060 2017-秋季-計算機網路概論》课程,博客截图来源于课程 PPT。