Android网络框架(一)——用户态框架

目录

一. Android网络架构

1.1 模块说明

二. 网络dump命令


前言:基于Android Q

一. Android网络架构

Android网络框架(一)——用户态框架_第1张图片

Android网络框架(一)——用户态框架_第2张图片

Android网络框架(一)——用户态框架_第3张图片

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,Network,网络,android)