Kể từ ngày 27 tháng 3 năm 2025, bạn nên sử dụng android-latest-release
thay vì aosp-main
để xây dựng và đóng góp cho AOSP. Để biết thêm thông tin, hãy xem phần Thay đổi đối với AOSP.
Tổng quan về số liệu thống kê về giao diện mạng
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Trong Android 4.0, số liệu thống kê do giao diện mạng Linux báo cáo được ghi lại theo thời gian và được dùng để thực thi các hạn mức hạn mức mạng, hiển thị biểu đồ mà người dùng nhìn thấy, v.v.
Mỗi trình điều khiển thiết bị mạng (bao gồm cả Wi-Fi) phải tuân theo vòng đời thiết bị hạt nhân tiêu chuẩn và trả về số liệu thống kê chính xác thông qua dev_get_stats()
. Cụ thể, số liệu thống kê được trả về phải luôn tăng dần một cách nghiêm ngặt trong khi giao diện đang hoạt động. Trình điều khiển chỉ có thể đặt lại thống kê sau khi hoàn tất thành công unregister_netdev()
hoặc tương đương để tạo sự kiện NETDEV_UNREGISTER
cho lệnh gọi lại được đăng ký bằng register_netdevice_notifier()
/register_inetaddr_notifier()
/ register_inet6addr_notifier()
.
Các nhà mạng di động thường đo lường mức sử dụng dữ liệu ở lớp Internet (IP). Để phù hợp với phương pháp này trong Android 4.0, chúng ta dựa vào thực tế là đối với các thiết bị hạt nhân, chúng ta quan tâm đến các giá trị rx_bytes
và tx_bytes
do dev_get_stats()
trả về chính xác là số byte lớp Internet (IP
) được chuyển. Nhưng chúng tôi hiểu rằng đối với các thiết bị khác, điều này có thể không đúng. Hiện tại, tính năng này dựa vào đặc điểm này. Trình điều khiển mới cũng phải có thuộc tính đó và giá trị dev_get_stats()
không được bao gồm bất kỳ hao tổn đóng gói nào của các lớp mạng thấp hơn (chẳng hạn như tiêu đề Ethernet) và tốt nhất là không bao gồm lưu lượng truy cập khác (chẳng hạn như ARP) trừ khi lưu lượng truy cập đó không đáng kể.
Khung Android chỉ thu thập số liệu thống kê từ các giao diện mạng liên kết với NetworkStateTracker
trong ConnectivityService
. Điều này cho phép khung xác định cụ thể từng giao diện mạng, bao gồm cả loại giao diện (chẳng hạn như TYPE_MOBILE
hoặc TYPE_WIFI
) và danh tính người đăng ký (chẳng hạn như IMSI). Tất cả giao diện mạng dùng để định tuyến dữ liệu phải được biểu thị bằng NetworkStateTracker
để có thể tính toán số liệu thống kê một cách chính xác.
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2025-03-26 UTC.
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2025-03-26 UTC."],[],[],null,["# Network interface statistics overview\n\nIn Android 4.0, statistics reported by Linux network interfaces are\nrecorded over time, and are used to enforce network quota limits,\nrender user-visible charts, and more.\n\nEach network device driver (Wi-Fi included) must follow the standard\nkernel device lifecycle, and return correct statistics through\n`dev_get_stats()`. In particular, statistics returned must remain\nstrictly monotonic while the interface is active. Drivers may reset\nstatistics only after successfully completing an `unregister_netdev()`\nor the equivalent that generates a `NETDEV_UNREGISTER` event for\ncallbacks registered with `register_netdevice_notifier()` /\n`register_inetaddr_notifier()` / `register_inet6addr_notifier()`.\n\nMobile operators typically measure data usage at the Internet layer\n(IP). To match this approach in Android 4.0, we rely on the fact that\nfor the kernel devices we care about the `rx_bytes` and `tx_bytes`\nvalues returned by `dev_get_stats()` return exactly the Internet layer\n(`IP`) bytes transferred. But we understand that for other devices it\nmight not be the case. For now, the feature relies on this\npeculiarity. New drivers should have that property also, and the\n`dev_get_stats()` values must not include any encapsulation overhead\nof lower network layers (such as Ethernet headers), and should\npreferably not include other traffic (such as ARP) unless it is\nnegligible.\n\nThe Android framework only collects statistics from network interfaces\nassociated with a `NetworkStateTracker` in `ConnectivityService`. This\nenables the framework to concretely identify each network interface,\nincluding its type (such as `TYPE_MOBILE` or `TYPE_WIFI`) and\nsubscriber identity (such as IMSI). All network interfaces used to\nroute data should be represented by a `NetworkStateTracker` so that\nstatistics can be accounted correctly."]]