Ngăn xếp mạng

Network Stack 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 cách 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 giam giữ và mã đăng nhập giúp Android luôn cập nhật các mô hình cổng thông tin giam giữ đang thay đổi, đồng thời các bản cập nhật cho APF giúp Android tiết kiệm pin khi dùng Wi-Fi khi các loại gói mới trở nên phổ biến.

Các thành phần trong gói

Mô-đun Network Stack chứa các thành phần sau. Trên các thiết bị sử dụng mô-đun này, những dịch vụ này đã được chuyển sang một quy trình khác và được truy cập thông qua một 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 cung cấp và duy trì lớp IP. Trong Android 9, các thành phần như Bluetooth đã sử dụng quy trình này trên nhiều quy trình và các thành phần như Wi-Fi đã sử dụng quy trình này trong quy trình. DhcpClient lấy địa chỉ IP từ máy chủ DHCP để có thể được chỉ định cho các giao diện.

  • NetworkMonitor. Thành phần NetworkMonitor kiểm thử khả năng truy cập Internet khi kết nối với một mạng mới hoặc khi mạng gặp sự cố, 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. Ứng dụng được cài đặt sẵn chịu trách nhiệm quản lý hoạt động đăng nhập trên các 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.

Các đường dẫn bị ảnh hưởng

Dưới đây là danh sách các đường dẫn được di chuyển đến mô-đun Network Stack (Ngăn xếp mạng) bằng cách 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 qua 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 đề cập đến vị trí của tệp trước khi được di 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 Network Stack chứa các thành phần sau ở đị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 của ngăn xếp mạng, đây 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 Network Stack phụ thuộc vào những thành 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 nhưng không thể truy cập vào các ứng dụng có đặc quyền khác (ví dụ: sử dụng quyền chữ ký mới).

  • Binder IPC đến netd được xác định trong INetd.aidl. Giao diện này đã được chuyển đổi thành AIDL ổn định và phải tuân thủ các kiểm thử về sự phù hợp.