پشته شبکه

Network Stack یک ماژول Mainline قابل به‌روزرسانی است که تضمین می‌کند اندروید می‌تواند با استانداردهای شبکه در حال تحول سازگار شود و امکان همکاری با پیاده‌سازی‌های جدید را فراهم می‌کند. به عنوان مثال، به‌روزرسانی‌های شناسایی پورتال محصور و کد ورود به سیستم به اندروید اجازه می‌دهد تا با تغییر مدل‌های پورتال محصور به‌روز بماند، و به‌روزرسانی‌های APF به Android اجازه می‌دهد تا با رایج شدن انواع جدید بسته‌ها، در مصرف برق Wi-Fi صرفه‌جویی کند.

اجزای شامل

ماژول Network Stack شامل اجزای زیر است. در دستگاه‌هایی که از ماژول استفاده می‌کنند، این سرویس‌ها به فرآیند دیگری منتقل شدند و از طریق یک رابط AIDL پایدار قابل دسترسی هستند.

  • خدمات IP IpClient (قبلاً IpManager ) مؤلفه ای است که مسئول تأمین و نگهداری لایه IP است. در اندروید 9، قبلاً توسط مؤلفه‌هایی مانند بلوتوث از پردازش متقاطع و مؤلفه‌هایی مانند Wi-Fi در فرآیند استفاده می‌شد. DhcpClient آدرس های IP را از سرورهای DHCP دریافت می کند تا بتوان آنها را به واسط ها اختصاص داد.

  • مانیتور شبکه. مؤلفه NetworkMonitor دسترسی به اینترنت را هنگام اتصال به یک شبکه جدید یا در صورت خرابی شبکه، هنگام شناسایی پورتال های محصور و هنگام تأیید اعتبار شبکه ها آزمایش می کند.

  • برنامه ورود به پورتال اسیر. یک برنامه از پیش نصب شده که مسئول مدیریت ورود به سیستم در پورتال های محبوس است. این یک برنامه جداگانه از اندروید 5.0 بوده است، اما با NetworkMonitor تعامل دارد تا برخی از انتخاب های کاربر را به سیستم ارسال کند.

مسیرهای تحت تاثیر

مسیرهای منتقل شده به ماژول پشته شبکه توسط Refactor در زیر ذکر شده است.

  • خدمات IP در 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 است:

  • خدمات IP
  • ورود به پورتال اسیر ( com.google.android.captiveportallogin )

این ماژول با ماژول Network Stack Permission Config همراه است که یک فایل APK از پیش نصب شده است که مجوزهای لازم را برای اجزای Network Stack تعریف می کند.

وابستگی ها

ماژول Network Stack به موارد زیر بستگی دارد:

  • روشهای @hide دارای امتیاز در سرور سیستم (به عنوان مثال، در IConnectivityManager.aidl ). این APIها @SystemApi ساخته شده‌اند و به‌طور مناسب محافظت شده‌اند تا برای ماژول Mainline قابل دسترسی باشند، اما نه سایر برنامه‌های ممتاز (مثلاً با استفاده از مجوز امضای جدید).

  • اتصال IPC به netd در INetd.aidl تعریف شده است. این رابط به AIDL پایدار تبدیل شده است و تحت آزمایشات انطباق قرار دارد.