萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 網路安全 >  >> 網路基礎知識

Android系統網絡架構深度解析:四大核心服務協同機制與類圖詳解

Android系統網絡連接與管理並非單一服務完成,而是由ConnectivityService、NetworkPolicyManagerService、NetworkManagementService、NetworkStatsService四大系統服務協同實現。本文深度解析四服務職責邊界、對外接口暴露策略、內部協作類圖,為Framework工程師與安全研究員提供架構級參考。

四大服務職責矩陣

服務名稱核心職責對外SDK接口典型調用者
ConnectivityService網絡連接狀態管理、路由控制、網絡切換、鏈路層協議協商ConnectivityManager應用層(網絡狀態監聽、請求網絡)、系統服務
NetworkPolicyManagerService流量策略管理(限額、警告、計費網絡識別)、UID網絡權限控制NetworkPolicyManager設置應用、數據用量統計、防火牆模塊
NetworkManagementService底層網絡設備配置(接口up/down、路由表、防火牆規則、NAT、TCP缓冲區調優)無(隱藏@SystemApi)ConnectivityService、網絡測試工具、VPN服務
NetworkStatsService數據流量統計收集(按UID、標籤、接口)、歷史數據持久化、查詢接口無(隱藏@SystemApi)NetworkPolicyManagerService、設置應用、運行商App

架構協作類圖解析

Android網絡連接系統類圖

圖1 網絡連接系統類圖

關鍵協作關係

  1. ConnectivityService為中樞:持有其他三服務引用,統籌網絡狀態機流轉。
  2. 策略驅動連接:NetworkPolicyManagerService根據流量策略,通過ConnectivityService限制/允許特定UID/網絡類型的連接。
  3. 底層執行分離:具體接口配置、iptables規則下發由NetworkManagementService執行,ConnectivityService不直接操作Linux網絡棧。
  4. 統計反饋決策:NetworkStatsService定期推送流量數據給NetworkPolicyManagerService,觸發限額動作(如斷網、限速)。

對外接口設計哲學:最小暴露原則

  • ConnectivityManager:暴露網絡狀態查詢、網絡請求、網絡回調註冊,供普通應用使用。
  • NetworkPolicyManager:暴露流量策略查詢、UID網絡權限設置,主要供系統設置、運行商App使用,需MANAGE_NETWORK_POLICY權限。
  • 隱藏服務:NetworkManagementService、NetworkStatsService通過ServiceManager.getService()獲取IBinder,僅限android.uid.system或簽名權限訪問,防止應用層繞過策略直接操作底層網絡。

典型數據流:應用發起網絡請求

1. App調用ConnectivityManager.requestNetwork(NetworkRequest, NetworkCallback)
2. ConnectivityService評估請求:滿足NetworkCapabilities?符合NetworkPolicy?
3. 是 → 委託NetworkManagementService建立接口、配置路由、下發防火牆規則
4. 接口就緒 → 通過NetworkCallback.onAvailable()回調App
5. 數據傳輸期間 → NetworkStatsService持續統計UID流量
6. 超額/策略變更 → NetworkPolicyManagerService通知ConnectivityService撤銷網絡
7. ConnectivityService委託NetworkManagementService拆除接口、清理路由/防火牆

安全與權限模型

  • 網絡權限:INTERNET權限僅允許使用默認網絡,不保證特定網絡類型。
  • 受限網絡:VPN、企業專網需NETWORK_STACK或專用權限。
  • 流量統計保護:UID流量數據屬隱私,僅系統服務可訪問完整數據,應用僅能查自身統計。

演進趨勢(Android 10+)

  • NetworkStack模塊化:網絡協議棧主線化更新,減少碎片化。
  • 私有DNS/DoT/DoH:ConnectivityService集成加密DNS協商。
  • 流量統計分桶:前台/後台/預取分桶統計,精細化策略控制。

理解四大服務協作機制,是掌握Android網絡行為、定位疑難連接問題、實現定制化網絡策略的基石。建議配合frameworks/base/services/core/java/com/android/server/connectivity/源碼閱讀,結合dumpsys connectivity、dumpsys netpolicy、dumpsys netstats實戰分析。

copyright © 萬盛學電腦網 all rights reserved