Netzwerkstack

Der Netzwerkstack ist ein aktualisierbares Mainline-Modul, das dafür sorgt, dass Android an sich ändernde Netzwerkstandards angepasst werden kann und die Interoperabilität mit neuen Implementierungen ermöglicht. So können Android-Geräte dank der Aktualisierungen der Captive Portal-Erkennung und des Anmeldencodes mit sich ändernden Captive Portal-Modellen Schritt halten. Durch Aktualisierungen der APF kann Android-Geräte außerdem beim WLAN-Nutzung Strom sparen, wenn neue Pakettypen üblich werden.

Enthaltene Komponenten

Das Netzwerkstack-Modul enthält die folgenden Komponenten. Auf Geräten, auf denen das Modul verwendet wird, 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‑Schicht verantwortlich ist. In Android 9 wurde er bereits von Komponenten wie Bluetooth prozessübergreifend und von Komponenten wie WLAN prozessintern verwendet. DhcpClient ruft IP-Adressen von DHCP-Servern ab, damit sie Schnittstellen zugewiesen werden können.

  • NetworkMonitor Die NetworkMonitor-Komponente prüft die Internetverbindung bei der Verbindung mit einem neuen Netzwerk oder bei Netzwerkausfällen, beim Erkennen von Captive Portals und bei der Validierung von Netzwerken.

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

Betroffene Pfade

Die Pfade, die durch die Umstrukturierung in das Netzwerkstack-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 neue Speicherort des verschobenen Codes befindet sich unter packages/modules/NetworkStack, packages/modules/CaptivePortalLogin und einigen anderen freigegebenen Speicherorten. Die oben genannten Pfade beziehen sich auf den Speicherort der Dateien, bevor sie dorthin für Mainline 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 Netzwerkstack-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, die die erforderlichen Berechtigungen für die Netzwerkstack-Komponenten definiert.

Abhängigkeiten

Das Netzwerkstack-Modul hängt von Folgendem ab:

  • Berechtigte @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 berechtigte Apps zugänglich sind (z.B. mit einer neuen Signaturberechtigung).

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