Ngăn xếp mạng

Ngăn xếp mạng là một mô-đun Mainline có thể cập nhật, đảm bảo rằng Android có thể thích ứng với các tiêu chuẩn mạng đang phát triển và cho phép khả năng tương tác với các phương thức triển khai mới. Ví dụ: các bản cập nhật cho tính năng phát hiện cổng thông tin và mã đăng nhập cho phép Android luôn cập nhật các mô hình cổng thông tin đang thay đổi, đồng thời các bản cập nhật cho APF cho phép Android tiết kiệm pin trên Wi-Fi khi các loại gói mới trở nên phổ biến.

Các thành phần đi kèm

Mô-đun Ngăn xếp mạng chứa các thành phần sau. Trên các thiết bị sử dụng mô-đun này, các dịch vụ này đã được chuyển sang một quy trình khác và được truy cập thông qua giao diện AIDL ổn định.

  • Dịch vụ IP. IpClient (trước đây là IpManager) là một thành phần chịu trách nhiệm cấp và bảo trì lớp IP. Trong Android 9, các thành phần như Bluetooth đã sử dụng tính năng này trên nhiều quy trình và các thành phần như Wi-Fi đã sử dụng tính năng này trong quy trình. DhcpClient lấy địa chỉ IP từ các máy chủ DHCP để các máy chủ này có thể được chỉ định cho các giao diện.

  • NetworkMonitor. Thành phần NetworkMonitor kiểm tra khả năng truy cập Internet khi kết nối với một mạng mới hoặc khi xảy ra lỗi mạng, khi phát hiện trang xác thực và khi xác thực mạng.

  • Ứng dụng đăng nhập trang xác thực. Một ứng dụng được cài đặt sẵn, chịu trách nhiệm quản lý việc đăng nhập trên trang xác thực. Đây là một ứng dụng riêng biệt kể từ Android 5.0, nhưng ứng dụng này tương tác với NetworkMonitor để chuyển tiếp một số lựa chọn của người dùng đến hệ thống.

Đường dẫn bị ảnh hưởng

Dưới đây là danh sách các đường dẫn được di chuyển sang mô-đun Ngăn xếp mạng bằng quá trình tái cấu trúc.

  • Dịch vụ IP. Trong frameworks/base/services/net/java/android/net/:

    • apf
    • dhcp
    • ip
    • netlink
    • util (một phần)
  • Phát hiện và đăng nhập vào trang xác thực. Trong frameworks/base/:

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

Vị trí mới của mã đã di chuyển nằm trong packages/modules/NetworkStack, packages/modules/CaptivePortalLogin và một số vị trí dùng chung khác. Các đường dẫn trên tham chiếu đến vị trí của các tệp trước khi được chuyển đến đó cho Mainline. Các tệp trong packages/modules/NetworkStackpackages/modules/CaptivePortalLogin là một phần của mô-đun Mainline và không thể sửa đổi.

Định dạng gói

Mô-đun Ngăn xếp mạng chứa các thành phần sau đây ở định dạng APK:

  • Dịch vụ IP
  • Đăng nhập trang xác thực (com.google.android.captiveportallogin)

Mô-đun này đi kèm với mô-đun Cấu hình quyền ngăn xếp mạng, là một tệp APK được cài đặt sẵn xác định các quyền cần thiết cho các thành phần Ngăn xếp mạng.

Phần phụ thuộc

Mô-đun Ngăn xếp mạng phụ thuộc vào những phần sau:

  • Các phương thức @hide có đặc quyền trong máy chủ hệ thống (ví dụ: trong IConnectivityManager.aidl). Các API này đã được tạo @SystemApi và được bảo vệ thích hợp để có thể truy cập vào mô-đun Mainline chứ không phải các ứng dụng đặc quyền khác (ví dụ: dùng quyền mới về chữ ký).

  • IPC của liên kết đến netd được xác định trong INetd.aidl. Giao diện này đã được chuyển đổi sang AIDL ổn định và tuân theo các quy trình kiểm thử tính tuân thủ.