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

news2024/9/25 9:30:21

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SAAS-HRM系统概述与搭建环境

SAAS-HRM系统概述与搭建环境 学习目标: 理解SaaS的基本概念 了解SAAS-HRM的基本需求和开发方式掌握Power Designer的用例图 完成SAAS-HRM父模块及公共模块的环境搭建完成企业微服务中企业CRUD功能 初识SaaS 云服务的三种模式 IaaS(基础设施即服务…

使用Windows To Go工具制作你的U盘系统【含下载Windows10系统镜像】亲测已成功23.06.21

WinToGo是一款辅助工具:专为能够让你将系统装进U盘,移动硬盘里,让你在任意电脑都能运行U盘里装的系统! 一、下载,安装“Windows To Go”工具 1、下载Windows To Go工具 口袋系统WinToGo: 安装Win 10到U盘 2、双击Wi…

从0到1精通自动化测试,pytest自动化测试框架,assert断言(七)

目录 一、前言 二、assert 三、异常信息 四、异常断言 五、常用断言 一、前言 断言是写自动化测试基本最重要的一步,一个用例没有断言,就失去了自动化测试的意义了。什么是断言呢? 简单来讲就是实际结果和期望结果去对比,符…

三分钟学习一个python小知识2-----------我的对python的类(Class)和对象(Object)的理解

文章目录 一、类(Class)和对象(Object)是什么?二、Python类和对象的实现1.定义类2.创建对象3.调用类的属性和方法 三、利用python实现了一个动物的类(Animal)和其两个子类(Cat和Dog&…

年轻人存款难,要攒够多少存款才可以体面的养老,结论亮了

这个情况确实值得我们思考。年轻人的经济压力比较大,所以他们普遍存款比较少。而10万元确实是一个比较大的数目,对于一些年轻人来说可能确实很难达到。 然而,我认为这并不是一个“坎”。我们应该鼓励年轻人理财,增加存款,以便应对未来可能出现的各种经济问题。同时,我们…

定义一个一维数组存放10个整数,要求从键盘输入10个数,对其进行求和、求平均、求最大值/最小值及其位置的下标

目录 题目 分析思路 法一:在主函数直接编程 法二:用 调用函数 实现 代码 法一:在主函数直接编程 法二:用 调用函数 实现 题目 定义一个一维数组存放10个整数,要求从键盘输入10个数,对其进行求和、求…

新华三H3C无线控制器AC对接网络准入实现定制化Portal短信认证

随着企业办公信息化的不断发展,企业内网安全也面临着诸多挑战。在包含了无线 WiFi、有线网络的混合网络环境中,员工或访客、外包人员、合作伙伴等用户在接入网络时,如果无需进行身份验证及访问权限的管理,则很可能给不法分子可乘之…

一起Talk Android吧(第五百四十八回:如何创建垂直版SeekBar)

文章目录 概念介绍创建方法示例程序 各位看官们大家好,上一回中咱们说的例子是"蓝牙广播中的厂商数据",本章回中介绍的例子是" 如何创建垂直版SeekBar"。闲话休提,言归正转,让我们一起Talk Android吧! 概念介…

基于深度学习的高精度绵羊检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于深度学习的高精度绵羊检测识别系统可用于日常生活中或野外来检测与定位绵羊目标,利用深度学习算法可实现图片、视频、摄像头等方式的绵羊目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型…

Java基础知识之异常处理

目录 1.Java 异常处理 2.Exception 类的层次 3.Java 内置异常类 4.异常方法 5.捕获异常 6.多重捕获块 7.throws/throw 关键字 7.1 throw 关键字 7.2 throws 关键字 8.finally关键字 8.1 实例--ExcepTest.java 文件代码: 9.try-with-resources 9.1 try-…

外设驱动库开发笔记54:外设库驱动设计改进的思考

不知不觉中我们已经发布了五十多篇外设驱动的文章。前段时间有一位网友提出了一些非常中肯的建议,这也让我们开始考虑怎么优化驱动程序设计的问题。在这一篇中我们将来讨论这一问题。 1、问题分析 首先我们来分析一下网友提出的几点问题。第一点是说在驱动设计时&a…

[年中总结]真正的精彩都在海里

时间过得可真的是快啊,一眨眼就是六月底了 这半年的经历也是挺多彩 二月底的时候,跟老大提出了离职申请,经过 老大/hr/部门 leader 的谈话之后,依然决定离职 四月底拿到离职证明之后,就出去玩了一圈,六月份刚回来,哈哈哈哈 我不知道有没有人和我一样,非常在意能不能在一份工作…

2023个人简历的范文参考(合集)

2023个人简历的范文参考【篇1】 基本信息 姓名:__ 性别:__ 出生日期:__ 籍贯:__市 目前城市:__市 联系电话:__ E-mail:__ 应聘方向 求职行业:金融/投资/证券,银行&#x…

Python 标准库-CSV 文件读写

目录 【1】读取CSV 【2】字典方式写入 【3】常用自定义 csv --- CSV 文件读写 — Python 3.10.11 文档 涉及方法: csv.DictReadercsv.DictWriter 【1】读取CSV def readToCsvFile(csv_path, u_delimiter,, u_doublequoteTrue):read_file []try:with open(cs…

计算机网络23年6月期末复习【更新】

计算机网络23年6月期末复习 题型分布 循环冗余码(CRC校验码)子网划分IP数据报分片滑动窗口拥塞避免和快速重传TCP三次握手和四次握手路由选择(更新路由表)1.(简答题)网络体系结构为什么要采用分层次的结构&…

签约新闻 | 南方传媒携手AMT企源开启各项管理优化工作

南方出版传媒股份公司(本文简称“南方传媒”)成立于2009年,2016年在上交所挂牌上市,是广东省文化产业第一股、广东文化产业龙头企业、中国出版业重要力量。 在数字化发展浪潮下,为支撑业务数字化转型变革,…

FreeBSD 开源操作系统 30周年纪念特刊

FreeBSD是一种类UNIX操作系统,是经由 BSD、386BSD 和 4.4BSD 发展而来的Unix的一个重要分支。由一些原来 BSD UNIX 的开发者后来转到 FreeBSD 的开发,使得 FreeBSD 在内部结构和系统 API 上和 UNIX 有很大的兼容性。FreeBSD 是开源Free。 FreeBSD 项目庆…

车间现场管理难!车间主管如何掌握管理进阶?

车间是企业的基本层,搞好车间现场管理,有利于企业增强竞争力,提高产品质量和员工素质,保证安全生产,而车间班组长是生产线的主要管理者,是直接“当家人”,对生产现场状况了如指掌,对…

边缘智能:边缘计算驱动实时深度学习

边缘智能 作为人工智能领域的当红炸子鸡,深度学习技术近年来得到了学术界与产业界的大力追捧。目前,深度学习技术已在计算机视觉、自然语言处理以及语音识别等领域大放异彩,相关产品正如雨后春笋般涌现。由于深度学习模型需要进行大量的计算…

【VulnHub系列】DC4

因为是从PDF转换过来偶尔可能会出现内容缺少,可以看原版PDF:有道云笔记 实验环境 Kali:192.168.10.102 MyFileServer:192.168.10.106 实验过程 通过arp-scan来发现靶机的IP地址 sudo arp-scan --interface eth0 192.168.10.1…