<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                802.11包括了MAC層和PHY層。根據圖3-4可知這兩層內部都對應有Entity,它們通過SAP(Service Access Point)為對應的上層提供服務。圖3-27展示了802.11中的Entity和SAP。 :-: ![](https://box.kancloud.cn/eceba8d428e5144060ecf802562ddcc8_1125x597.jpg) 圖3-27 802.11 Entity模型 由圖3-27可知: * MAC_SAP為LLC層提供服務,其具體內容見3.3.5節“MAC服務定義”。 * MAC子層中還有專門負責管理的Entity,名為MLME(MAC Sublayer Management Entity),它對外提供的接口是MLME_SAP。 * PHY層還可細分為PLCP和PMD兩層(本書不討論)。 * 物理層對外提供的管理實體是PLME(PHY Sublayer Management Entity),對應的SAP縮寫為PLME_SAP。 * 為了方便對802.11 MAC及PHY層統一操作和管理,規范還定義一個SME(StationManagement Entity)。該實體獨立于MAC和PHY層。使用者可通過SME實體來操作MAC層和PHY層中的SAP。 本節重點關注MAC的管理Entity(即MLME)及其對應的SAP。規范中關于MLME_SAP一共有82個原語,其中一部分如圖3-28所示。 :-: ![](https://box.kancloud.cn/4c2c930b954f60ba6f84ce722212c492_442x492.jpg) 圖3-28 MLME SAP部分內容 原語的定義曾在3.3.5節MAC服務定義中見過,它其實就是通過定義API來表達自己所具有的功能。MLME_SAP非常多,本章不可能全部覆蓋,此處僅介紹三個常用的原語。 * Scan:用于掃描周圍的無線網絡。 * Authenticate:關聯到某個AP前,用于STA的身份驗證。 * Associate:關聯某個AP。關聯成功后,STA就正式加入無線網絡了。 * * * * * **提醒** 請讀者務必注意一點,理解MLME_SAP原語對掌握Wi-Fi技術非常重要。從編程角度來說,MLME_SAP相當于定義了一套接口函數,而后續章節將介紹的wpa_supplicant只是對它們的實現。 * * * * * **1.Scan介紹** 原語的參數比較多,但并不是所有參數都需要(由對應的MIB項控制),本書僅介紹比較重要的參數(用加粗字體表示)。 (1)request Scan.request原語用于掃描周圍的無線網絡,其原型如下。 ~~~ MLME-SCAN.request( BSSType,BSSID,SSID,ScanType,ProbeDelay, ChannelList,MinChannelTime,MaxChannelTime, RequestInformation, SSID List, ChannelUsage,AccessNetworkType,HESSID,MeshID,VendorSpecificInfo ) ~~~ Scan參數中,比較幾個重要的分別如下。 * BSSType:類型為枚舉(Enumeration),可取值為INFRASTRUCTURE、INDEPENDENT、MESH、ANY_BSS。 * BSSID:類型為MAC地址。可以是某個指定的BSSID或者廣播BSSID。 * SSID:類型為字符串。0~32字節長。指定網絡名,如果長度為0,則為wild ssid。 * ScanType:類型為枚舉,可取值為ACTIVE(主動)、PASSIVE(被動)。詳情見下文。 * ProbeDelay:類型為整型,單位為微秒。用于ACTIVE模式的掃描,詳情見下文。 * ChannelList:類型為有序整數列表(Ordered set of integers),掃描時使用。 * MinChannelTime和MaxChannelTime:類型均為整型。用于指示掃描過程中在每個信道上等待的最小和最長時間。時間單位為TU。 由Scan.request的ScanType參數可知,802.11規定了兩種掃描模式。 * ACTIVE模式:這種模式下,STA在每個Channel(信道)上都會發出Probe Request幀用來搜索某個網絡。具體工作方式是,STA首先調整到某個信道,然后等待來幀指示(表明該信道有人使用)或超時時間ProbeDelay。兩個條件滿足任意一個,STA都將發送Probe Request幀,然后STA在該信道上等待最少MinChannelTime時間(如果在此時間內信道一直空閑),最長MaxChannelTime時間。 * PASSIVE模式:這種模式下,STA不發送任何信號,只是在ChannelList中各個信道間不斷切換并等待Beacon幀。根據前述介紹可知,在基礎結構型網絡中AP會定時發送Beacon幀以宣告網絡的存在。所以,PASSIVE模式下,STA能根據Beacon幀來了解周圍所存在的無線網絡。 (2)confirm Scan.confirm用于通知掃描結果,其原型定義如下。 ~~~ MLME-SCAN.confirm( BSSDescriptionSet,BSSDescriptionFromMeasurementPilotSet, ResultCode,VendorSpecificInfo ) ~~~ * BSSDescriptionSet:類型為BSSDescription列表。具體內容見下文。 * ResultCode:類型為枚舉,可取值為SUCCESS和NOT_SUPPORTED。 BSSDescription包含很多內容,常見項如表3-12所示。 :-: ![](https://box.kancloud.cn/ba8f0091ac8e5ebda41096d478590566_1264x467.jpg) 獲取周圍的無線網絡后,STA可以選擇加入(join)其中的一個BSS。規范沒有定義網絡加入的原語,但實際上大部分無線網卡在實現時,都需要join相關的處理。因為如果周圍存在多個無線網絡時,需要用戶參與來選擇加入哪一個網絡。BSSDescription全部取值列表請參考規范6.3.3.3.2節。 **2.Authenticate介紹** 關聯到某個AP前,STA必須通過身份驗證。該處理由Authenticate對應的原語來完成。由于身份驗證涉及兩個STA(以基礎結構型網絡為例,一個是STA,另一個是AP),所以Authenticate包含4個原語,分別如下。 * MLME-Authenticate.request:STA A向AP B發起身份驗證請求。 * MLME-Authenticate.confirm:STA A收到來自AP B的身份驗證處理結果。 * MLME-Authenticate.indication:AP B收到來自STA A的身份驗證處理請求。 * MLME-Authenticate.response:AP B向STA A發送身份驗證處理結果。 先來看request和confirm原語。 (1)request和confirm request和confirm原語原型如下。 ~~~ MLME-AUTHENTICATE.request( PeerSTAAddress,AuthenticationType, AuthenticateFailureTimeout, Content of FT Authentication elements, Content of SAE Authentication Frame, VendorSpecificInfo ) // confirm原型 MLME-AUTHENTICATE.confirm( PeerSTAAddress,AuthenticationType, ResultCode, Content of FT Authentication elements, Content of SAE Authentication Frame, VendorSpecificInfo ) ~~~ 上述原語定義說明如下。 - PeerSTAAddress:類型為MAC地址,代表對端STA的地址。以本例而言,則是AP B的MAC地址。 - AuthenticationType:類型為枚舉,可取值有OPEN_SYSTEN、SHARED_KEY、FAST_BSS_TRANSITION和SAE。用于表示認證過程中使用的認證類型。這部分內容見3.3.7節無線網絡安全相關介紹。 - AuthenticateFailureTimeout:類型為整型,代表認證超時時間,單位為TU。 - ResultCode:代表認證處理結果。 MLME-AUTHENTICATE.request將觸發STA A發送Authenticate幀。下面來看AP B如何處理收到的這個Authenticate幀呢? (2)indication和response 這兩個原語定義和request以及confirm基本一樣。 ~~~ MLME-AUTHENTICATE.indication( PeerSTAAddress,AuthenticationType, Content of FT Authentication elements, Content of SAE Authentication Frame, VendorSpecificInfo ) // response原型 MLME-AUTHENTICATE.response( PeerSTAAddress,AuthenticationType, ResultCode, Content of FT Authentication elements, Content of SAE Authentication Frame, VendorSpecificInfo ) ~~~ indication和對應的response參數與request以及confirm一樣,此處不詳述。 **3.Associate介紹** STA通過身份驗證后,就需要和AP關聯。只有關聯成功后,STA才正式成為無線網絡的一員。 * * * * * **注意** 對于RSN,關聯成功后還需通過802.1X身份驗證。相關內容留待3.3.7節介紹。 * * * * * Associate包含的原語和Authentication一樣,都有request、confirm、indication和response。我們先來看request和confirm。 (1)request和confirm request和confirm原語定義如下。 ~~~ MLME-ASSOCIATE.request( PeerSTAAddress, AssociateFailureTimeout,CapabilityInformation, ListenInterval,Supported Channels, RSN, QoSCapability,Content of FT Authentication elements,SupportedOperatingClasses, HT Capabilities,Extended Capabilities,20/40 BSS Coexistence, QoSTrafficCapability, TIMBroadcastRequest,EmergencyServices,VendorSpecificInfo ) // confirm原語 MLME-ASSOCIATE.confirm( ResultCode,CapabilityInformation,AssociationID,SupportedRates, EDCAParameterSet,RCPI.request,RSNI.request,RCPI.response, RSNI.response,RMEnabledCapabilities,Content of FT Authentication elements, SupportedOperatingClasses,HT Capabilities,Extended Capabilities, 20/40 BSS Coexistence, TimeoutInterval,BSSMaxIdlePeriod,TIMBroadcastResponse, QosMapSet,VendorSpecificInfo ) ~~~ 上述原語中包含的參數信息如下。 - PeerSTAAddress:響應Association請求的STA的MAC地址,即AP的地址。 - AssociateFailureTimeout:類型為整型,代表關聯超時時間,單位為TU。 - CapabilityInformation:指定AP的性能信息。 - ListenInterval:用于告知AP,STA進入PS模式后,監聽Beacon幀的間隔時間。 - RSN:類型為RSNE,指示STA選設置的安全方面的信息。詳情見3.3.7節。 - ResultCode:AP返回的處理結果。 - AssociationID:AP返回的關聯ID。 - SupportedRates:AP返回的所支持的傳輸速率列表。速率以500kbps為單位。 (2)indication和response indication和response原語定義如下。 ~~~ MLME-ASSOCIATE.indication( PeerSTAAddress,CapabilityInformation,ListenInterval,SSID,SupportedRates, RSN,QoSCapability,RCPI,RSNI,RMEnabledCapabilities, Content of FT Authentication elements,SupportedOperatingClasses, DSERegisteredLocation, HT Capabilities,Extended Capabilities,20/40 BSS Coexistence,QoSTrafficCapability, TIMBroadcastRequest,EmergencyServices,VendorSpecificInfo ) // response原語 MLME-ASSOCIATE.response( PeerSTAAddress,ResultCode,CapabilityInformation,AssociationID, EDCAParameterSet,RCPI,RSNI,RMEnabledCapabilities, Content of FT Authentication elements, SupportedOperatingClasses,DSERegisteredLocation,HTCapabilities, Extended Capabilities, 20/40 BSS Coexistence, TimeoutInterval,BSSMaxIdlePeriod,TIMBroadcastResponse, QoSMapSet,VendorSpecificInfo ) ~~~ 上述原語和參數中,只有indication的SSID略有不同,它代表發起關聯請求的STA的MAC 地址。 **4.STA狀態轉換[24]** 上面原語操作成功后,STA狀態將發生變化。STA從最初到最終的狀態切換如圖3-29所示。 :-: ![](https://box.kancloud.cn/ad23f383265732370f41e9f9a0deef15_624x735.jpg) 圖3-29 STA狀態切換 圖3-29中包含很多知識點,下面一一介紹它們。首先是MAC幀Frame的類別(Class),規范定義MAC幀一共有三種類別,分別是Class 1、Class 2和Class 3,各自包含不同的MAC幀,如表3-13所示。 :-: ![](https://box.kancloud.cn/add56be813efe0b2f91bb3af8392cd44_1263x286.jpg) 結合圖3-29,可知STA在不同狀態下發送的MAC幀類別也不同。這主要是和網絡安全有關,沒有通過身份驗證的STA是不允許隨意傳輸數據的。圖3-29中,STA的狀態轉換如下(以基礎結構型網絡為例)。 - STA首先處于State 1,即未認證和未關聯的情況。為了能加入無線網絡,它需要發送Authentication幀給AP。如果認證成功,將轉入State 2。State 1情況下不能發送數據幀。 - State 2是已認證,未關聯狀態。STA將發送Association幀給AP進行關聯。成功后,進入State 3。State 2情況下也不能發送數據幀。 - State 3屬于已認證,已經關聯,但還未通過RSN(Robust Security Network,強健安全網絡)認證的狀態。RSN采用802.1X進行控制。由于未通過RSN認證,所以只能發送處理認證的數據幀,即4-Way Handshake(四次握手)幀。這部分內容在3.3.7節介紹。 - 4-Way Handshake成功后,STA進入State 4。此時它完全加入無線網絡,所有數據幀就能正常傳輸。 MAC管理實體包含的功能很多,不過對程序員來說,其理解難度反而較小,因為它定義的原語類似代碼中的API,而且每個參數的作用有詳盡的解釋。讀者以后在分析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>

                              哎呀哎呀视频在线观看