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 portali przechwytujących i kodu logowania pozwalają Androidowi być na bieżąco ze zmieniającymi się modelami portali przechwytujących, a aktualizacje APF pozwalają Androidowi oszczędzać energię Wi-Fi, gdy nowe typy pakietów stają się powszechne.
Dołączone komponenty
Moduł Network Stack 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
(wcześniejIpManager
) jest komponentem odpowiedzialnym za udostępnianie i konserwację warstwy IP. W systemie Android 9 był już używany w procesach krzyżowych przez komponenty, takie jak Bluetooth, oraz w procesie przez komponenty, takie jak Wi-Fi.DhcpClient
uzyskuje adresy IP z serwerów DHCP, dzięki czemu można je przypisać do interfejsów.Monitor sieci. Komponent
NetworkMonitor
sprawdza 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 logowania do portalu Captive. Preinstalowana aplikacja odpowiedzialna za zarządzanie logowaniem na portalach przechwytujących. Od wersji Androida 5.0 jest to oddzielna aplikacja, ale współpracuje z
NetworkMonitor
, przekazując niektóre wybory użytkownika do systemu.
Dotknięte ścieżki
Ścieżki przeniesione do modułu Network Stack przez refaktor są wymienione poniżej.
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 znajduje się w packages/modules/NetworkStack
, packages/modules/CaptivePortalLogin
i kilku innych udostępnionych lokalizacjach. 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 opakowania
Moduł Network Stack zawiera następujące komponenty w formacie APK:
- usługi IP
- Logowanie do portalu Captive (
com.google.android.captiveportallogin
)
Do tego modułu dołączony jest moduł Network Stack Permission Config, który jest preinstalowanym plikiem APK definiującym 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 w@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).Powiąż IPC z
netd
zdefiniowanymi wINetd.aidl
. Ten interfejs został przekonwertowany na stabilny AIDL i podlega testom zgodności.