Stos sieciowy

Warstwę sieciową stanowi moduł Mainline, który można aktualizować. Dzięki temu 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 portalu przechwytującego pozwalają Androidowi nadążać za zmieniającymi się modelami portali przechwytujących, a aktualizacje APF pozwalają Androidowi oszczędzać energię w sieci Wi-Fi, ponieważ 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ł on 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ść internetu podczas łączenia się z nową siecią lub po wystąpieniu awarii sieci, podczas wykrywania portali przechwytujących oraz podczas sprawdzania 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

Ścieżki przeniesione do modułu Network Stack przez refaktoryzację wymieniono poniżej.

  • Usługi IPframeworks/base/services/net/java/android/net/:

    • apf
    • dhcp
    • ip
    • netlink
    • util (częściowo)
  • Wykrywanie portalu przechwytującego i logowanie.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 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 związane z prawami własności intelektualnej
  • 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ł „Bezpieczeństwo sieci” zależy od tych czynników:

  • Prywatne metody @hide w systemie serwera (np. w IConnectivityManager.aidl). Te interfejsy API zostały @SystemApi i odpowiednio zabezpieczone, aby były dostępne dla modułu Mainline, ale nie dla innych aplikacji z przywilejami (np. za pomocą nowego uprawnienia dotyczącego podpisu).

  • Binder IPCs to netd zdefiniowany w INetd.aidl. Ten interfejs został przekonwertowany na stabilną wersję AIDL i podlega testom zgodności.