最近在學習無線,看了許多腳本和代碼,雖然在整體上對這個模塊實現的大致流程有了一定的掌握,但是對一些細節還不是很清楚,所以用這種方式來記錄學習過程中的一些總結和體會,有理解錯誤或者描述不當的地方,還望有識者指正。
看代碼的時候主要借鑒的是[ hostapd的radius/eap server代碼分析](http://blog.csdn.net/njzhujinhua/article/details/5473970)系列和源代碼,里面講的很具體,很清楚。
**hostapd是干嘛用的?**
hostapd能夠使得無線網卡切換為master模式,模擬AP(路由器)功能,作為AP的認證服務器,負責控制管理stations(帶無線網卡的pc或能連wifi的手機等)的接入和認證。簡單的說,我們買回來一個無線網卡,默認情況下是STA模式的,在這種模式下,可以用它來連接到其他路由器、AP或者extender上,所以在被連接的master端看來,這個網卡就是client端。
但是現在我們想自己做一個路由器或者ap,讓其他設備能夠連接上來,并進行管理,那么就要將這個無線網卡切換成AP/master模式,但是怎么實現這個切換過程呢,就需要使用hostapd這個工具來幫忙了,我們可以通過修改它的配置文件,編譯好來管理我們的無線網卡,以建立一個開放式的或者加密(WEP、WPA、WPA2等)的無線網絡。修改配置文件hostapd.conf,可以設置無線網絡的各種參數,包括頻率、信號、beacon包時間間隔、mac地址過濾條件等。
hostapd在我看來主要實現兩個功能:將無線網卡切換成AP模式,通過EAP/RADIUS管理加密方式。

上圖是hostapd的一個代碼框架,hostapd是一個后臺程序,hostapd_cli是跟hostapd對應的前臺命令行程序,hostapd_cli是一個機遇文本的、與hostapd進行交互的前臺程序,通過hostapd_cli可以吃查看當前無線的認證狀態、 .11和.1x的MIBS等。hostapd_cli有兩種模式:交互模式和命令行模式,沒輸入參數時,將進入交互模式,help可以查看可用的命令。
下圖是配置一個無線網絡涉及到的命令和工具,以及無線工作的流程:
