无线局域网:Wi-Fi、CSMA/CA与隐藏终端
无线链路的特点
无线链路与有线链路最重要的区别在于信道本身:
- 信号强度递减:电磁波穿过墙壁等物体时会衰减,即使在自由空间中,信号强度也会随距离增大而迅速减小(路径损耗)。
- 干扰:同一频段的其他发送方(例如其他Wi-Fi网络、无绳电话、微波炉)发出的信号会相互干扰。
- 多径传播:电磁波经地面和物体反射后,沿长度不同的路径到达接收方,使接收到的信号变得模糊。
因此,无线链路上的比特差错比有线链路多得多。信噪比(SNR)越高,误比特率(BER)越低;发送方可以根据信道状况动态选择调制方式:信道好时使用高速率的调制,信道差时退回到更稳健、速率更低的调制。正因为差错多,802.11在链路层使用确认和重传,在本地纠正出错的帧。
802.11体系结构
IEEE 802.11无线局域网(Wi-Fi)的基本单元是基本服务集(BSS)。在基础设施模式下,一个BSS包含一个接入点(AP, Access Point)和若干无线站点,AP通过有线以太网连接到交换机或路由器;在自组织(ad hoc)模式下,站点之间直接通信,没有AP。
管理员为每个AP配置一个服务集标识符(SSID),也就是我们在设备上看到的“Wi-Fi名称”,并选择一个信道。站点要接入网络,必须先与一个AP关联:它可以被动扫描,监听AP周期性发送的信标帧;也可以主动扫描,广播探测请求帧,等待AP的探测响应。关联之后,站点通常还要完成身份认证,再用DHCP获得IP地址。
| 标准 | 频段 | 最大速率 |
|---|---|---|
| 802.11b | 2.4 GHz | 11 Mbps |
| 802.11g | 2.4 GHz | 54 Mbps |
| 802.11n(Wi-Fi 4) | 2.4 / 5 GHz | 600 Mbps |
| 802.11ac(Wi-Fi 5) | 5 GHz | 约3.5 Gbps |
| 802.11ax(Wi-Fi 6) | 2.4 / 5 / 6 GHz | 约9.6 Gbps |
所有这些标准都使用相同的媒体访问协议CSMA/CA和相同的链路层帧结构,所以它们可以相互兼容。
为什么不用冲突检测
以太网的CSMA/CD要求适配器边发送边检测冲突。这在无线信道上很难做到:适配器自己发出的信号远强于远处站点传来的信号,发送时几乎听不到其他信号;更重要的是,由于隐藏终端和信号衰减,即使能边发边收,很多冲突在发送方处也根本检测不到。因此802.11不检测冲突,而是尽量避免冲突(CA, Collision Avoidance):一旦开始发送,就把整个帧发完。
知识测验
CSMA/CA
802.11定义了两个时间间隔:短帧间间隔SIFS和分布式帧间间隔DIFS,且。发送一帧的过程是:
- 如果站点侦听到信道空闲,它等待一个DIFS后发送整个帧。
- 否则,站点选取一个随机退避值,并在信道空闲时逐个时隙地减小计数器;信道变忙时计数器冻结,等信道再次空闲DIFS后继续倒数。
- 计数器减到0时(这时信道一定是空闲的),站点发送整个帧,然后等待确认。
- 接收方正确收到帧后,等待一个SIFS就发回ACK。如果发送方没有收到ACK,它认为帧丢失,扩大退避的取值范围后重新进入第2步。
为什么计数器要冻结、而不是像以太网那样在信道空闲时立即发送?以太网能及时检测冲突并中止,代价很小;而802.11一旦冲突就会浪费整个帧的时间。如果两个站都在等待同一次发送结束,立即发送必然冲突;而它们选取的退避值很可能不同,计数器先到0的站先发送,另一个站听到后冻结计数器,下一轮从冻结处接着倒数。
倒计时、冻结、继续:慢动作看CSMA/CA
解锁完整互动实验、进阶解析与精选参考答案。
隐藏终端与RTS/CTS
假设站点A和C都在接入点的覆盖范围内,但由于距离太远或有障碍物遮挡,它们互相听不到对方。A正在向AP发送时,C侦听到的信道是空闲的,它也开始发送,两个帧在AP处发生冲突,A和C却都无法察觉。这就是隐藏终端问题。
802.11提供了一个可选的预约机制:
- 发送方先发送一个很短的请求发送帧(RTS, Request to Send),说明发送数据帧和ACK所需的总时间。
- AP收到RTS后广播一个允许发送帧(CTS, Clear to Send),一方面允许发送方发送,另一方面告诉所有听到CTS的站点:在这段时间内不要发送。这些站点据此设置网络分配向量(NAV)。
- 发送方发送数据帧,AP回复ACK。
隐藏终端听不到发送方的RTS,但一定能听到AP的CTS,所以RTS/CTS解决了隐藏终端问题。即使RTS发生冲突,浪费的也只是很短的RTS的时间。不过RTS/CTS也带来了额外的时延和开销,所以通常只对超过RTS门限的长帧使用。
制造隐藏终端,再用RTS/CTS解决它
解锁完整互动实验、进阶解析与精选参考答案。
知识测验
802.11帧与地址
802.11帧中最特别的是它有4个地址字段。在基础设施模式下常用的是前3个:
| 字段 | 含义 |
|---|---|
| 地址1 | 要在空中接收该帧的无线站点或AP的MAC地址 |
| 地址2 | 在空中发送该帧的站点或AP的MAC地址 |
| 地址3 | AP所连接的路由器接口的MAC地址(帧的原始源或最终目的) |
| 地址4 | 只在AP之间组成无线分布式系统时使用 |
例如,路由器R1向无线主机H1发送数据报时,R1发出的以太网帧以H1的MAC地址为目的地址、以R1的MAC地址为源地址,R1并不知道中间有AP。AP收到后把它转换成802.11帧:地址1为H1、地址2为AP、地址3为R1。H1回复时则相反:地址1为AP、地址2为H1、地址3为R1,AP再把它转换成以R1为目的、以H1为源的以太网帧。
802.11帧中还有持续期字段(用来设置NAV)和序号字段。由于ACK本身也可能丢失,发送方可能会重传接收方已经收到的帧,接收方用序号区分新帧和重复帧。
同一子网内的移动
如果几个AP连接在同一个交换机上、属于同一个IP子网,主机在它们之间移动时可以保持IP地址不变,正在进行的TCP连接也不会中断。主机与新AP关联后,新AP会代表主机发送一个以主机MAC地址为源地址的以太网广播帧,交换机由此更新交换机表,以后发往这台主机的帧就会转发到新AP所在的接口。
54 Mbps中有多少能真正用于传数据?
一个802.11站以54 Mbps发送一个数据帧,并以24 Mbps接收一个14字节的ACK。取DIFS = 34 µs、SIFS = 16 µs、时隙 = 9 µs、退避K = 4个时隙,忽略物理层前导码。
- 对于1500字节的帧,一次完整的交换需要多长时间?该站能达到多大的吞吐量?
- 加上RTS(20字节)和CTS(14字节)重新计算,二者都以24 Mbps发送,并各自跟随一个SIFS。
- 对100字节的帧重复以上两种情况。什么时候值得使用RTS/CTS?
填写802.11的地址字段
主机H1与接入点AP关联,AP通过以太网交换机连接到路由器R1,R1是H1的默认网关。
- R1向H1发送一个IP数据报。写出以太网帧的源、目的MAC地址,以及AP发出的802.11帧的地址1、地址2和地址3。
- H1回复R1。写出H1发出的802.11帧的三个地址,以及AP发出的以太网帧的两个MAC地址。
- 链路层并不是运输层协议,为什么802.11帧中还要带序号?