android WiFi architecture analysis 

1. WiFi 구조

android 전체

WiFi chip은 SDIO나 PCI 버스를 통하여 리눅스 네트웍 디바이스 드라이버와 연결된다.

디바이스 드라이버는 802.11 프로토콜을 구현한 리눅스용 wpa_supplicant에 데이터를 교환한다.

Libhardware_legacy의 wifi.c를 통해 프레임웍과 JNI로 연결된다.

안드로이드 앱이 프레임웍을 통하여 WiFi를 이용하여 인터넷에 연결된다.


wpa_supplicant와  linux net driver 중심.


kernel space에 위치한 네트웍 디바이스 드라이버는 cfg80211_ops 구조체를 이용하여 cfg80211 API에 연결된다.

nl80211는 netlink socket을 이용하여 커널과 유저 공간의 인터페이스를 제공한다.

wpa_supplicant는 크게 WiFi station 역할을 담당하는 wpa_supplicant 모듈과 AP 역할을 수행하는 hostapd 모듈로 구성된다.

wpa_supplicant는 드라이버 인터페이스를 통하여 nl80211에, 그리고 control 인터페이스로 wpa_cli/hostapd_cli에 연결된다.

wpa_cli (command line interface)를 이용하여 WiFi 동작을 직접 제어할 수 있다.

WiFi 인증을 위한 sigma 환경도 wpa_cli를 사용한다.


다음은 AP와 STA간 데이터 송수신 과정을 코드 레벨로 분석할 것이다.


+ Recent posts

티스토리 툴바