Communication/WLAN
[WLAN][Wi-Fi] android Wi-Fi architecture
현무랑 니니
2015. 8. 7. 01:06
반응형
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간 데이터 송수신 과정을 코드 레벨로 분석할 것이다.
반응형