네트워크 스택

네트워크 스택은 Android가 진화하는 네트워크 표준을 수용하고 새로운 구현과의 상호 운용이 가능하도록 보장하기 위한 업데이트 가능한 Mainline 모듈입니다. 예를 들어 종속 포털 감지 및 로그인 코드를 업데이트하면 Android를 변화하는 종속 포털 모델에 맞게 최신 상태로 유지할 수 있으며, 새로운 유형의 패킷이 보편화되고 있는 상황 속에서 APF 업데이트를 통해 Wi-Fi에 대한 Android의 전력 소모를 절감할 수 있습니다.

포함된 구성요소

네트워크 스택 모듈에는 다음과 같은 구성요소가 포함됩니다. 모듈을 사용하는 기기에서는 다음 서비스가 다른 프로세스로 이동되었으며 안정된 AIDL 인터페이스를 통해 액세스됩니다.

  • IP 서비스. IpClient(이전의 IpManager)는 IP 레이어 프로비저닝 및 유지보수를 담당하는 구성요소입니다. Android 9에서는 이미 이 구성요소가 블루투스 등의 구성요소에 의해 크로스-프로세스에 사용되었으며 Wi-Fi 등의 구성요소에 의해서는 인-프로세스에 사용되었습니다. DhcpClient는 DHCP 서버에서 IP 주소를 가져오기 때문에 인터페이스에 할당될 수 있습니다.

  • 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/NetworkStackpackages/modules/CaptivePortalLogin 및 일부 다른 공유 위치에 있습니다. 위 경로는 Mainline으로 이동하기 전에 파일 위치를 나타냅니다. packages/modules/NetworkStackpackages/modules/CaptivePortalLogin의 파일은 Mainline 모듈의 일부이며 수정할 수 없습니다.

패키지 형식

네트워크 스택 모듈에는 APK 형식의 다음 구성요소가 포함됩니다.

  • IP 서비스
  • 종속 포털 로그인(com.google.android.captiveportallogin)

이 모듈은 네트워크 스택 구성요소에 필요한 권한을 정의하는 사전 설치된 APK 파일인 네트워크 스택 권한 구성 모듈과 함께 제공됩니다.

종속 항목

네트워크 스택 모듈은 다음 항목에 종속됩니다.

  • 시스템 서버(예: IConnectivityManager.aidl)에 있는 권한 있는 @hide 메서드. 이러한 API는 Mainline 모듈에는 액세스할 수 있지만 다른 권한 있는 앱(예: 새 서명 권한을 사용하는 앱)에는 액세스할 수 없도록 @SystemApi 형태로 만들어져 적절하게 보호되었습니다.

  • INetd.aidl에서 정의된 netd의 바인더 IPC. 이 인터페이스는 안정적인 AIDL로 변환되었으며 적합성 테스트를 거칩니다.