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

สแต็กเครือข่ายคือโมดูล 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 เพื่อส่งต่อตัวเลือกบางอย่างของผู้ใช้ไปยังระบบ

เส้นทางที่ได้รับผลกระทบ

เส้นทางที่ย้ายไปยังโมดูลสแต็กเครือข่ายจากการแยกส่วนมีดังนี้

  • บริการ 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 เป็นส่วนหนึ่งของโมดูลเมนไลน์และไม่สามารถ แก้ไขได้

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

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

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

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

ทรัพยากร Dependency

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

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

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