Stos sieciowy

Network Stack to aktualizowalny moduł Mainline, który zapewnia, że ​​Android może dostosować się do zmieniających się standardów sieciowych i umożliwia interoperacyjność z nowymi implementacjami. Na przykład aktualizacje wykrywania portalu przechwytującego i kodu logowania pozwalają systemowi Android być na bieżąco ze zmieniającymi się modelami portalu przechwytującego, a aktualizacje APF pozwalają Androidowi oszczędzać energię w sieci Wi-Fi w miarę upowszechniania się nowych typów pakietów.

Dołączone komponenty

Moduł stosu sieciowego zawiera następujące komponenty. Na urządzeniach korzystających z modułu usługi te zostały przeniesione do innego procesu i są dostępne poprzez stabilny interfejs AIDL.

  • Usługi IP. IpClient (dawniej IpManager ) to komponent odpowiedzialny za dostarczanie i konserwację warstwy IP. W systemie Android 9 był już używany między procesami przez komponenty takie jak Bluetooth i w procesie przez komponenty takie jak Wi-Fi. DhcpClient uzyskuje adresy IP z serwerów DHCP, aby można je było przypisać do interfejsów.

  • Monitor sieci. Komponent NetworkMonitor testuje dostępność Internetu podczas łączenia się z nową siecią lub w przypadku awarii sieci, podczas wykrywania portali przechwytujących i podczas sprawdzania poprawności sieci.

  • Aplikacja do logowania do portalu Captive. Preinstalowana aplikacja odpowiedzialna za zarządzanie logowaniem na portalach przechwytujących. Jest to osobna aplikacja od wersji Androida 5.0, ale współdziała z NetworkMonitor w celu przekazywania niektórych wyborów użytkownika do systemu.

Dotknięte ścieżki

Poniżej wymieniono ścieżki przeniesione do modułu Network Stack przez refaktor.

  • Usługi IP. W frameworks/base/services/net/java/android/net/ :

    • apf
    • dhcp
    • ip
    • netlink
    • util (częściowo)
  • Wykrywanie portalu przechwytującego i logowanie. W frameworks/base/ :

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

Nowa lokalizacja przeniesionego kodu to packages/modules/NetworkStack , packages/modules/CaptivePortalLogin i kilka innych współdzielonych lokalizacji. Powyższe ścieżki odnoszą się do lokalizacji plików przed przeniesieniem tam dla Mainline. Pliki w packages/modules/NetworkStack i packages/modules/CaptivePortalLogin są częścią modułu Mainline i nie można ich modyfikować.

Format pakietu

Moduł Network Stack zawiera następujące komponenty w formacie APK:

  • Usługi IP
  • Logowanie do portalu przechwytującego ( com.google.android.captiveportallogin )

Do modułu tego dołączony jest moduł Network Stack Permission Config, który jest preinstalowanym plikiem APK, który definiuje niezbędne uprawnienia dla komponentów Network Stack.

Zależności

Moduł stosu sieciowego zależy od następujących elementów:

  • Uprzywilejowane metody @hide na serwerze systemowym (np. w IConnectivityManager.aidl ). Te interfejsy API zostały utworzone @SystemApi i odpowiednio zabezpieczone, dzięki czemu są dostępne dla modułu Mainline, ale nie dla innych uprzywilejowanych aplikacji (np. przy użyciu nowego uprawnienia do podpisu).

  • Binder IPC do netd zdefiniowany w INetd.aidl . Interfejs ten został przekonwertowany na stabilny AIDL i podlega testom zgodności.