مكدس الشبكة

Network Stack عبارة عن وحدة Mainline قابلة للتحديث تضمن قدرة Android على التكيف مع معايير الشبكة المتطورة وتسمح بإمكانية التشغيل التفاعلي مع التطبيقات الجديدة. على سبيل المثال، تسمح تحديثات اكتشاف البوابة المقيدة ورمز تسجيل الدخول لنظام Android بالبقاء على اطلاع بنماذج البوابة المقيدة المتغيرة، وتسمح تحديثات APF لنظام Android بتوفير الطاقة على شبكة Wi-Fi حيث أصبحت الأنواع الجديدة من الحزم شائعة.

المكونات المتضمنة

تحتوي وحدة Network Stack على المكونات التالية. على الأجهزة التي تستخدم الوحدة، تم نقل هذه الخدمات إلى عملية مختلفة ويمكن الوصول إليها من خلال واجهة AIDL مستقرة.

  • خدمات الملكية الفكرية. يعد IpClient (المعروف سابقًا IpManager ) أحد المكونات المسؤولة عن توفير طبقة IP وصيانتها. في Android 9، تم استخدامه بالفعل عبر المعالجة بواسطة مكونات مثل Bluetooth، وفي المعالجة بواسطة مكونات مثل Wi-Fi. يحصل DhcpClient على عناوين IP من خوادم DHCP حتى يمكن تخصيصها للواجهات.

  • مراقب الشبكة. يقوم مكون NetworkMonitor باختبار إمكانية الوصول إلى الإنترنت عند الاتصال بشبكة جديدة أو عند فشل الشبكة، وعند اكتشاف البوابات المقيدة، وعند التحقق من صحة الشبكات.

  • تطبيق تسجيل الدخول إلى البوابة الأسير. تطبيق مثبت مسبقًا مسؤول عن إدارة تسجيل الدخول على البوابات المقيدة. لقد كان هذا تطبيقًا منفصلاً منذ Android 5.0، ولكنه يتفاعل مع NetworkMonitor لإعادة توجيه بعض اختيارات المستخدم إلى النظام.

المسارات المتأثرة

المسارات التي تم نقلها إلى وحدة Network Stack بواسطة المُعيد مذكورة أدناه.

  • خدمات الملكية الفكرية. في frameworks/base/services/net/java/android/net/ :

    • apf
    • dhcp
    • ip
    • netlink
    • util (جزئيا)
  • كشف البوابة الأسير وتسجيل الدخول. في frameworks/base/ :

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

الموقع الجديد للتعليمات البرمجية المنقولة موجود في packages/modules/NetworkStack و packages/modules/CaptivePortalLogin وبعض المواقع المشتركة الأخرى. تشير المسارات المذكورة أعلاه إلى موقع الملفات قبل نقلها إلى Mainline. تعد الملفات الموجودة في packages/modules/NetworkStack والحزم packages/modules/CaptivePortalLogin جزءًا من وحدة Mainline ولا يمكن تعديلها.

تنسيق الحزمة

تحتوي وحدة Network Stack على المكونات التالية بتنسيق APK:

  • خدمات الملكية الفكرية
  • تسجيل الدخول إلى البوابة المقيدة ( com.google.android.captiveportallogin )

هذه الوحدة مصحوبة بوحدة Network Stack Permission Config، وهي عبارة عن ملف APK مثبت مسبقًا يحدد الأذونات اللازمة لمكونات Network Stack.

التبعيات

تعتمد وحدة Network Stack على ما يلي:

  • طرق @hide المميزة في خادم النظام (على سبيل المثال، في IConnectivityManager.aidl ). تم إنشاء واجهات برمجة التطبيقات هذه @SystemApi وحمايتها بشكل مناسب بحيث يمكن الوصول إليها من خلال وحدة Mainline ولكن ليس من خلال التطبيقات المميزة الأخرى (على سبيل المثال، باستخدام إذن توقيع جديد).

  • ربط IPCs بـ netd المحدد في INetd.aidl . تم تحويل هذه الواجهة إلى AIDL مستقر وتخضع لاختبارات التوافق.