日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android以太网架构源码

發布時間:2023/12/16 Android 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android以太网架构源码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Android 以太網框架源碼分析啟動篇

一 引言

以太網在各類android設備形態中目前是比較成熟的技術,尤其對于android系統的電視、平板以及機頂盒等都有支持有線網口的預留。最近正好做一個關于Android以太網的需求(后面在Android 系統相關問題和需求的相關文章中會具體介紹這個需求),就順便研究一下以太網的整體框架和流程。整體流程是很復雜,但是其中有一些細小的知識點還是需要關注的。這里主要基于Along的Android 10來分析。好嘞,話不多說,先看下Android以太網框架設計的代碼目錄及文件。

frameworks/base/core/java/android/net/---EthernetManager.java---IEthernetManager.aidl---ConnectivityManager.java---NetworkPolicyManager.java---NetworkAgent.javaframeworks/opt/net/ethernet/java/com/android/server/ethernet/---EthernetService.java---EthernetServiceImpl.java---EthernetTracker.java---EthernetNetworkFactory.java---EthernetConfigStore.javaframeworks/base/services/core/java/com/android/server/---NetworkManagementService.java---NativeDaemonConnector.java---NativeDaemonEvent.java---ConnectivityService.javaframeworks/base/services/core/java/com/android/server/net/---NetworkStatsService.java---NetworkPolicyManagerService.java

二 整體框架簡介

對于Android 以太網架構源碼分析,我將從三個角度來分析,以點入面,進而分析整個Android 以太網的框架,整體流程不是很復雜,但是涉及其中的知識點還是比較多的,希望大家和我一塊來體驗一下Gooole大牛對于以太網架構的實現。

  • 以太網服務(EthernetService)的啟動與注冊流程;
  • 應用層調用使能ethernet功能的方法流程來分析,從應用層如何將指令一步一步傳到底層kernel;
  • 底層kernel如何一步一步上報Uevent(例如網線的插拔等)給framework層實現;

下面我們先從圖2-1來了解一下Android 以太網的整體框架結構,了解一下每個主要服務是干啥事情。這樣就會為后面的流程分析做一定的準備。

圖2-1 Android 以太網整體框架

2.1 Android 以太網框架主要服務及其作用

2.1.1 Android framework層以太網架構主要服務

根據圖2-1所以Android 以太網框架framework層主要涉及6個服務類,我們先基本了解一下這些類的作用。

  • 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.1.1 Android native 層主要服務類

根據圖2-1所以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層。

2.2 Android 以太網Framework層類圖關系

圖2-2為Android 以太網框架Framework層的類圖關系。
?

圖2-2 Android 以太網框架Framework層各類之間的類圖關系

從各類的關系圖可以看出,Android以太網核心服務是NetworkManagementService,以及ConnectivityService,前者主要負責與Netd的通信以及網絡的管理,后者和幾個網絡的服務都有聯系,監聽和通知網絡狀態以及網絡評分等數據。

三 總結

作為Android 以太網框架源碼分析的啟動篇,我們主要分析了以太網的整體框架以及各類的之間的關系和作用,下一篇我們將正式開始Android 以太網框架源碼分析,首先是以太網服務的啟動,盡請期待。

總結

以上是生活随笔為你收集整理的Android以太网架构源码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。