اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release
بدلاً من aosp-main
لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
نظرة عامة على النواة
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
تعتمد وظائف رصد ومتابعة استخدام البيانات لكل تطبيق واستخدام البيانات المفوَّضة
على وحدة xt_qtaguid في ملف kernel/net/netfilter/xt_qtaguid
لنظام التشغيل Android 3.0 Linux
. تعتمد وظائف وضع العلامات على مآخذ التوصيل
في إطار العمل (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
).
كيف تعمل هذه الميزة؟
تتتبّع وحدة netfilter في qtaguid
عدد زيارات الشبكة على أساس كل مقبس لكل تطبيق باستخدام المعرّف الفريد للمستخدم (UID) للتطبيق مالك المقبس. هناك مكوّنان للعلامة مرتبطان بأي مقبس في النظام. الأول هو المعرّف المطلق الذي يحدّد بشكل فريد
التطبيق المسؤول عن نقل البيانات (يسمح نظام التشغيل Linux
بتحديد ملكية كل مقبس شبكة
بالاستناد إلى المعرّف المطلق للتطبيق المُرسِل). يتم استخدام مكوّن العلامة الثاني
لتوفير تصنيف إضافي للزيارات إلى الفئات التي يحدّدها
مطوّر التطبيقات. باستخدام هذه العلامات على مستوى التطبيق، يمكن لتطبيقٍ ما تحليل الزيارات إلى عدة فئات فرعية.
في حال التطبيقات التي توفّر نقل البيانات عبر الشبكة كأحد خدماتها، مثل مدير التنزيل وخدمة بث الوسائط وما إلى ذلك،
يمكن إسناد ملكية نقل البيانات عبر الشبكة
إلى المعرّف الفريد للتطبيق الذي يطلب نقل البيانات باستخدام دعوة الدالة
TrafficStats.setThreadStatsUid()
. يجب أن يمتلك المُتصل إذن "android.permission.MODIFY_NETWORK_ACCOUNTING
" لإعادة منح ملكية عدد زيارات الشبكة.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-06-12 (حسب التوقيت العالمي المتفَّق عليه)
[null,null,["تاريخ التعديل الأخير: 2025-06-12 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],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."]]