Android网络框架——用户态框架
Posted Chris_166
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android网络框架——用户态框架相关的知识,希望对你有一定的参考价值。
目录
前言:基于android Q
一. Android网络架构
1.1 模块说明
1. NetworkFactory:网络工厂。Android系统启动的时候,各种网络(Wi-Fi/数据网/eth/Bt-tethering)就会将各自的NetworkFactory(例如Wi-Fi的NetworkWifiNetworkFactory和数据网的TelephonyNetworkFactory)注册到ConnectivityService中;
2. NetworkAgent:链路网络代理。ConnectivityService和网络模块的链路管理者(主要是指的网络模块的控制流,例如Wi-Fi模块中的ClientModeImpl.java)之间通信的代理。
以Wi-Fi为例,在L2连接成功后创建,通过NetworkAgent,
(1) Wi-Fi状态机ClientModeImpl可以向ConnectivityService发送如下消息:
(a) 更新网络状态NetworkInfo(断开、连接中、已连接等);
(b) 更新链路配置 LinkProperties(本机网口、IP、DNS、路由信息等);
(c) 更新网络能力 NetworkCapabilities(信号强度、是否收费等)
(2) ConnectivityService可以向ClientModeImpl发送如下:
(a) 更新网络有效性(即NetworkMonitor的网络检测结果);
(b) 禁止自动连接;
(c) 由于网络不可上网等原因主动断开网络
3. ConnectivityService:网络连接大管家,后面简称为CS。所有网络类型(例如Wi-Fi、Telephony、Ethernet等)的网络都需要注册关联到CS并提供链路请求接口。CS主要提供如下功能:
(a) 网络有效性检测(NetworkMonitor);
(b) 网络评分与选择(NetworkFactory、NetworkAgent、NetworkAgentInfo);
(c) 网口、路由、DNS等参数配置(netd)
(d) 提供网络申请接口(ConnectivityManager)
4. NetworkMonitor:网络监控,主要用来做网络诊断功能的,是一个状态机。在链路网络注册到CS,并且所有网络配置信息都已经向netd完成了配置后就会开始使用NetworkMonitor进行网络诊断任务。
5. NetworkPolicyManagerService:后面简称NPMS,Android系统的网络策略管理者。NPMS会监听网络属性变化(是否收费,metered)、应用前后台、系统电量状态(省电模式)、设备休眠状(Doze),在这些状态发生改变时,为不同名单内的网络消费者配置不同的网络策略。NPMS对网络策略进行统一管理和记录,并配合netd和iptable工具,达到网络限制的目的。
网络策略的基本目的:
(1) 在收费网络的情况下省流量
(2) 最大可能性的省电
(3) 防止危险流量进入
6. NetworkManagementService:后面简称NMS,是SystemServer中其他服务连接netd的桥梁。Android SystemServer不具备直接配置和操作网络的能力,所有的网络参数的配置都需要先发送给netd,然后netd再下发到kernel生效的。
7. netd:网络守护进程,主要有以下方面的职能:
(1) 处理接收来自Kernel的UEvent消息(包含网络接口/带宽/路由/eth插拔等信息),并传递给Framework;
(2) 提供防火墙设置、网络地址转换(NAT)、带宽控制、网络设备绑定(Tether)等接口
后面将会有文章分别介绍Eth、Wi-Fi、Modem的网络节点变化监听已经注网流程。
二. 网络dump命令
常用的网络dump命令如下:
模块 | 命令 |
Connectivity | dumpsys connectivity |
NMPS | dumpsys netpolicy |
Network stack | dumpsys network_stack |
NMS | dumpsys network_management |
以上是关于Android网络框架——用户态框架的主要内容,如果未能解决你的问题,请参考以下文章