Android系统安全 — 6.2 Ethernet安卓架构

1. Android Ethernet架构介绍

整个Ethernet系统架构如下图所示:

  • 以太网服务(EthernetService)的启动与注册流程;
  • 应用层调用使能ethernet功能的方法流程来分析,从应用层如何将指令一步一步传到底层kernel;
  • 底层kernel如何一步一步上报Uevent(例如网线的插拔等)给framework层实现。
    图1

由SystemServer启动的时候生成的ConnecttivityService创建,负责启动关闭wpa_supplicant,启动和关闭WifiMonitor线程,把命令下发给wpa_supplicant以及更新WIFI的状态。处理其它模块通过IWifiManager接口发送过来的远端WiFi操作。

2. Android 以太网框架主要服务及其作用

2.1 Android framework层

ConnectivityService :ConnectivityService 是系统网络连接的管理服务,同时也是整个Android系统网络的核心。主要处理App对于网络的监听和请求,以及网络变化时候通知App;另外该服务还会处理Wifi/Telephony/Ethernet等各个网络链路的注册,与信息的更新,以及网络评测和网络评分。
NetworkPolicyManagerService:NetworkPolicyManagerService是网络策略的管理,主要是对某些App的网络数据限制以及放行等。主要通过App的Uid来限制。
NetworkManagementService:NetworkManagementService是网络管理服务。其为ConnectivityService 和其他一些部分Framework Service建立了与Netd之间的通信通道(Android N以后Framework 与 Netd之间的通信,从socket变为了Binder调用,所以framework 其他一些服务目前也是有能力获取到Netd的client端,从而与Netd进行通信的)。
NetworkStatsService:NetworkStatsService主要根据不同的iface收集上下行网络数据,并配合NetworkPolicyManagerService服务对特定的app做网络数据限制及放行。
EthernetServiceImp:主要提供接口,供App来设置和更新网络,比如静态IP,以及网络类型等等,真正工作的是EthernetTracker这个类,这个类最终通过NetworkPolicyManagerService来和Netd进行通信。
EthernetNetworkFactory:EthernetNetworkFactory是NetworkFactory的子类,从名字可以看出该类是个工厂类。主要功能是通过AsyncChannel接受来自ConnectivityService 的禁止自动连接、网络有效性(NetworkMonitor的网络检测结果)、由于网络不可上网等原因主动断开网络。同时通过NetworkAgent(网络代理,其内部也是AsyncChannel)向ConnectivityService更新网络状态NetworkInfo(断开、连接中、已连接);更新链路配置LinkProperties(本机网口、IP、DNS以及路由信息等);更新网络能力NetworkCapabilities(信号强度、是否收费等)。

2.2 Android native 层

Android 以太网框架Native层目前从在两套机制,一套是通过Binder调用实现,另外一套是通过socket通信。从Android的版本修改来看,Google更希望使用Binder调用,所以后面Android版本很有可能会将socket通信都换为Binder通信。

NetdNativeService:NetdNativeService 是Framework层INetd的server端,提供Framework层访问Netd。NetdNativeService是Netd进程的核心,负责Android 网络管理和控制。通过xxxController将Framework的网络配置和管理指令通过Syscall的方式传递给底层kernel。
NetlinkManager:其利用SocketListener的方式监听底层Kernel的Uevent事件,并且通过注册NetdUnsolicitedEventListener方式,将底层Uevent事件上报到Framework层,例如网线的插拔等
XXXListener:MDnsSdListener等Listener,主要通过socket监听来自Framework层的指令,以及监听底层的Uevent通过socket上报到framework层。

3.Wifi Ethernet源码

frameworks/base/core/java/android/net/
    ---EthernetManager.java
    ---IEthernetManager.aidl
    ---ConnectivityManager.java
    ---NetworkPolicyManager.java
    ---NetworkAgent.java

