กองเครือข่าย

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

ส่วนประกอบที่รวมอยู่

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

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

  • การตรวจสอบเครือข่าย ส่วนประกอบ NetworkMonitor จะทดสอบความสามารถในการเข้าถึงอินเทอร์เน็ตเมื่อเชื่อมต่อกับเครือข่ายใหม่หรือเมื่อเครือข่ายล้มเหลว เมื่อตรวจพบพอร์ทัลแบบ Captive และเมื่อตรวจสอบเครือข่าย

  • แอปเข้าสู่ระบบพอร์ทัลแบบ Captive แอปที่ติดตั้งไว้ล่วงหน้าซึ่งรับผิดชอบในการจัดการการเข้าสู่ระบบบนพอร์ทัลแบบเชลย นี่เป็นแอปแยกต่างหากตั้งแต่ Android 5.0 แต่จะโต้ตอบกับ NetworkMonitor เพื่อส่งต่อตัวเลือกของผู้ใช้ไปยังระบบ

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

เส้นทางที่ย้ายไปยังโมดูล Network Stack โดยตัวสร้างใหม่จะแสดงรายการด้านล่าง

  • บริการด้านไอพี ใน frameworks/base/services/net/java/android/net/ :

    • apf
    • dhcp
    • ip
    • netlink
    • util (บางส่วน)
  • การตรวจจับพอร์ทัลและการเข้าสู่ระบบแบบ Captive ใน 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:

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

โมดูลนี้มาพร้อมกับโมดูล Network Stack Permission Config ซึ่งเป็นไฟล์ APK ที่ติดตั้งไว้ล่วงหน้าซึ่งกำหนดสิทธิ์ที่จำเป็นสำหรับส่วนประกอบ Network Stack

การพึ่งพาอาศัยกัน

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

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

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