Netzwerkstack

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

Enthaltene Komponenten

Das Modul „Network Stack“ enthält die folgenden Komponenten. Auf Geräten, auf denen das Modul verwendet wird, wurden diese Dienste in einen anderen Prozess verschoben und werden über eine stabile AIDL-Schnittstelle aufgerufen.

  • IP-Dienste IpClient (früher IpManager) ist eine Komponente, die für die Bereitstellung und Wartung der IP-Schicht zuständig ist. In Android 9 wurde es 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 NetworkMonitor-Komponente testet die Erreichbarkeit des Internets, wenn eine Verbindung zu einem neuen Netzwerk hergestellt wird, bei Netzwerkfehlern, beim Erkennen von Captive Portals und beim Validieren von Netzwerken.

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

Betroffene Pfade

Die Pfade, die durch das Refactoring in das Network Stack-Modul 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 verschobene Code befindet sich jetzt in packages/modules/NetworkStack, packages/modules/CaptivePortalLogin und einigen anderen freigegebenen Speicherorten. Die oben genannten Pfade beziehen sich auf den Speicherort von 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 Network Stack-Modul enthält die folgenden Komponenten im APK-Format:

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

Dieses Modul wird vom Modul „Network Stack Permission Config“ begleitet. Dabei handelt es sich um eine vorinstallierte APK-Datei, in der die erforderlichen Berechtigungen für die Network Stack-Komponenten definiert sind.

Abhängigkeiten

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

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

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