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

नेटवर्क स्टैक, अपडेट किया जा सकने वाला Mainline मॉड्यूल है. इससे यह पक्का होता है कि Android, नेटवर्क के नए स्टैंडर्ड के हिसाब से ढल सकता है. साथ ही, नए तरीके से लागू किए गए नेटवर्क के साथ काम कर सकता है. उदाहरण के लिए, कैप्टिव पोर्टल की पहचान करने और लॉगिन कोड से जुड़े अपडेट की मदद से, Android डिवाइसों को कैप्टिव पोर्टल के नए मॉडल के साथ अप-टू-डेट रखा जा सकता है. साथ ही, एपीएफ़ से जुड़े अपडेट की मदद से, 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, और शेयर की गई कुछ अन्य जगहों पर है. ऊपर दिए गए पाथ, मेनलाइन में ले जाने से पहले फ़ाइलों की जगह के बारे में बताते हैं. packages/modules/NetworkStack और packages/modules/CaptivePortalLogin में मौजूद फ़ाइलें, Mainline मॉड्यूल का हिस्सा हैं और उनमें बदलाव नहीं किया जा सकता.

पैकेज का फ़ॉर्मैट

नेटवर्क स्टैक मॉड्यूल में, APK फ़ॉर्मैट में ये कॉम्पोनेंट होते हैं:

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

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

डिपेंडेंसी

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

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

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