Сетевой стек — это обновляемый модуль Mainline, который обеспечивает адаптацию Android к развивающимся сетевым стандартам и взаимодействие с новыми реализациями. Например, обновления обнаружения порталов авторизации и кода входа позволяют Android быть в курсе меняющихся моделей порталов авторизации, а обновления APF позволяют Android экономить заряд батареи Wi-Fi по мере распространения новых типов пакетов.
Включенные компоненты
Модуль сетевого стека содержит следующие компоненты. На устройствах, использующих этот модуль, эти службы были вынесены в другой процесс и доступны через стабильный интерфейс AIDL.
IP-сервисы.
IpClient(ранееIpManager) — компонент, отвечающий за предоставление и обслуживание IP-уровня. В Android 9 он уже использовался кросс-процессно такими компонентами, как Bluetooth, и внутрипроцессно такими компонентами, как Wi-Fi.DhcpClientполучает IP-адреса от DHCP-серверов для назначения их интерфейсам.NetworkMonitor. Компонент
NetworkMonitorпроверяет доступность интернета при подключении к новой сети или при сбоях в работе сети, при обнаружении порталов авторизации и при проверке сетей.Приложение для входа в систему Captive Portal. Предустановленное приложение, отвечающее за управление входом в систему Captive Portal. Начиная с Android 5.0, оно является отдельным приложением, но взаимодействует с
NetworkMonitorдля передачи некоторых действий пользователя в систему.
Затронутые пути
Пути, перенесенные в модуль сетевого стека в результате рефакторинга, перечислены ниже.
IP-сервисы. В
frameworks/base/services/net/java/android/net/:-
apf -
dhcp -
ip -
netlink -
util(частично)
-
Обнаружение и вход в систему портала Captive. В
frameworks/base/:-
core/java/android/net/captiveportal/ -
services/core/java/com/android/server/connectivity/NetworkMonitor.java -
packages/CaptivePortalLogin/*
-
Новое расположение перенесённого кода: packages/modules/NetworkStack , packages/modules/CaptivePortalLogin и некоторые другие общие расположения. Указанные выше пути относятся к расположению файлов до их перемещения в Mainline. Файлы в packages/modules/NetworkStack и packages/modules/CaptivePortalLogin являются частью модуля Mainline и не могут быть изменены.
Формат упаковки
Модуль сетевого стека содержит следующие компоненты в формате APK:
- IP-услуги
- Вход в портал Captive (
com.google.android.captiveportallogin)
Этот модуль сопровождается модулем конфигурации разрешений сетевого стека, который представляет собой предустановленный APK-файл, определяющий необходимые разрешения для компонентов сетевого стека.
Зависимости
Модуль сетевого стека зависит от следующего:
Привилегированные методы @hide на системном сервере (например, в
IConnectivityManager.aidl). Эти API были преобразованы в@SystemApiи соответствующим образом защищены, чтобы они были доступны модулю Mainline, но не другим привилегированным приложениям (например, с использованием нового разрешения подписи).Привязка IPC к
netd, определённому вINetd.aidl. Этот интерфейс был преобразован в стабильный AIDL и проходит тесты на соответствие.