frameworks/opt/net/ethernet/java/com/android/server/ethernet/
    ---EthernetService.java
    ---EthernetServiceImpl.java
    ---EthernetTracker.java
    ---EthernetNetworkFactory.java
    ---EthernetConfigStore.java

frameworks/base/services/core/java/com/android/server/
    ---NetworkManagementService.java
    ---NativeDaemonConnector.java
    ---NativeDaemonEvent.java
    ---ConnectivityService.java

frameworks/base/services/core/java/com/android/server/net/
    ---NetworkStatsService.java
    ---NetworkPolicyManagerService.java

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/30605.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

阿里巴巴开源的Spring Cloud Alibaba手册在GitHub上火了

“微服务架构经验你有吗?” 前段时间一个朋友去面试,阿里面试官一句话问倒了他。实际上,不在BAT这样的大厂工作,是很难接触到支撑千亿级流量微服务架构项目的。但也正是这种难得,让各个大厂都抢着要这样的人才&#x…

docker-harbor私有仓库

一、Harbor概述 1、Harbor的概念 • Harbor是VMware公司开源的企业级Docker Registry项目,其目标是帮助用户迅速搭建一个企业级的Docker Registry服务 • Harbor以 Docker 公司开源的Registry 为基础,提供了图形管理UI、基于角色的访问控制(Role Base…

华为流程体系:IPD流程框架(限制版)

目录 前言 详细内容 专栏列表 CSDN学院课程地址 前言 今天主要来谈谈 IPD 体系的主体框架所涉及的一些相关内容。 其实关于 IPD 体系,我在之前的文章或课程中都有过不同程度的讲解。 但是,由于这个体系所涉及的面是非常广泛的。 这个时候就必须通…

sql总理论加实践

一、基础查询 DQL语法 SELECT 字段列表 1.设置别名 SELECT 字段1[别名],字段二[别名]......FROM 表名 WHERE 条件列表; 2.查询多个字段 SELECT 字段1,字段2,字段3......FROM 表名; SELECT * FROM 表名; 3.去除重复记录 DISTANT FROM 表明列表 WHERE 条件列表(条件…

利用etcd实现分布式锁

python etcd3模块的lock使用 观察lock的加解锁影响 在python中已经自带了分布式锁的实现方式,下面我们尝试一下加锁与解锁的流程 在运行该demo同时也对lock对应的key进行watch,观察其变化,注意python-etcd3在实现分布式锁的时候&#xff0…

【Python爬虫开发基础⑤】HTML概述与基本标签详解

专栏:python网络爬虫从基础到实战 欢迎订阅!近期还会不断更新~ 往期推荐: 【Python爬虫开发基础①】Python基础(变量及其命名规范) 【Python爬虫开发基础②】Python基础(正则表达式) 【Python爬…

探秘华为交换机:端口类型全解析

在下列情况下,判断的一般方法是什么? 1.交换机某个端口下的用户丢包。 2.交换机下的所有用户都在丢失数据包。 3、用户反映网速缓慢 检查网络电缆,重做水晶头,检查用户的计算机网卡,并重新启动交换机。 这几种做法都能…

Flink 学习五 Flink 时间语义

Flink 学习五 Flink 时间语义 1.时间语义 在流式计算中.时间是一个影响计算结果非常重要的因素! (窗口函数,定时器等) Flink 可以根据不同的时间概念处理数据。 处理时间: process time System.currentTimeMillis()是指执行相应操作的机器系统时间(也称为纪元时间…

Docker安全

一、Docker 容器与虚拟机的区别 1、隔离与共享 • 虚拟机通过添加 Hypervisor 层,虚拟出网卡、内存、CPU 等虚拟硬件,再在其上建立虚拟机,每个虚拟机都有自己的系统内核 • Docker容器则是通过隔离的方式,将文件系统、进程、设…

Redis入门 - Lua脚本

原文首更地址,阅读效果更佳! Redis入门 - Lua脚本 | CoderMast编程桅杆https://www.codermast.com/database/redis/redis-scription.html Redis 脚本使用 Lua 解释器来执行脚本。 Redis 2.6 版本通过内嵌支持 Lua 环境。执行脚本的常用命令为 EVAL。 …

Spark01-Spark快速上手、运行模式、运行框架、核心概念

1 概述 Spark和Hadoop Hadoop HDFS(GFS:TheGoogleFileSystem)MapReduce总结:性能横向扩展变得容易,横向拓展:增加更多的计算节点来扩展系统的处理能力Hbase:分布式数据库 Spark Spark CoreSpark SQLSQL 方言(HQL)Spark Streamin…

光伏电池局部遮阴下三种不同的工况对比MATLAB仿真模型

光伏电池局部遮阴下三种不同的工况对比MATLAB仿真模型及程序资源-CSDN文库https://download.csdn.net/download/weixin_56691527/87910311 模型简介: 建议使用MATLAB21b及以上版本打开! 光伏阵列表面被局部遮挡时会产生热斑效应。为了防止太阳电池因热…

【Matter】Matter学习笔记1

文章目录 前言Matter协议架构1.Matter Over IPV62.Matter协议架构3.Matter标准协议架构 Matter网络拓扑结构Mesh组网1.单一网络拓扑2.星形网络拓扑 设备数据模型(Date Model)1.设备和端点(Node、Endpoint)2.节点角色(N…

ADAudit Plus:保护企业内部IT安全的强大解决方案

随着企业数字化的推进,IT系统和数据安全变得比以往任何时候都更加重要。为了保护企业的机密信息和敏感数据,企业需要一种可靠的IT安全解决方案。在众多选项中,ADAudit Plus是一款备受赞誉的软件,为企业内部的IT安全提供了强大的支…

工业机器人运动学与Matlab正逆解算法学习笔记(用心总结一文全会)(二)

文章目录 机器人逆运动学※ 代数解、几何解,解析解(封闭解)、数值解的含义与联系○ 代数解求 θ 1 \theta_1 θ1​、 θ 2 \theta_2 θ2​、 θ 3 \theta_3 θ3​※参考资料 求解 θ 1 \theta_1 θ1​ 求解 θ 3 \theta_3 θ3​ 求解 θ 2 \t…

Unity核心7——2D动画

一、序列帧动画 (一)什么是序列帧动画 ​ 我们最常见的序列帧动画就是我们看的日本动画片,以固定时间间隔按序列切换图片,就是序列帧动画的本质 ​ 当固定时间间隔足够短时,我们肉眼就会认为图片是连续动态的&#…

【Java基础学习打卡11】Path环境变量的配置

目录 前言一、为什么配置环境变量二、如何配置环境变量三、JDK11的环境变量配置总结 前言 本文我们要知道为什么配置环境变量,自己思考不配置环境变量可以吗?JDK 11 如何配置环境变量。 一、为什么配置环境变量 原因很简单,就是方便命令的查…

1.5 掌握Scala内建控制结构(一)

一、条件表达式 (一)语法格式 if (条件) 值1 else 值2 (二)执行情况 条件为真,结果是值1;条件为假,结果是值2。如果if和else的返回结果同为某种类型,那么条件表达式结果也是那种…

【STM32MP135 - ST官方源码移植】第二章:TF-A源码移植教程

STM32MP135 TF-A源码移植教程 一、创建build.sh编译脚本(1)解压tf-a的源码压缩包(2)打补丁,获取stm32mp135的源码(3)设计编译脚本build.sh1、进入tf-a源码:2、创建build.sh脚本文件3…

HTTP协议,带你了解HTTP协议

目录 1、HTTP 协议介绍 2、HTTP 协议的工作过程 HTTP 协议的工作过程可以分为以下几个步骤: 3、Fiddler 抓包工具介绍 3.1 抓包工具的使用 3.2 抓包结果 3.3 抓包工具原理 4、HTTP 协议格式总览 5、HTTP 请求(Request) 5.1 认识 URL…