Сеть

Android 10 включает следующие сетевые модули:

  • Модуль «Сетевые компоненты» предоставляет общие IP-сервисы, мониторинг сетевого подключения и обнаружение авторизованного портала входа в систему.
  • Модуль Network Stack Permission Config определяет разрешение, которое позволяет модулям выполнять задачи, связанные с сетью.

Модуль сетевых компонентов

Модуль сетевых компонентов гарантирует, что Android может адаптироваться к меняющимся сетевым стандартам и обеспечивает совместимость с новыми реализациями. Например, обновления обнаружения портала авторизации и кода входа в систему позволяют Android оставаться в курсе меняющихся моделей портала авторизации, а обновления брандмауэра Advanced Policy Firewall (APF) позволяют Android экономить энергию на Wi-Fi по мере распространения новых типов пакетов.

Изменения в Android 10

Модуль сетевых компонентов содержит следующие компоненты.

  • ИП услуги. Компонент IpClient (ранее IpManager) обеспечивает подготовку и обслуживание IP-уровня. В Android 9 он использовался в кросс-процессе такими компонентами, как Bluetooth, и внутри процесса такими компонентами, как Wi-Fi. Компонент DhcpClient получает IP-адреса от DHCP-серверов, чтобы их можно было назначать интерфейсам.
  • Сетевой монитор. Компонент NetworkMonitor проверяет доступность в Интернете при подключении к новой сети или при сетевых сбоях, при обнаружении авторизованных порталов и при проверке сетей.
  • Приложение авторизации портала Captive. Приложение авторизации портала авторизации — это предустановленное приложение, отвечающее за управление авторизацией на порталах авторизации. Начиная с Android 5.0, это было отдельное приложение, но оно взаимодействует с NetworkMonitor для перенаправления некоторых пользовательских настроек в систему.

На устройствах, использующих модуль Networking Components, вышеперечисленные сервисы рефакторингуются в другой процесс и доступны с использованием стабильных интерфейсов AIDL . Пути рефакторинга показаны в следующих таблицах.

Пути рефакторинга IP Services

Андроид 9 и ниже В frameworks/base/services/net/java/android/net/ :
  • apf
  • dhcp
  • ip
  • netlink
  • util (частично)
Андроид 10 и выше packages/modules/NetworkStack

Пути рефакторинга Captive Portal Login

Андроид 9 и ниже В frameworks/base/ :
  • core/java/android/net/captiveportal/
  • services/core/java/com/android/server/connectivity/NetworkMonitor.java
  • packages/CaptivePortalLogin/* (где * = подстановочный знак)
Андроид 10 и выше packages/modules/CaptivePortalLogin (и некоторые другие общие места)

Формат и зависимости

Модуль Networking Components поставляется в виде трех APK: один для IP-сервисов, один для входа в авторизованный портал и один для конфигурации разрешений сетевого стека .

Модуль сетевых компонентов зависит от следующего:

  • Привилегированные методы @hide на системном сервере (например, в IConnectivityManager.aidl ). Эти API были аннотированы @SystemApi и соответствующим образом защищены, чтобы они были доступны для модуля, но не для других привилегированных приложений (например, с использованием нового разрешения подписи).
  • Связать IPC с netd определенным в INetd.aidl . Этот интерфейс был преобразован в стабильный AIDL и подлежит тестированию на соответствие.

Модуль конфигурации разрешений сетевого стека

Модуль конфигурации разрешения сетевого стека не содержит кода, но вместо этого определяет разрешение, предназначенное для использования модулями сетевого стека и авторизации на портале авторизации. Система позволяет модулям, которым предоставлено это разрешение, выполнять связанные задачи настройки сети на устройстве.