नेटवर्क स्टैक

नेटवर्क स्टैक, अपडेट किया जा सकने वाला एक Mainline मॉड्यूल है. यह पक्का करता है कि Android, नेटवर्क के बदलते मानकों के हिसाब से काम कर सके. साथ ही, यह नए नेटवर्क के साथ इंटरऑपरेबिलिटी की अनुमति देता है. उदाहरण के लिए, कैप्टिव पोर्टल का पता लगाने और लॉगिन कोड से जुड़े अपडेट की मदद से, Android को कैप्टिव पोर्टल के बदलते मॉडल के बारे में अप-टू-डेट जानकारी मिलती है. साथ ही, APF से जुड़े अपडेट की मदद से, Android को वाई-फ़ाई पर बैटरी बचाने में मदद मिलती है, क्योंकि नए तरह के पैकेट आम हो जाते हैं.

शामिल कॉम्पोनेंट

नेटवर्क स्टैक मॉड्यूल में ये कॉम्पोनेंट शामिल होते हैं. मॉड्यूल का इस्तेमाल करने वाले डिवाइसों पर, इन सेवाओं को किसी दूसरी प्रोसेस में ले जाया गया है. साथ ही, इन्हें स्टेबल AIDL इंटरफ़ेस के ज़रिए ऐक्सेस किया जाता है.

  • आईपी सेवाएं. IpClient (पहले यह IpManager था) एक ऐसा कॉम्पोनेंट है जो आईपी लेयर की प्रोविज़निंग और रखरखाव के लिए ज़िम्मेदार है. Android 9 में, इसका इस्तेमाल पहले से ही क्रॉस-प्रोसेस में किया जा रहा था. जैसे, ब्लूटूथ और इन-प्रोसेस में कॉम्पोनेंट. जैसे, वाई-फ़ाई. DhcpClient डीएचसीपी सर्वर से आईपी पते हासिल करता है, ताकि उन्हें इंटरफ़ेस को असाइन किया जा सके.

  • NetworkMonitor. NetworkMonitor कॉम्पोनेंट, इन स्थितियों में इंटरनेट कनेक्टिविटी की जांच करता है: किसी नए नेटवर्क से कनेक्ट करते समय, नेटवर्क में गड़बड़ियां होने पर, कैप्टिव पोर्टल का पता लगाते समय, और नेटवर्क की पुष्टि करते समय.

  • कैप्टिव पोर्टल लॉगिन ऐप्लिकेशन. यह पहले से इंस्टॉल किया गया ऐप्लिकेशन है. यह कैप्टिव पोर्टल पर लॉगिन करने की सुविधा को मैनेज करता है. Android 5.0 से, यह एक अलग ऐप्लिकेशन है. हालांकि, यह NetworkMonitor के साथ इंटरैक्ट करता है, ताकि उपयोगकर्ता की कुछ प्राथमिकताओं को सिस्टम तक पहुंचाया जा सके.

जिन पाथ पर असर पड़ा है

रीफ़ैक्टर किए गए पाथ, नेटवर्क स्टैक मॉड्यूल में ले जाए गए हैं. इनकी सूची यहां दी गई है.

  • आईपी सेवाएं. 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 फ़ॉर्मैट में ये कॉम्पोनेंट शामिल होते हैं:

  • आईपी सेवाएं
  • कैप्टिव पोर्टल लॉगिन (com.google.android.captiveportallogin)

इस मॉड्यूल के साथ, नेटवर्क स्टैक की अनुमति से जुड़ा कॉन्फ़िगरेशन मॉड्यूल भी होता है. यह पहले से इंस्टॉल की गई एक APK फ़ाइल होती है. इसमें नेटवर्क स्टैक कॉम्पोनेंट के लिए ज़रूरी अनुमतियों के बारे में बताया जाता है.

डिपेंडेंसी

नेटवर्क स्टैक मॉड्यूल, इन पर निर्भर करता है:

  • सिस्टम सर्वर में विशेषाधिकार वाले @hide तरीके (जैसे, IConnectivityManager.aidl में). इन एपीआई को @SystemApi और सही तरीके से सुरक्षित किया गया है, ताकि ये Mainline मॉड्यूल के लिए उपलब्ध हों, लेकिन विशेषाधिकार वाले अन्य ऐप्लिकेशन के लिए नहीं (जैसे, नई सिग्नेचर अनुमति का इस्तेमाल करके).

  • INetd.aidl में तय किए गए netd के लिए बाइंडर आईपीसी. इस इंटरफ़ेस को स्टेबल AIDL में बदल दिया गया है. साथ ही, इस पर कंफ़ॉर्मेंस टेस्ट लागू होते हैं.