<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                wpa_supplicant是一個比較龐大的開源軟件項目,包含500多個文件,20萬行代碼,其內部模塊構成如圖4-1所示[2]。 :-: ![](http://img.blog.csdn.net/20140309205049187?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSW5ub3N0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 圖4-1 wpa_supplicant軟件架構 圖4-1所示的WPAS軟件架構包括如下重要模塊: * WPAS所有工作都圍繞事件(對應圖4-1中的event loop模塊)展開。即,它是基于事件驅動的。事件驅動和消息驅動類似,主線程等待事件的發生并處理它們。WPAS沒有使用多線程編程,所有事件處理都在主線程中完成。從這一點看,WPAS的運行機制倒是很簡單。 * 位于event loop模塊下方的driver i/f(i/f代表interface)接口模塊用于隔離和底層驅動直接交互的那些driver控制模塊(如wext、ndiswrapper等,WPAS中稱之為driver wrapper)。這些driver wrapper和平臺以及芯片所使用的驅動相關。不過,由于driver i/f的隔離作用,WPAS中其他模塊將能最大程度保持平臺以及驅動無關性。 * driver wrapper經常要返回一些信息給上層。WPAS中,這些信息將通過driver events的方式反饋給WPAS其他模塊進行處理。 * 上一章曾介紹過EAP以及EAPOL協議。除了定義消息格式外,RFC4137文檔定義了EAP狀態機,而802.1X文檔中還定義了EAPOL狀態機。WPAS根據這兩個協議分別實現了EAP和EAPOL狀態機。本章后續將詳細分析這兩個狀態機以及背后的協議。除此之外,WPAS還定義了自己的狀態機(即WPA/WPA2 State Machine)。 * WPAS實現了多種EAP方法,如圖4-1中EAP method模塊所示。另外它還包含了TLS模塊和crypto模塊用于支持對應的EAP方法。 * EAPOL以及EAP消息都屬于LLC層數據,所以WPAS的l2_packet模塊用于收發EAPOL和EAP消息。 * WPAS支持較多的配置參數,這些參數的處理由configuration模塊完成。 * WPAS是C/S結構中的Server端,它通過ctrl i/f模塊向客戶端提供通信接口。Linux/Unix平臺中,Client端利用Unix域socket與其通信。目前常用的Client端wpa_cli(無界面的命令行程序)和wpa_gui(UI用Qt實現)。 WPAS支持眾多功能,使用前往往需根據平臺或驅動的特性進行編譯配置,下面通過一個實例來介紹如何在Android中編譯wpa_supplicant。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看