Netzwerkstack

Der Netzwerk-Stack ist ein aktualisierbares Mainline-Modul, mit dem Android sich an sich entwickelnde Netzwerkstandards anpassen kann und die Interoperabilität mit neuen Implementierungen ermöglicht. Beispielsweise sorgen Updates für die Captive Portal-Erkennung und den Anmeldecode dafür, dass Android mit sich ändernden Captive Portal-Modellen auf dem neuesten Stand bleibt. Updates für APF ermöglichen es Android, Strom zu sparen, wenn neue Arten von Paketen üblich werden.

Enthaltene Komponenten

Das Modul „Netzwerk-Stack“ enthält die folgenden Komponenten. Auf Geräten, die das Modul verwenden, wurden diese Dienste in einen anderen Prozess verschoben und sind über eine stabile AIDL-Schnittstelle zugänglich.

  • IP-Dienste : IpClient (ehemals IpManager) ist eine Komponente, die für die Bereitstellung und Wartung der IP-Schicht zuständig ist. In Android 9 wurde sie bereits prozessübergreifend von Komponenten wie Bluetooth und prozessintern von Komponenten wie WLAN verwendet. DhcpClient ruft IP-Adressen von DHCP-Servern ab, damit sie Schnittstellen zugewiesen werden können.

  • NetworkMonitor : Die Komponente NetworkMonitor testet die Internetverfügbarkeit, wenn eine Verbindung zu einem neuen Netzwerk hergestellt wird oder bei Netzwerkausfällen, wenn Captive Portale erkannt werden und wenn Netzwerke validiert werden.

  • Captive Portal-Anmelde-App : Eine vorinstallierte App, die für die Verwaltung der Anmeldung bei Captive Portalen zuständig ist. Sie ist seit Android 5.0 eine separate App, interagiert aber mit NetworkMonitor, um einige Nutzerauswahlen an das System weiterzuleiten.

Betroffene Pfade

Die Pfade, die durch die Umgestaltung in das Modul „Netzwerk-Stack“ verschoben wurden, 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 ist packages/modules/NetworkStack, packages/modules/CaptivePortalLogin und einige andere freigegebene Speicherorte. Die oben genannten Pfade beziehen sich auf den Speicherort der Dateien, bevor sie für Mainline dorthin verschoben wurden. Dateien in packages/modules/NetworkStack und packages/modules/CaptivePortalLogin sind Teil des Mainline-Moduls und können nicht geändert werden.

Paketformat

Das Modul „Netzwerk-Stack“ 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. Dabei handelt es sich um eine vorinstallierte APK-Datei, die die erforderlichen Berechtigungen für die Komponenten des Netzwerk-Stacks definiert.

Abhängigkeiten

Das Modul „Netzwerk-Stack“ ist von Folgendem abhängig:

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

  • Binder-IPCs zu netd, die in INetd.aidl definiert sind. Diese Schnittstelle wurde in stabiles AIDL konvertiert und unterliegt Konformitätstests.