Android 网络全链路完整模块(从硬件到应用)
你说的网卡驱动、内核、HAL、Framework 是核心主干,下面按数据流从上到下、分层递进梳理完整链路,同时区分**有线/无线(Wi-Fi/蜂窝)**通用架构。
一、整体分层(由下至上)
1. 硬件层(最底层)
- 物理网卡:以太网PHY、Wi-Fi芯片、蜂窝Modem、USB网卡、车载以太网等
- 硬件总线:PCIe、SDIO、USB、I2C、SPI(网卡与SoC通信)
2. 设备驱动层(Kernel 内核态)
这是你提到的网卡驱动所在层,纯内核空间:
- 网卡硬件驱动
- 以太网驱动:
drivers/net/ethernet/ - Wi-Fi驱动:
drivers/net/wireless/(主流:wlan、brcm、qcom、mtk 等) - USB网卡驱动、虚拟网卡(
tun/tap、macvlan、dummy)
- 以太网驱动:
- 内核网络协议栈(Linux 原生)
- 网络子系统:
net/目录 - 链路层:Netfilter/iptables、ARP、VLAN、网桥(bridge)
- 网络层:IP、ICMP、路由、NAT
- 传输层:TCP、UDP、RAW Socket
- 网络子系统:
- 内核辅助模块
- QoS、流量管控、网络调度、RSS 多队列、网卡中断处理
- 套接字(Socket)内核实现
特点:内核态,无Java代码,C实现,所有网络流量必经此处。
3. HAL 硬件抽象层(用户态,内核与上层桥接)
Android 标准隔离层,屏蔽不同芯片/驱动差异,分两代架构:
(1)传统 HAL(Legacy HAL)
libnetutils、libwifi、libdhcp、libnetd相关底层接口
(2)现代 AIDL/HIDL HAL(Android 8+ 主流)
按网络场景拆分独立 HAL:
- Wi-Fi HAL :
android.hardware.wifi(控制Wi-Fi芯片、扫描、连接、信道、功率) - Ethernet HAL :
android.hardware.ethernet(有线网配置、启停) - Modem/RIL HAL:蜂窝网络(4G/5G、APN、拨号、数据链路)
- Bluetooth HAL:蓝牙网络(PAN 蓝牙共享网络)
- 通用网络 HAL:DHCP、PPP、Tethering(网络共享)
作用:上层Framework不直接调用内核驱动,只调用HAL,实现硬件解耦。
4. Native 守护进程 & 系统服务(C/C++ 用户态)
HAL 之上、Framework 之下的关键中间层,很多人容易忽略:
- netd
网络核心守护进程:负责 iptables 规则、路由、网卡配置、网桥、Tethering、VPN、带宽控制、网络策略。 - wpa_supplicant
Wi-Fi 认证/协商进程:处理 Wi-Fi 密码、802.1X、漫游、AP 模式(热点),Wi-Fi 链路核心。 - dhcpcd / dhcp client
DHCP 客户端:自动获取 IP、网关、DNS。 - ril-daemon
蜂窝通信守护进程,对接 Modem HAL。 - dnsmasq
热点/共享网络时的 DNS/DHCP 服务。
5. Java Framework 框架层(系统核心,Android 网络中枢)
你提到的 Framework 层,是应用与底层网络的调度、管理、策略中心,全是 Android 系统 Java 服务:
核心系统服务
- ConnectivityService
全网总管:监听网络状态、网络切换、网络优先级、网络可用性、多网并发管控。 - WifiService / WifiManagerService
Wi-Fi 全套管理:开关、扫描、连接、热点、网络保存、Wi-Fi 状态上报。 - EthernetService
有线以太网管理。 - TelephonyService / RIL 上层
蜂窝数据、APN、移动网络开关、数据漫游。 - NetworkPolicyService
流量统计、防火墙、应用联网权限、后台联网限制。 - NetworkStatsService
全网/单应用流量统计。 - VpnService、TetheringService
VPN、网络共享(热点)管理。
对外 API 入口
android.net.* 包:ConnectivityManager、WifiManager、NetworkInfo、LinkProperties、NetworkCapabilities 等,应用只能调用这套 API。
6. 应用层(App 层)
最上层,分为两类:
- 系统应用
设置、状态栏、网络诊断、运营商APP、VPN系统应用,调用 Framework API 配置/查看网络。 - 第三方应用
- 基础网络:
Socket、HttpURLConnection、OkHttp、Retrofit、WebView - 专用网络:蓝牙、Socket直连、组播、局域网通信
- 网络诊断:ping、traceroute、端口扫描(通过 Native 调用内核工具)
- 基础网络:
二、简化版「全链路数据流」(一句话串通)
App → Framework(Connectivity/WifiService) → Native守护进程(netd/wpa_supplicant) → HAL → Linux内核网络协议栈 + 网卡驱动 → 物理网卡硬件
三、补充关键要点(做网络开发必知)
- 所有网络流量都走 Linux 内核协议栈
Android 只是在 Linux 外面套了 Framework/HAL,底层网络完全复用 Linux。 - 控制流 vs 数据流分离
- 控制流:开关Wi-Fi/网线、配IP、切网络 → 走 Framework → HAL → 驱动
- 数据流 :收发网络包 → 直接 应用Socket → 内核协议栈 → 驱动 → 硬件(不经过上层Framework)
- 虚拟网络组件也在全链路内
VPN、网卡虚拟化(macvlan、veth)、容器网络、网络隔离,均在内核+netd 实现。
四、极简总结(对应你最初的理解)
你的理解主体正确,完整补全后结构:
硬件网卡 → 内核网卡驱动 + 内核网络协议栈 → HAL层 → Native守护进程(netd/wpa_supplicant) → Java Framework网络服务 → 应用层