ตั้งแต่วันที่ 27 มีนาคม 2025 เป็นต้นไป เราขอแนะนำให้ใช้ android-latest-release
แทน aosp-main
เพื่อสร้างและมีส่วนร่วมใน AOSP โปรดดูข้อมูลเพิ่มเติมที่หัวข้อการเปลี่ยนแปลงใน AOSP
ภาพรวมของเคอร์เนล
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
ฟังก์ชันการตรวจสอบและการติดตามปริมาณการใช้อินเทอร์เน็ตต่อแอปและที่มอบสิทธิ์นั้นใช้โมดูล xt_qtaguid ในเคอร์เนล Linux ของ android-3.0 (kernel/net/netfilter/xt_qtaguid
) ฟังก์ชันการติดแท็กซ็อกเก็ตในเฟรมเวิร์ก (system/core/libcutils/qtaguid.c
) นั้นอาศัยการมีอินเทอร์เฟซ /proc/net/xt_qtaguid/ctrl
ที่ส่งออกโดยโมดูลเคอร์เนล xt_qtaguid
เป็นส่วนใหญ่
quota2
โมดูล netfilter (เดิมเป็นส่วนหนึ่งของ xtables-addons
) ช่วยให้คุณตั้งค่าขีดจำกัดโควต้าที่มีชื่อได้ และขยายการทำงานเพื่อรองรับการแจ้งเตือนพื้นที่ผู้ใช้เมื่อถึงขีดจำกัดที่กำหนด เมื่อถึงขีดจํากัดโควต้าแล้ว โมดูล quota2
จะทิ้งการรับส่งข้อมูลในเครือข่ายทั้งหมดที่ตามมา เฟรมเวิร์กยังระบุกฎเพิ่มเติมเพื่อจำกัดการรับส่งข้อมูลในเบื้องหลังสำหรับแอปได้ด้วย (ดูcom.android.server.NetworkManagementSocketTagger.setKernelCounterSet
และandroid.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND
)
วิธีการทำงาน
qtaguid
โมดูล netfilter จะติดตามการเข้าชมเครือข่ายตามแต่ละซ็อกเก็ตสําหรับทุกแอปโดยใช้ UID ที่ไม่ซ้ำกันของแอปที่เป็นเจ้าของ คอมโพเนนต์แท็ก 2 รายการจะเชื่อมโยงกับซ็อกเก็ตในระบบ รายการแรกคือ UID ซึ่งระบุแอปที่รับผิดชอบการโอนข้อมูลโดยไม่ซ้ำกัน (Linux อนุญาตให้ระบุความเป็นเจ้าของของซ็อกเก็ตเครือข่ายแต่ละรายการเป็น UID ของแอปที่เรียกใช้) ส่วนประกอบแท็กที่ 2 ใช้เพื่อรองรับการระบุลักษณะการเข้าชมเพิ่มเติมในหมวดหมู่ที่นักพัฒนาแอประบุ การใช้แท็กระดับแอปเหล่านี้จะช่วยให้แอปสามารถแบ่งกลุ่มการเข้าชมออกเป็นหมวดหมู่ย่อยได้หลายหมวดหมู่
ในกรณีที่แอปให้บริการโอนข้อมูลผ่านเครือข่าย เช่น ตัวจัดการการดาวน์โหลด บริการสตรีมมิงสื่อ ฯลฯ คุณสามารถระบุแหล่งที่มาของการเป็นเจ้าของการโอนข้อมูลผ่านเครือข่ายเป็น UID ของแอปที่ขอได้โดยใช้TrafficStats.setThreadStatsUid()
การเรียกใช้ฟังก์ชัน ผู้เรียกต้องถือสิทธิ์ "android.permission.MODIFY_NETWORK_ACCOUNTING
" เพื่อกำหนดการเป็นเจ้าของการรับส่งข้อมูลในเครือข่ายอีกครั้ง
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2025-06-12 UTC
[[["เข้าใจง่าย","easyToUnderstand","thumb-up"],["แก้ปัญหาของฉันได้","solvedMyProblem","thumb-up"],["อื่นๆ","otherUp","thumb-up"]],[["ไม่มีข้อมูลที่ฉันต้องการ","missingTheInformationINeed","thumb-down"],["ซับซ้อนเกินไป/มีหลายขั้นตอนมากเกินไป","tooComplicatedTooManySteps","thumb-down"],["ล้าสมัย","outOfDate","thumb-down"],["ปัญหาเกี่ยวกับการแปล","translationIssue","thumb-down"],["ตัวอย่าง/ปัญหาเกี่ยวกับโค้ด","samplesCodeIssue","thumb-down"],["อื่นๆ","otherDown","thumb-down"]],["อัปเดตล่าสุด 2025-06-12 UTC"],[],[],null,["# Kernel overview\n\nThe per-app and delegated data usage monitoring and tracking\nfunctionality relies on the xt_qtaguid module in the android-3.0 Linux\nkernel (`kernel/net/netfilter/xt_qtaguid`). The socket tagging\nfunctionality in the framework (`system/core/libcutils/qtaguid.c`)\nrelies mainly on the existence of `/proc/net/xt_qtaguid/ctrl`\ninterface exported by the `xt_qtaguid` kernel module.\n| **Note:** Support for `xt_qtaguid` will be phased out starting in the Android 9 release. See [eBPF Traffic\n| Monitoring](/docs/core/data/ebpf-traffic-monitor) for more information.\n\nThe `quota2` netfilter module (originally part of `xtables-addons`)\nallows the functionality to set named quota limits and was extended to\nsupport notifying userspace when certain limits are reached. Once the\nquota limit is reached, the `quota2` module discards all subsequent\nnetwork traffic. The framework can also specify additional rules to\nrestrict background data traffic for an app (refer to\n`com.android.server.NetworkManagementSocketTagger.setKernelCounterSet`\nand\n`android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND`).\n\nHow does it work?\n-----------------\n\nThe `qtaguid` netfilter module tracks the network traffic on a\nper-socket basis for every app using the unique UID of the\nowning app. There are two tag components associated with any\nsocket in the system. The first is the UID which uniquely identifies\nthe app which is responsible for the data transfer (Linux\nallows the ability to ascribe the ownership of each network socket to\nthe UID of the calling app). The second tag component is used\nto support additional characterization of the traffic into app\ndeveloper specified categories. Using these app level tags, an\napp can profile the traffic into several sub-categories.\n\nIn the case of apps that provide network data transfer as a\nservice, such as the download manager, media streaming service, etc,\nit is possible to attribute the ownership of the network data transfer\nto the UID of the requesting app using the\n`TrafficStats.setThreadStatsUid()` function call. The caller must hold\nthe \"`android.permission.MODIFY_NETWORK_ACCOUNTING`\" permission to\nre-assign the ownership of the network traffic."]]