網絡堆棧

網路堆疊是一個可更新的主線模組,可確保 Android 能夠適應不斷發展的網路標準,並允許與新實現的互通性。例如,強制入口網站偵測和登入程式碼的更新使 Android 能夠及時了解不斷變化的強制入口網站模型,而隨著新型資料包的普及,對 APF 的更新使 Android 能夠節省 Wi-Fi 電量。

包含的組件

網路堆疊模組包含以下元件。在使用該模組的裝置上,這些服務被移動到不同的進程,並透過穩定的 AIDL 介面進行存取。

  • 智慧財產權服務。 IpClient (以前稱為IpManager )是負責 IP 層配置和維護的元件。在 Android 9 中,它已被藍牙等元件跨進程使用,並被 Wi-Fi 等元件在進程內使用。 DhcpClient從 DHCP 伺服器取得 IP 位址,以便將它們指派給介面。

  • 網路監視器。 NetworkMonitor元件在連接到新網路或網路故障時、偵測強制入口網站以及驗證網路時測試 Internet 可及性。

  • 強制門戶登入應用程式。一個預先安裝的應用程序,負責管理強制門戶上的登入。自 Android 5.0 以來,它一直是一個單獨的應用程序,但它與NetworkMonitor交互,將一些用戶選擇轉發給系統。

受影響的路徑

下面列出了透過重構移動到網路堆疊模組的路徑。

  • 智慧財產權服務。frameworks/base/services/net/java/android/net/中:

    • apf
    • dhcp
    • ip
    • netlink
    • util (部分)
  • 強制門戶檢測和登入。frameworks/base/中:

    • core/java/android/net/captiveportal/
    • services/core/java/com/android/server/connectivity/NetworkMonitor.java
    • packages/CaptivePortalLogin/*

行動程式碼的新位置位於packages/modules/NetworkStackpackages/modules/CaptivePortalLogin和其他一些共用位置。上述路徑指的是檔案在被移動到主線之前的位置。 packages/modules/NetworkStackpackages/modules/CaptivePortalLogin中的檔案是Mainline 模組的一部分,無法修改。

封裝格式

網路堆疊模組包含以下 APK 格式的元件:

  • 智慧財產權服務
  • 強制入口網站登入 ( com.google.android.captiveportallogin )

此模組附帶網路堆疊權限配置模組,該模組是一個預先安裝的 APK 文件,用於定義網路堆疊組件的必要權限。

依賴關係

網路堆疊模組取決於以下各項:

  • 系統伺服器中的特權 @hide 方法(例如,在IConnectivityManager.aidl中)。這些 API 已被設定為@SystemApi並受到適當的保護,以便主線模組可以存取它們,但其他特權應用程式無法存取它們(例如,使用新的簽署權限)。

  • INetd.aidl中定義的netd的 Binder IPC。此介面已轉換為穩定的AIDL,並接受一致性測試。