নেটওয়ার্ক স্ট্যাক

Network Stack হল একটি আপডেট করা যায় এমন মেনলাইন মডিউল যা নিশ্চিত করে যে Android পরিবর্তনশীল নেটওয়ার্ক স্ট্যান্ডার্ডের সাথে মানিয়ে নিতে পারে এবং নতুন ইমপ্লিমেন্টেশনের সাথে ইন্টার-অপারেবিলিটি প্রদান করে। যেমন, ক্যাপটিভ পোর্টাল শনাক্তকরণ ও লগ-ইন কোডে করা আপডেট পরিবর্তিত ক্যাপটিভ পোর্টাল মডেলের সাথে Android-কে আপ-টু-ডেট থাকতে দেয় এবং APF-এ করা আপডেট, নতুন ধরনের প্যাকেট সাধারণ হয়ে গেলে, Android-কে ওয়াই-ফাইয়ে পাওয়ার সেভ করতে দেয়।

অন্তর্ভুক্ত কম্পোনেন্ট

Network Stack মডিউলে নিম্নলিখিত কম্পোনেন্ট থাকে। মডিউল ব্যবহার করা ডিভাইসে, এইসব পরিষেবা অন্য প্রসেসে সরানো হয়েছে এবং একটি স্থিতিশীল AIDL ইন্টারফেসের মাধ্যমে অ্যাক্সেস করা হয়।

  • IP পরিষেবা। IpClient (আগে IpManager নামে পরিচিত ছিল) হল এমন একটি কম্পোনেন্ট যা IP লেয়ার প্রভিশনিং ও রক্ষণাবেক্ষণের দায়িত্ব নেয়। Android 9-এ, এটি আগে থেকেই ব্লুটুথের মতো কম্পোনেন্ট দ্বারা ক্রস-প্রসেস এবং ওয়াই-ফাইয়ের মতো কম্পোনেন্ট দ্বারা ইন-প্রসেস হিসেবে ব্যবহার করা হত। DhcpClient DHCP সার্ভার থেকে IP অ্যাড্রেস পায় যাতে সেগুলি ইন্টারফেসে অ্যাসাইন করা যায়।

  • NetworkMonitor. NetworkMonitor কম্পোনেন্ট ইন্টারনেটের রিচেবিলিটি পরীক্ষা করে যখন নতুন নেটওয়ার্কে কানেক্ট করা হয় বা নেটওয়ার্ক কাজ করে না, যখন ক্যাপটিভ পোর্টাল শনাক্ত করা হয় এবং যখন নেটওয়ার্ক যাচাই করা হয়।

  • ক্যাপটিভ পোর্টাল লগ-ইন অ্যাপ। ক্যাপটিভ পোর্টালগুলিতে লগ-ইন ম্যানেজ করার দায়িত্ব এই আগে থেকে ইনস্টল করা অ্যাপের। Android 5.0 থেকে এটি একটি আলাদা অ্যাপ হিসেবে কাজ করছে, কিন্তু এটি সিস্টেমে ব্যবহারকারীর কিছু পছন্দ ফরওয়ার্ড করার জন্য NetworkMonitor-এর সাথে ইন্টার‍্যাক্ট করে।

প্রভাবিত পাথ

রিফ্যাক্টর করার ফলে পাথগুলি Network Stack মডিউলে সরানো হয়েছে, সেগুলি নিচে তালিকাভুক্ত করা হল।

  • IP পরিষেবা। 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-এর ফাইলগুলি মেইনলাইন মডিউলের অংশ এবং সেগুলি পরিবর্তন করা যাবে না।

প্যাকেজ ফর্ম্যাট

Network Stack মডিউলে APK ফর্ম্যাটে নিম্নলিখিত কম্পোনেন্ট থাকে:

  • IP পরিষেবা
  • ক্যাপটিভ পোর্টাল লগ-ইন (com.google.android.captiveportallogin)

এই মডিউলের সাথে Network Stack Permission Config মডিউল থাকে, এটি একটি আগে থেকে ইনস্টল করা APK ফাইল যা Network Stack কম্পোনেন্টগুলির জন্য প্রয়োজনীয় অনুমতি নির্ধারণ করে।

ডিপেন্ডেন্সি

Network Stack মডিউল নিম্নলিখিত বিষয়গুলির উপর নির্ভর করে:

  • সিস্টেম সার্ভারে বিশেষ @hide পদ্ধতি (যেমন, in IConnectivityManager.aidl)। এইসব API @SystemApi এবং যথাযথভাবে সুরক্ষিত করা হয়েছে যাতে সেগুলি Mainline মডিউলের কাছে অ্যাক্সেসযোগ্য হয় কিন্তু অন্যান্য বিশেষ অ্যাপের কাছে নয় (যেমন, একটি নতুন স্বাক্ষর অনুমতি ব্যবহার করে)।

  • Binder IPCs to netd defined in INetd.aidl. এই ইন্টারফেসটি স্টেবল AIDL-এ কনভার্ট করা হয়েছে এবং এটি কনফার্মেন্স টেস্টের অধীনস্থ।