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

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

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

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

  • आईपी सेवाएं. 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 में बदल दिया गया है. साथ ही, इस पर स्टैंडर्ड के मुताबिक काम करने की जांच की जाएगी.