Android5.0 netd架构流程
原址
Android5.0之后,网络的功能实现完全转移到netd上面,主要包括ip,路由配置,dns代理设置,带宽控制和流量统计等。
下面是Netd框架示意图,NetworkManagerService和NativeDeamonConnect是java代码,NetworkManagerService作为service随系统启动,java层所有对网络的操作都通过它来完成。
其他都是c++代码,主要完成两个工作:1.接收上层的命令,完成指定对网络的操作;2.接收kernel netlink信息,传递到上层。
接收上层命令的工作,通过4个socket完成:/dev/socket/netd /dev/socket/dnsproxyd /dev/socket/mdns /dev/socket/fwmarkd,分别对应CommandListener,DnsproxyListener,MdnsSdListener和FwmarkServer。
CommandListener接收配置ip,路由,iptables的命令
DnsproxyListener接收查询dns的操作
MdnsSdListener接收针对mdnsd的操作
FwmarkServer用于对特定的socket设置mark值
下图是Netlink部分,模块调用关系示例
NetlinkManager启动3个socket,用于监听3种不同的event:Uevent,RouteEvent,QuotaEvent。通过SocketListener实现监听功能,netlink信息,最终通过/dev/socket/netd送到NetworkManagementService(java代码),分配到注册到它里面的各个观察者实例(Ethernet,wifi等)。
Android5.0 netd架构流程相关推荐
- android架构 vold,Android5.0 vold-整体架构
概述 该篇文章主要讲解vold的整体框架和工作流程,不会涉及到具体的实现. 具体的实现(从framework到Native再到协议族)会在如下的后续文章里提及. Android5.0 vold-启动过 ...
- Android5.0源码分析—— Zygote进程分析
1 Zygote简介 Android的应用程序一般都是由Java语言编写而成的,这样的应用程序需要运行在独自的Dalvik虚拟机之上(当然,5.0好像默认了ART了).但是,如果在每一个进程 ...
- Android5.0,6.0,7.0,8.0新特性整理
背景 Android5.0(Android Lollipop)是谷歌公司2014年10月发布的全新安卓系统,至今已经两年多.然而由于国产手机对安卓ROM的深度定制或修改,以及手机厂商.芯片制造商.运营 ...
- Android5.0,6.0,7.0新特性整理
背景 Android5.0(Android Lollipop)是谷歌公司2014年10月发布的全新安卓系统,至今已经两年多.然而由于国产手机对安卓ROM的深度定制或修改,以及手机厂商.芯片制造商.运营 ...
- Android5.0 6.0 7.0新特性
原文链接:http://blog.csdn.net/haovip123/article/details/54618642 背景 Android5.0(Android Lollipop)是谷歌公司201 ...
- Android5.0 Telephony框架初步分析--telecomm
3.2 Telecomm关键类初始化和相互关系 3.2.1 Telecomm简述 Android5.0在Telephony的变化又比较大,增加了一个Telecomm模块,它位于界 ...
- Android5.0,6.0,7.0,8.0,9.0区别
2014年10月发布了Android5.0 2015年5月发布了Android6.0 2016年8月发布了Android7.0 2017年8月22日发布了Android 8.0的正式版Android ...
- android5.0(Lollipop) BLE Peripheral牛刀小试
转载请表明作者:http://blog.csdn.net/lansefeiyang08/article/details/46468743 知道Android L对蓝牙对了一些改进,包括添加A2dp s ...
- android+5.0+ble,android5.0(Lollipop) BLE Peripheral牛刀小试(示例代码)
转载请表明作者:http://blog.csdn.net/lansefeiyang08/article/details/46468743 知道Android L对蓝牙对了一些改进.包含加入A2dp s ...
最新文章
- 从经典问题开始教你如何入门计算机视觉!贴心!
- mysql 几十连接_MySQL挑战:10万连接数
- 【JavaScript】jQuery绑定事件
- 移动时代的互联网格局变化
- JAVA里面main找不到符号_java – 带有NBAndroid的NetBeans – 找不到符号setContentView(R.layout.main);...
- win7 64 位用VMware安装Ubantu 20130908
- 如何利用 JConsole观察分析Java程序的运行,进行排错调优(转)
- 微软的基础服务器,微服务器当道 微软云端基础构架揭秘
- Windows下Redis安装的那些事儿!
- 【Android】科大讯飞——语音识别
- 【visio】visio软件安装
- 软件测试实习面试都问啥?
- this beta version of Typora is expired, please download and install a newer version.Typora
- 国庆节发个国庆直播的小软件
- 在pycharm中使用arcpy
- 更改mysql数据库主键自增时报错ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry '1
- ICCV2019语义分割/UDA:ACE: Adapting to Changing Environments for Semantic SegmentationACE:适应变化环境下的语义分割
- 你可能错过的40个macOS Monterey提示、技巧和功能
- FFMPEG -- av_guess_format
- 【2018慢性病与信息大会】钟代笛:个人互联健康领域的国际标准
热门文章
- unicode学习笔记
- cobertura试用
- Modernizr 浏览器兼容功能检测
- 深度学习 --- BP算法详解(BP算法的优化)
- vue项目跨域问题完全解决
- pythonmkdir语法错误_Python mkdir一个有难度的问题
- html() 无效,Internet Explorer无效HTML解析代码漏洞
- 计算机世界赛一年几届夺冠,纵观lol历届s系列赛, 哪一届夺冠的含金量最高? 哪一届又最低?...
- IDEA 如何打jar包
- python 下载bilibili视频