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
(dawniejIpManager
) 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 wINetd.aidl
. Interfejs ten został przekonwertowany na stabilny AIDL i podlega testom zgodności.