硬件基础:Wi-Fi通信的“身体”
要理解Wi-Fi,首先要明白它的物理组成部分,在安卓手机上,这主要包括:

-
Wi-Fi芯片 (SoC - System on Chip):
- 这是Wi-Fi的核心,通常和蓝牙、GPS等其他无线模块集成在一个芯片上(称为“Combo Chip”)。
- 它负责所有物理层和数据链路层的工作,包括射频信号的收发、调制解调、信道选择、数据加密/解密等。
- 它就像一个精通无线通信语言的“翻译官”和“信号兵”。
-
天线:
- Wi-Fi芯片产生的电信号非常微弱,需要天线将其转换成电磁波在空中传播,反之亦然。
- 现代手机通常内置多根天线,用于MIMO (Multiple-Input Multiple-Output) 技术,即同时使用多个天线收发数据,从而成倍地提升速度和稳定性,你手机顶部或底部看到的几个小孔,可能就是天线的一部分。
-
CPU 和内存:
- CPU 运行安卓操作系统和应用程序,负责处理高层协议逻辑和应用数据。
- 内存作为数据缓冲区,用于在Wi-Fi芯片和CPU之间临时存储数据包。
简单比喻:如果把Wi-Fi通信比作寄一封信。

- Wi-Fi芯片 = 邮局(负责打包、写地址、盖上邮戳、分拣信件)。
- 天线 = 邮递员(负责把信件从邮局送到你家,也把你家的信件带回邮局)。
- CPU = 你(决定要寄什么信,并阅读收到的信)。
软件协议栈:Wi-Fi通信的“语言和规则”
硬件只是基础,真正让Wi-Fi能够有序工作的是一套复杂的软件协议栈,它遵循OSI(开放系统互联)模型,但Wi-Fi主要涉及底下的几层。
-
物理层:
- 工作:处理最底层的无线信号,负责将数字0和1转换成无线电波,并在特定的频率(信道)上发射出去,同时也负责接收无线电波,并将其还原成数字0和1。
- 技术:定义了不同的Wi-Fi标准(如802.11n, 802.11ac, 802.11ax),它们决定了速度、频段(2.4GHz或5GHz)和调制方式。
-
数据链路层 - MAC子层:
- 工作:这是Wi-Fi最核心的软件部分,它管理着“谁可以在什么时候说话”。
- 核心功能:
- CSMA/CA (载波侦听多路访问/冲突避免):这是Wi-Fi解决“多人同时说话”问题的关键机制,设备在发送数据前,会先“听”一下信道是否空闲,如果空闲,就等一个随机时间再发送,以避免冲突,这比以太网的CSMA/CD(冲突检测)更复杂,因为无线环境难以同时收发。
- 关联:你的手机必须先“握手”并“注册”到路由器上,才能正式加入网络,这个过程就是关联。
- 加密/解密:负责处理WPA2/WPA3等加密协议,确保你的数据不会被轻易窃听。
- 分段与重组:如果上层发来的数据包太大,超过了Wi-Fi单次能发送的尺寸,MAC层会把它切成小块(分段)发送,接收端再重新拼起来。
-
网络层:
(图片来源网络,侵删)- 工作:负责逻辑寻址和数据包的路由。
- 核心协议:IP协议,你的手机和路由器都会被分配一个IP地址(如
168.1.100),IP协议确保数据包能从你的手机正确地发送到互联网上的另一台设备(如8.8.8)。
-
传输层:
- 工作:提供端到端的数据传输服务,确保数据的完整性和顺序。
- 核心协议:
- TCP (传输控制协议):提供可靠的、面向连接的服务,它会进行三次握手建立连接,并通过确认、重传、流量控制等机制,确保数据不丢失、不重复、按顺序到达,适用于网页浏览、文件下载等对准确性要求高的场景。
- UDP (用户数据报协议):提供不可靠的、无连接的服务,它只管发,不管对方是否收到,速度快,开销小,适用于视频通话、在线游戏等对实时性要求高,能容忍少量丢包的场景。
-
应用层:
- 工作:直接面向用户的应用程序。
- 例子:你的浏览器、微信、抖音等,它们使用应用层的协议(如HTTP/HTTPS用于网页,WebSocket用于实时通信)来发送和接收最终的数据。
安卓系统中的实现:Wi-Fi的“大脑和神经”
安卓操作系统将这些协议和硬件管理起来,为用户提供统一的接口,主要涉及以下几个关键组件:
-
硬件抽象层:
- 作用:安卓的开放性意味着它可以运行在不同厂商的硬件上,HAL提供了一个标准接口,让上层的安卓框架可以调用不同厂商的Wi-Fi芯片驱动,而无需关心底层芯片的具体型号。
- 工作:框架层发出“开启Wi-Fi”的指令,HAL将其翻译成特定芯片能听懂的语言。
-
Wi-Fi Framework (Wi-Fi框架):
- 作用:这是安卓Wi-Fi管理的核心,位于
frameworks/opt/net/wifi目录下。 - 主要组件:
- Supplicant (wpa_supplicant):这是一个开源的客户端程序,运行在安卓系统后台,它的唯一职责就是处理Wi-Fi的连接、认证和加密,它会与路由器进行“四次握手”(WPA2/WPA3),完成密钥交换和安全认证。
- Wi-Fi Service (Wi-Fi服务):安卓系统的一个系统服务,作为所有Wi-Fi操作的“总管家”,它接收来自Settings(设置)或其他App的请求(如“扫描网络”、“连接到XX网络”),然后调用Supplicant去执行具体操作。
- WifiMonitor (Wi-Fi监控器):实时监控Wi-Fi状态,如信号强度、连接状态、IP地址分配情况等,并将这些信息通知给系统。
- 作用:这是安卓Wi-Fi管理的核心,位于
-
Settings (设置应用):
- 作用:这是用户与Wi-Fi交互的图形界面,当你在设置里打开Wi-Fi、点击连接某个网络时,它实际上是通过系统Binder机制,向Wi-Fi Service发送了一个请求。
-
Netd (网络守护进程):
- 作用:一个运行在Linux内核空间的守护进程,负责管理网络接口、路由表和防火墙规则。
- 工作:当Wi-Fi连接成功并获取到IP地址后,Netd会负责配置网络接口、设置默认网关(通常是路由器的IP)、设置DNS服务器等,让你的手机能够通过Wi-Fi访问互联网。
一个完整的连接流程实例
让我们用一个完整的例子来串联所有部分:用户在咖啡馆连接到免费Wi-Fi网络。
-
用户操作:你在“设置” -> “WLAN”中,点击开启Wi-Fi,然后从列表中选择“Cafe_Free_Wi-Fi”并点击连接。
-
安卓框架响应:
- Settings App 接收到你的点击,通过Binder向 Wi-Fi Service 发送“连接到Cafe_Free_Wi-Fi”的请求。
- Wi-Fi Service 收到请求,会先让 Supplicant 去执行一次扫描,以确认该网络是否存在并获取其安全类型(如WPA2-Personal)。
- 扫描到后,Wi-Fi Service 指令 Supplicant 开始连接流程。
-
底层连接与认证:
- Supplicant 向Wi-Fi芯片发送指令,让其尝试连接到指定SSID的AP(路由器)。
- Wi-Fi芯片通过天线发送关联请求到路由器。
- 路由器响应,建立关联。
- Supplicant 与路由器进行四次握手,验证密码(预共享密钥),并生成会话密钥。
- 认证成功,连接建立。
-
网络配置:
- 连接建立后,Supplicant 通知 Wi-Fi Service:“连接成功!”。
- Wi-Fi Service 请求 DHCP Client(通常由Netd管理)向路由器请求一个IP地址。
- 路由器作为DHCP服务器,分配一个IP地址(如
168.1.120)、子网掩码、网关和DNS服务器地址给你的手机。 - Netd 接收到这些信息后,配置系统的网络栈,使所有网络流量都通过Wi-Fi接口发出。
-
用户可用:
- Settings App 收到 Wi-Fi Service 的成功回调,更新UI,显示“已连接”。
- 你可以打开浏览器访问互联网了,你的请求会经过:App -> TCP/IP栈 -> Netd -> Wi-Fi Framework -> Wi-Fi芯片 -> 天线 -> 路由器 -> 互联网。
安卓Wi-Fi技术的原理是一个从用户界面到硬件,再从硬件返回到应用的复杂闭环,它依赖于:
- 硬件层的Wi-Fi芯片和天线完成物理通信。
- 协议栈(从MAC到应用层)定义了通信的规则和语言。
- 安卓系统通过HAL、Framework、Supplicant、Netd等组件,将硬件和协议封装起来,为用户提供稳定、易用的无线网络体验。
理解了这个过程,你就能明白为什么有时候Wi-Fi会连接上但上不了网(可能是DHCP或DNS问题),或者为什么信号满格但网速很慢(可能是信道拥堵或干扰)。
