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

Network Stack एक अपडेट किया जा सकने वाला मेनलाइन मॉड्यूल है. इससे यह पक्का होता है कि Android, नेटवर्क के बदलते स्टैंडर्ड के हिसाब से अपना काम कर सकता है. साथ ही, इससे 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 में बदल दिया गया है. साथ ही, इसे 'संगतता की जांच' के दायरे में रखा गया है.