מחסנית הרשת

‫Network Stack הוא מודול Mainline שניתן לעדכון, שמבטיח שמערכת Android תוכל להתאים את עצמה לסטנדרטים מתפתחים של רשתות ולאפשר יכולת פעולה הדדית עם יישומים חדשים. לדוגמה, עדכונים לזיהוי פורטלים שבויים ולקוד הכניסה מאפשרים ל-Android להתעדכן במודלים משתנים של פורטלים שבויים, ועדכונים ל-APF מאפשרים ל-Android לחסוך בחשמל ב-Wi-Fi כשיותר ויותר חבילות מסוגים חדשים הופכות לנפוצות.

רכיבים כלולים

מודול Network Stack מכיל את הרכיבים הבאים. במכשירים שבהם נעשה שימוש במודול, השירותים האלה הועברו לתהליך אחר והגישה אליהם מתבצעת דרך ממשק AIDL יציב.

  • שירותי IP.IpClient (לשעבר IpManager) הוא רכיב שאחראי על הקצאה ותחזוקה של שכבת ה-IP. ב-Android 9, היא כבר שימשה לתהליכים שונים ברכיבים כמו Bluetooth, ולתהליכים בתוך רכיבים כמו Wi-Fi. ‫DhcpClient מקבל כתובות IP משרתי DHCP כדי שאפשר יהיה להקצות אותן לממשקים.

  • NetworkMonitor. רכיב NetworkMonitor בודק את הנגישות לאינטרנט כשמתחברים לרשת חדשה או כשמתרחשות תקלות ברשת, כשמזהים פורטלים שבויים וכשמאמתים רשתות.

  • אפליקציה להתחברות לפורטל שבוי. אפליקציה שמותקנת מראש ואחראית על ניהול ההתחברות לפורטלים שבויים. זו אפליקציה נפרדת מאז Android 5.0, אבל היא פועלת עם NetworkMonitor כדי להעביר חלק מהבחירות של המשתמשים למערכת.

נתיבים מושפעים

הנתיבים שהועברו למודול Network Stack על ידי הריפקטורינג מפורטים בהמשך.

  • שירותי IP. בframeworks/base/services/net/java/android/net/:

    • apf
    • dhcp
    • ip
    • netlink
    • util (partly)
  • זיהוי פורטלים שבויים והתחברות אליהם. ב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)

למודול הזה מצורף מודול הגדרת הרשאות של מחסנית הרשת, שהוא קובץ APK שהותקן מראש ומגדיר את ההרשאות הנדרשות לרכיבי מחסנית הרשת.

פניות קשורות

מודול Network Stack תלוי ברכיבים הבאים:

  • שיטות עם הרשאת @hide בשרת המערכת (למשל, ב-IConnectivityManager.aidl). ממשקי ה-API האלה הוגדרו כ-@SystemApi והוגנו בצורה מתאימה כדי שהמודול Mainline יוכל לגשת אליהם, אבל לא אפליקציות אחרות עם הרשאות (למשל, באמצעות הרשאת חתימה חדשה).

  • ‫Binder IPCs to netd defined in INetd.aidl. הממשק הזה הומר ל-AIDL יציב והוא כפוף לבדיקות תאימות.