สแต็กเครือข่าย

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

คอมโพเนนต์ที่รวมอยู่

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

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

  • 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 และตำแหน่งที่แชร์อื่นๆ เส้นทางข้างต้น หมายถึงตำแหน่งของไฟล์ก่อนที่จะย้ายไปที่นั่นสำหรับ Mainline ไฟล์ใน packages/modules/NetworkStack และ packages/modules/CaptivePortalLogin เป็นส่วนหนึ่งของโมดูล Mainline และแก้ไขไม่ได้

รูปแบบแพ็กเกจ

โมดูล Network Stack มีคอมโพเนนต์ต่อไปนี้ในรูปแบบ APK

  • บริการ IP
  • การเข้าสู่ระบบแคพทีฟพอร์ทัล (com.google.android.captiveportallogin)

โมดูลนี้มาพร้อมกับโมดูลการกำหนดค่าสิทธิ์ของสแต็กเครือข่าย ซึ่งเป็นไฟล์ APK ที่ติดตั้งไว้ล่วงหน้าซึ่งกำหนดสิทธิ์ที่จำเป็นสำหรับ คอมโพเนนต์สแต็กเครือข่าย

การขึ้นต่อกัน

โมดูล Network Stack ขึ้นอยู่กับสิ่งต่อไปนี้

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

  • Binder IPC ไปยัง netd ที่กำหนดไว้ใน INetd.aidl อินเทอร์เฟซนี้ได้รับการแปลงเป็น AIDL ที่เสถียรและต้องผ่านการทดสอบความสอดคล้อง