Stos sieciowy

Warstwę sieciową można aktualizować. Jest to moduł Mainline, który zapewnia, że Android może dostosowywać się do zmieniających się standardów sieciowych i umożliwia współdziałanie z nowymi implementacjami. Na przykład aktualizacje kodu logowania i wykrywania portali ograniczonego dostępu pozwalają Androidowi nadążać za zmieniającymi się modelami portali ograniczonego dostępu, a aktualizacje APF pozwalają Androidowi oszczędzać energię w sieci Wi-Fi, gdy nowe typy pakietów stają się powszechne.

Dołączone komponenty

Moduł sieciowy zawiera te komponenty: Na urządzeniach korzystających z modułu te usługi zostały przeniesione do innego procesu i są dostępne za pomocą stabilnego interfejsu AIDL.

  • Usługi IP. IpClient (wcześniej IpManager) to komponent odpowiedzialny za konfigurowanie i utrzymanie warstwy IP. W Androidzie 9 był już używany w procesach między komponentami, takich jak Bluetooth, oraz w procesach wewnątrz komponentów, takich jak Wi-Fi. DhcpClient uzyskuje adresy IP z serwerów DHCP, aby można je było przypisać do interfejsów.

  • NetworkMonitor. Komponent NetworkMonitor sprawdza dostępność z internetem podczas nawiązywania połączenia z nową siecią, w przypadku awarii sieci, wykrywania portali przechwytujących i weryfikacji sieci.

  • Aplikacja do logowania w portalu przechwytującym – wstępnie zainstalowana aplikacja odpowiedzialna za zarządzanie logowaniem w portalach przechwytujących. Od wersji 5.0 Androida jest to osobna aplikacja, ale współpracuje z NetworkMonitor, aby przekazywać niektóre wybory użytkownika do systemu.

Ścieżki, których dotyczy problem

Poniżej znajdziesz ścieżki przeniesione do modułu stosu sieciowego przy użyciu refaktoryzacji.

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

    • apf
    • dhcp
    • ip
    • netlink
    • util (częściowo)
  • Wykrywanie portalu przechwytującego i logowanie się.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 udostępnionych lokalizacji. Powyższe ścieżki odnoszą się do lokalizacji plików przed ich przeniesieniem do Mainline. Pliki w folderach packages/modules/NetworkStackpackages/modules/CaptivePortalLogin są częścią modułu Mainline i nie można ich modyfikować.

Format pakietu

Moduł modułu sieci zawiera te komponenty w formacie APK:

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

Ten moduł jest uzupełniony modułem konfiguracji uprawnień modułu sieciowego, który jest wstępnie zainstalowanym plikiem APK definiującym niezbędne uprawnienia dla komponentów modułu sieciowego.

Zależności

Moduł stosu sieciowego zależy od tych czynników:

  • Metody @hide z podwyższonymi uprawnieniami na serwerze systemowym (np. w IConnectivityManager.aidl). Te interfejsy API zostały udostępnione @SystemApi i są odpowiednio chronione, aby były dostępne dla modułu Mainline, ale nie dla innych aplikacji z podwyższonymi uprawnieniami (np. przez nowe uprawnienia do podpisywania).

  • IPC bindera do netd zdefiniowane w INetd.aidl. Ten interfejs został przekonwertowany na stabilną wersję AIDL i podlega testom zgodności.