پشته شبکه

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

عناصر گنجانده‌شده

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

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

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

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

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

مسیرهایی که با بازسازی به واحد «پشته شبکه» منتقل شده‌اند در زیر فهرست شده‌اند.

  • سرویس‌های 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 هستند و نمی‌توانند اصلاح شوند.

قالب بسته

واحد «پشته شبکه» شامل اجزای زیر در قالب APK است:

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

این واحد با واحد «پیکربندی اجازه پشته شبکه» همراه است که یک فایل APK ازپیش نصب‌شده است و اجازه‌های لازم را برای مؤلفه‌های «پشته شبکه» تعریف می‌کند.

وابستگی‌ها

واحد «پشته شبکه» به موارد زیر بستگی دارد:

  • روش‌های @hide ممتاز در سرور سیستم (برای نمونه، در IConnectivityManager.aidl). این میاناهای برنامه‌سازی کاربردی @SystemApi شده‌اند و به‌طور مناسب محافظت شده‌اند تا برای واحد Mainline دردسترس باشند اما برای برنامه‌های ممتاز دیگر دردسترس نباشند (برای نمونه، بااستفاده از اجازه امضای جدید).

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