ระบบเครือข่าย

Android 10 ประกอบด้วยโมดูลเครือข่ายต่อไปนี้:

  • โมดูลส่วนประกอบเครือข่ายให้บริการ IP ทั่วไป การตรวจสอบการเชื่อมต่อเครือข่าย และการตรวจจับพอร์ทัลการเข้าสู่ระบบแบบ Captive
  • โมดูล Network Stack Permission Config กำหนดสิทธิ์ที่ช่วยให้โมดูลสามารถทำงานที่เกี่ยวข้องกับเครือข่ายได้

โมดูลส่วนประกอบเครือข่าย

โมดูลส่วนประกอบเครือข่ายช่วยให้มั่นใจว่า Android สามารถปรับให้เข้ากับมาตรฐานเครือข่ายที่เปลี่ยนแปลงไปและช่วยให้สามารถทำงานร่วมกันได้กับการใช้งานใหม่ ตัวอย่างเช่น การอัปเดตการตรวจหาแคปทีฟพอร์ทัลและรหัสการเข้าสู่ระบบช่วยให้ Android อัปเดตด้วยการเปลี่ยนโมเดลพอร์ทัลแคปทีฟที่เปลี่ยนไป และการอัปเดตเป็นไฟร์วอลล์นโยบายขั้นสูง (APF) ทำให้ Android ประหยัดพลังงานบน Wi-Fi เนื่องจากแพ็กเก็ตประเภทใหม่กลายเป็นเรื่องปกติ

การเปลี่ยนแปลงใน Android 10

โมดูลส่วนประกอบเครือข่ายประกอบด้วยส่วนประกอบต่อไปนี้

  • บริการไอพี คอมโพเนนต์ IpClient (เดิมคือ IpManager) จัดการการจัดเตรียมและบำรุงรักษาเลเยอร์ IP ใน Android 9 มีการใช้ข้ามกระบวนการโดยส่วนประกอบต่างๆ เช่น บลูทูธ และในระหว่างดำเนินการโดยใช้ส่วนประกอบต่างๆ เช่น Wi-Fi คอมโพเนนต์ DhcpClient รับที่อยู่ IP จากเซิร์ฟเวอร์ DHCP เพื่อให้สามารถกำหนดให้กับอินเทอร์เฟซได้
  • จอภาพเครือข่าย คอมโพเนนต์ NetworkMonitor จะทดสอบความสามารถในการเข้าถึงอินเทอร์เน็ตเมื่อเชื่อมต่อกับเครือข่ายใหม่หรือเมื่อเครือข่ายขัดข้อง เมื่อตรวจพบแคปทีฟพอร์ทัล และเมื่อตรวจสอบความถูกต้องของเครือข่าย
  • แอปเข้าสู่ระบบพอร์ทัลเชลย แอปเข้าสู่ระบบพอร์ทัล Captive เป็นแอปที่ติดตั้งไว้ล่วงหน้าซึ่งมีหน้าที่จัดการการเข้าสู่ระบบบนพอร์ทัลแบบ Captive นี่เป็นแอพที่แยกจากกันตั้งแต่ Android 5.0 แต่มีการโต้ตอบกับ NetworkMonitor เพื่อส่งต่อตัวเลือกผู้ใช้บางตัวไปยังระบบ

บนอุปกรณ์ที่ใช้โมดูล Networking Components บริการข้างต้นจะถูกปรับโครงสร้างเป็นกระบวนการอื่น และเข้าถึงได้โดยใช้ อินเทอร์เฟซ AIDL ที่เสถียร เส้นทาง refactor แสดงอยู่ในตารางต่อไปนี้

เส้นทาง refactor ของ IP Services

Android 9 และต่ำกว่า ใน frameworks/base/services/net/java/android/net/ :
  • apf
  • dhcp
  • ip
  • netlink
  • util (บางส่วน)
Android 10 ขึ้นไป packages/modules/NetworkStack

เส้นทาง refactor ล็อกอินของ Captive Portal

Android 9 และต่ำกว่า ใน frameworks/base/ :
  • core/java/android/net/captiveportal/
  • services/core/java/com/android/server/connectivity/NetworkMonitor.java
  • packages/CaptivePortalLogin/* (โดยที่ * = สัญลักษณ์แทน)
Android 10 ขึ้นไป packages/modules/CaptivePortalLogin (และตำแหน่งที่ใช้ร่วมกันอื่นๆ)

รูปแบบและการพึ่งพา

โมดูล Networking Components จัดส่งเป็น APK สามรายการ: หนึ่งรายการสำหรับบริการ IP หนึ่งรายการสำหรับการเข้าสู่ระบบพอร์ทัลแบบ Captive และอีกรายการสำหรับ Network Stack Permission Config

โมดูลส่วนประกอบเครือข่ายขึ้นอยู่กับสิ่งต่อไปนี้:

  • @hide ที่มีสิทธิ์ในเซิร์ฟเวอร์ระบบ (เช่น ใน IConnectivityManager.aidl ) API เหล่านี้ได้รับการใส่คำอธิบายประกอบด้วย @SystemApi และได้รับการป้องกันอย่างเหมาะสมเพื่อให้เข้าถึงได้ในโมดูล แต่ไม่ใช่แอปที่มีสิทธิ์อื่นๆ (เช่น การใช้การอนุญาตลายเซ็นใหม่)
  • Binder IPCs ไปยัง netd ที่กำหนดไว้ใน INetd.aidl อินเทอร์เฟซนี้ได้รับการแปลงเป็น AIDL ที่เสถียรและอยู่ภายใต้การทดสอบความสอดคล้อง

โมดูลการกำหนดค่าการอนุญาตสแต็กเครือข่าย

โมดูล Network Stack Permission Config ไม่มีรหัส แต่กำหนดสิทธิ์สำหรับใช้โดยโมดูล Network Stack และ Captive Portal Login ระบบอนุญาตให้โมดูลที่ได้รับอนุญาตนี้ทำงานการกำหนดค่าเครือข่ายที่เกี่ยวข้องบนอุปกรณ์