Netzwerkstapel

Network Stack ist ein aktualisierbares Mainline-Modul, das sicherstellt, dass Android sich an sich entwickelnde Netzwerkstandards anpassen kann und Interoperabilität mit neuen Implementierungen ermöglicht. Beispielsweise ermöglichen Aktualisierungen der Captive-Portal-Erkennung und des Anmeldecodes, dass Android mit sich ändernden Captive-Portal-Modellen auf dem Laufenden bleibt, und Aktualisierungen von APF ermöglichen es Android, WLAN-Energie zu sparen, wenn neue Pakettypen verbreitet werden.

Enthaltene Komponenten

Das Network Stack-Modul enthält die folgenden Komponenten. Auf Geräten, die das Modul verwenden, wurden diese Dienste in einen anderen Prozess verschoben und der Zugriff erfolgt über eine stabile AIDL-Schnittstelle.

  • IP-Dienste. IpClient (früher IpManager ) ist eine Komponente, die für die Bereitstellung und Wartung der IP-Ebene zuständig ist. In Android 9 wurde es bereits prozessübergreifend von Komponenten wie Bluetooth und prozessintern von Komponenten wie Wi-Fi verwendet. DhcpClient erhält IP-Adressen von DHCP-Servern, damit diese Schnittstellen zugewiesen werden können.

  • NetzwerkMonitor. Die NetworkMonitor Komponente testet die Internet-Erreichbarkeit beim Herstellen einer Verbindung zu einem neuen Netzwerk oder bei Netzwerkausfällen, bei der Erkennung von Captive-Portalen und bei der Validierung von Netzwerken.

  • Captive-Portal-Login-App. Eine vorinstallierte App, die für die Verwaltung der Anmeldung auf Captive-Portalen zuständig ist. Dies ist seit Android 5.0 eine separate App, die jedoch mit NetworkMonitor interagiert, um einige Benutzerentscheidungen an das System weiterzuleiten.

Betroffene Pfade

Die vom Refactor zum Network Stack-Modul verschobenen Pfade sind unten aufgeführt.

  • IP-Dienste. In frameworks/base/services/net/java/android/net/ :

    • apf
    • dhcp
    • ip
    • netlink
    • util (teilweise)
  • Captive-Portal-Erkennung und Anmeldung. In frameworks/base/ :

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

Der neue Speicherort des verschobenen Codes befindet sich in packages/modules/NetworkStack , packages/modules/CaptivePortalLogin und einigen anderen freigegebenen Speicherorten. Die oben genannten Pfade beziehen sich auf den Speicherort der Dateien, bevor sie für Mainline dorthin verschoben werden. Dateien in packages/modules/NetworkStack und packages/modules/CaptivePortalLogin sind Teil des Mainline-Moduls und können nicht geändert werden.

Paketformat

Das Network Stack-Modul enthält die folgenden Komponenten im APK-Format:

  • IP-Dienste
  • Captive-Portal-Anmeldung ( com.google.android.captiveportallogin )

Dieses Modul wird vom Modul Network Stack Permission Config begleitet, bei dem es sich um eine vorinstallierte APK-Datei handelt, die die erforderlichen Berechtigungen für die Network Stack-Komponenten definiert.

Abhängigkeiten

Das Network Stack-Modul hängt von Folgendem ab:

  • Privilegierte @hide-Methoden im Systemserver (z. B. in IConnectivityManager.aidl ). Diese APIs wurden zu @SystemApi gemacht und entsprechend geschützt, sodass sie für das Mainline-Modul zugänglich sind, nicht jedoch für andere privilegierte Apps (z. B. durch Verwendung einer neuen Signaturberechtigung).

  • Binder-IPCs an netd , definiert in INetd.aidl . Diese Schnittstelle wurde auf stabiles AIDL umgestellt und unterliegt Konformitätstests.