1. WiFi 基础概念:从入门到实战
大家好,我是你们这门课的老朋友。今天咱们聊聊 WiFi 最基础的东西。别小看这些概念,我见过不少做了三五年开发的同事,在信道干扰、频段选择上栽跟头。说白了,基础不牢,地动山摇。
1.1 什么是 WiFi?
WiFi,全称 Wireless Fidelity,其实就是无线保真。但你别被这个高大上的名字唬住。它本质上就是一根看不见的网线,用无线电波代替了铜缆。
我习惯把 WiFi 理解成「空气里的网线」。你的手机、电脑、智能音箱,都靠它跟路由器「说话」。这个「说话」遵循一套国际标准——IEEE 802.11 系列。嗯,记住这个编号,后面我们会反复提到它。
核心要点:WiFi = 无线局域网通信技术,基于 IEEE 802.11 标准族。
1.2 WiFi 技术演进:从 a 到 be
WiFi 技术一路走来,经历了多次迭代。我刚开始做 Android 开发那会儿,主流还是 802.11n,也就是 WiFi 4。现在回头看,那时候的网速简直像蜗牛爬。
下面这张表,帮你快速理清各代 WiFi 的区别:
| 标准 | 商用名 | 推出年份 | 最大速率 | 频段 | 核心特性 |
|---|---|---|---|---|---|
| 802.11a | WiFi 1 | 1999 | 54 Mbps | 5 GHz | OFDM 技术 |
| 802.11b | WiFi 2 | 1999 | 11 Mbps | 2.4 GHz | DSSS 技术 |
| 802.11g | WiFi 3 | 2003 | 54 Mbps | 2.4 GHz | 兼容 b,速率提升 |
| 802.11n | WiFi 4 | 2009 | 600 Mbps | 2.4/5 GHz | MIMO、双频 |
| 802.11ac | WiFi 5 | 2013 | 3.5 Gbps | 5 GHz | MU-MIMO、波束成形 |
| 802.11ax | WiFi 6 | 2019 | 9.6 Gbps | 2.4/5/6 GHz | OFDMA、高密场景优化 |
| 802.11be | WiFi 7 | 2024 | 46 Gbps | 2.4/5/6 GHz | 320MHz 带宽、4096-QAM |
你可能会问:为什么从 a 到 be 跳了这么多字母?其实中间还有 802.11d、e、h 等标准,但它们主要针对特定场景(如国际漫游、QoS),不是消费级主力。我们做 Android 开发,重点盯住 n/ac/ax/be 这四个就够了。
我的经验:在 Android 系统里,判断设备支持哪代 WiFi,可以读 /proc/net/wireless 或者用 WifiManager 的 getSupportedFeatures()。我曾经在一个项目里,就因为没判断设备是否支持 5GHz,导致用户连不上公司的高速网络,被吐槽了好久。
1.3 WiFi 频段:2.4GHz vs 5GHz vs 6GHz
频段,说白了就是 WiFi 工作的「车道」。不同频段有不同脾气。
- 2.4 GHz:穿墙能力强,覆盖广。但干扰也大——微波炉、蓝牙、甚至邻居家的 WiFi 都挤在这条道上。我住的老小区,晚上 2.4GHz 信道简直堵成晚高峰。
- 5 GHz:速度快,干扰少。但穿墙能力弱,隔一堵墙信号就掉一半。适合近距离高速传输。
- 6 GHz:WiFi 6E 和 WiFi 7 的新地盘。干净、宽敞、速度快。但覆盖范围更小,目前支持的设备还不多。
我个人习惯:家里路由器开双频合一,手机自动切换。但在做 Android 开发时,我建议你显式让用户选择频段。为什么?因为有些 IoT 设备只支持 2.4GHz,你强行连 5GHz 就掉线了。
避坑指南:我曾经在开发一个智能家居 App 时,配网流程一直失败。查了两天才发现,手机默认连了 5GHz,而智能灯泡只认 2.4GHz。后来我在代码里加了频段过滤,问题才解决。
1.4 WiFi 信道与干扰
信道,就是频段里划分出来的小通道。2.4GHz 频段有 13 个信道(中国),5GHz 有更多。但问题来了:相邻信道会互相干扰。
拿 2.4GHz 举例,信道 1、6、11 是互不重叠的。其他信道或多或少都有重叠。你想想看,如果邻居家路由器用了信道 3,你家用了信道 4,那你们两家就在互相「抢话」——这就是同频干扰。
干扰的后果是什么?丢包、延迟、网速暴跌。在 Android 系统里,你可以用 WifiManager 的 startScan() 扫描周围 AP,然后看每个信道的占用情况。
// 示例:扫描并打印周围 WiFi 信道
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
wifiManager.startScan();
List<ScanResult> results = wifiManager.getScanResults();
for (ScanResult result : results) {
int channel = wifiManager.calculateChannelFrequency(result.frequency);
Log.d("WiFi", "AP: " + result.SSID + " 信道: " + channel);
}
这段代码很简单,但很实用。我经常用它来排查用户反馈的「WiFi 慢」问题。很多时候,换个信道就解决了。
核心建议:在 Android 开发中,如果 App 涉及 WiFi 管理,一定要提供信道检测和切换功能。别让用户手动去路由器后台改,那体验太差了。
知识体系总览
下面这张图,帮你把本章内容串起来。我画图时习惯把核心概念放在中间,外围是它的分支。这样一看就明白 WiFi 基础到底包含什么。
好了,这一章就到这里。记住:WiFi 不是玄学,它是可以测量、可以优化、可以掌控的技术。下一章我们会深入 Android WiFi 的系统架构,看看这些概念在代码层面是怎么落地的。