Сетевой стек

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

Включенные компоненты

Модуль Network Stack содержит следующие компоненты. На устройствах, использующих этот модуль, эти службы были перенесены в другой процесс и доступны через стабильный интерфейс AIDL.

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

  • Компонент NetworkMonitor проверяет доступность интернета при подключении к новой сети или при сбоях NetworkMonitor сети, при обнаружении порталов авторизации и при проверке сетей.

  • Приложение для авторизации через портал авторизации. Предустановленное приложение, отвечающее за управление авторизацией через порталы авторизации. Начиная с Android 5.0, это отдельное приложение, но оно взаимодействует с NetworkMonitor для передачи некоторых пользовательских настроек в систему.

Затронутые пути

Ниже перечислены пути, перемещенные в модуль Network Stack в результате рефакторинга.

  • IP-сервисы. В frameworks/base/services/net/java/android/net/ :

    • apf
    • dhcp
    • ip
    • netlink
    • util (частично)
  • Обнаружение и авторизация через портал авторизации. В frameworks/base/ :

    • core/java/android/net/captiveportal/
    • services/core/java/com/android/server/connectivity/NetworkMonitor.java
    • packages/CaptivePortalLogin/*

Новое местоположение перемещенного кода — в packages/modules/NetworkStack , packages/modules/CaptivePortalLogin и некоторых других общих папках. Указанные выше пути относятся к расположению файлов до их перемещения в основную ветку разработки. Файлы в packages/modules/NetworkStack и packages/modules/CaptivePortalLogin являются частью модуля основной ветки разработки и не могут быть изменены.

Формат упаковки

Модуль Network Stack содержит следующие компоненты в формате APK:

  • IP-сервисы
  • Вход через портал авторизации ( com.google.android.captiveportallogin )

Этот модуль поставляется в комплекте с модулем Network Stack Permission Config, который представляет собой предустановленный APK-файл, определяющий необходимые разрешения для компонентов сетевого стека.

Зависимости

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

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

  • Интерфейсы межпроцессного взаимодействия (IPC) Binder к netd определены в файле INetd.aidl . Этот интерфейс был преобразован в стабильный AIDL и подлежит проверке на соответствие стандартам.