1. 程式人生 > >wifi網路接入原理(上)——掃描Scanning

wifi網路接入原理(上)——掃描Scanning

轉載請註明出處:http://blog.csdn.net/Righthek 謝謝!    

        對於低頭黨來說,在使用WIFI功能時,經常性的操作是開啟手機上的WIFI裝置,搜尋到心目中的熱點,輸入密碼,聯網成功,各種低頭上網。。。這個看似簡單的過程,背後卻是隱藏著大量的無線通訊技術。用幾個專業術語來表示這個過程,分別是:掃描(Scanning)、認證(Authentication)、關聯(Association)。下面用一張圖來表示這個過程。


圖1  WIFI接入網路過程

        現在讓我們來分析一下這個過程的工作原理。

        相對移動電子產品來說,WIFI的功耗會比較大。因此,上層應用程式都會有一個開關,用於開啟和關閉WIFI功能。個人認為,最好的電源管理設計是上層應用程式的開關可操作WIFI硬體模組的電源的通斷。當用戶在手機上點選開啟WIFI時,WIFI模組通電執行起來,當然也會相應載入WIFI的驅動程式。

         開啟完成後,我們可以看到手機上顯示搜尋到附近的WIFI熱點,這個搜尋過程的工作原理是怎樣的呢?用一個無線通訊專業術語來表示:掃描(Scanning)。

         掃描的目的是什麼?就是要找到一個無線網路,然後加入到該網路中。

         要加入一個無線網路,那麼我們需要找到它的網路名稱,即SSID。這個SSID其實是接入點(Access Point)迴應工作站掃描時所帶的引數,還有其它的網路引數,包括BSSID(可理解為接入點的MAC地址)、訊號強度、加密和認證方式等。

         掃描型別分兩種,一種是主動掃描(active scanning),另一種是被動掃描(passivescanning)。

        1、 主動掃描(activescanning)

        我們先來說說主動掃描。即我們的手機(工作站STA)以主動的方式,在每個通道上發出Probe Request幀,請求某個特定無線網路予以迴應。主動掃描是主動尋找網路,而不是靜候無線網路宣告本身的存在。使用主動掃描的工作站將會以如下的程式掃描通道表所列的頻道:

        (1)跳至某個通道,然後等候來幀指示(indicationof an incoming frame)或者等到ProbeDelay定時器超時。如果在這個通道收到幀,就證明該通道有使用者在使用,因此可以加以探測。而ProbeDelay定時器可用來防止某個閒置通道讓整個過程停止,因為工作站不會一直等待幀的到來。

        (2)利用基本的DCF訪問過程取得媒介使用權,然後送出一個Probe Request幀。

        (3)至少等候一段最短的通道時間(即MinChannelTime)。

        a.如果媒介並不忙碌,表示沒有網路存在,因此可以跳至下個通道。

        b.如果在MinChannelTime這段期間媒介非常忙碌,就繼續等候一段時間,直到最長的通道時間(即MaxChannelTime)超時,然後處理任何的Probe Response幀。

         大家可能會發現當手機進行WIFI熱點搜尋時,有時時間會比較長,原因是你處在的區域存在多個接入點(AP),當手機發出Probe Request幀時,多個接入點(AP)通過競爭視窗(congestionwindow)迴應Probe Response幀,而這個競爭過程受限於最長的通道時間(即MaxChannelTime)。

        當無線網路收到搜尋其所屬的擴充套件服務集(ESS)的Probe Request時,就會發出Probe Response幀。若要找到附近所有的無線網路,那麼Probe Request幀可使用broadcastSSID,如此一來,該區所有的802.11無線網路都會以Probe Response加以迴應。

        2、 被動掃描(passivescanning)

        現在大部分移動電子產品都是採用被動掃描(passive scanning)的方式,原因是掃描過程中不需要傳送任何訊號,可以省電。在被動掃描中,工作站會在通道列表(channel list)所列的各個通道之間不斷切換,並靜候Beacon幀的到來。所收到的任何幀都會被暫存起來,以便取出傳送這些幀的BSS 的相關資料。

        在被動掃描的過程中,工作站會在通道間不斷切換,並且會記錄來自所收到的任何Beacon的資訊。Beacon在設計上是為了讓工作站知道加入某個基本服務集(Basic Service Set,簡稱 BSS)所需要的引數以便進行通訊。在下圖中,通過監聽來自前三個接入點的Beacon幀,移動式工作站以被動掃描找出該區所有BSS。如果該工作站並未收到來自第四個接入點的Beacon,就會彙報目前只發現的三個BSS。


圖2  被動掃描

轉載請註明出處:http://blog.csdn.net/Righthek 謝謝!

轉載請註明出處:http://blog.csdn.net/Righthek 謝謝!    

        對於低頭黨來說,在使用WIFI功能時,經常性的操作是開啟手機上的WIFI裝置,搜尋到心目中的熱點,輸入密碼,聯網成功,各種低頭上網。。。這個看似簡單的過程,背後卻是隱藏著大量的無線通訊技術。用幾個專業術語來表示這個過程,分別是:掃描(Scanning)、認證(Authentication)、關聯(Association)。下面用一張圖來表示這個過程。


圖1  WIFI接入網路過程

        現在讓我們來分析一下這個過程的工作原理。

        相對移動電子產品來說,WIFI的功耗會比較大。因此,上層應用程式都會有一個開關,用於開啟和關閉WIFI功能。個人認為,最好的電源管理設計是上層應用程式的開關可操作WIFI硬體模組的電源的通斷。當用戶在手機上點選開啟WIFI時,WIFI模組通電執行起來,當然也會相應載入WIFI的驅動程式。

         開啟完成後,我們可以看到手機上顯示搜尋到附近的WIFI熱點,這個搜尋過程的工作原理是怎樣的呢?用一個無線通訊專業術語來表示:掃描(Scanning)。

         掃描的目的是什麼?就是要找到一個無線網路,然後加入到該網路中。

         要加入一個無線網路,那麼我們需要找到它的網路名稱,即SSID。這個SSID其實是接入點(Access Point)迴應工作站掃描時所帶的引數,還有其它的網路引數,包括BSSID(可理解為接入點的MAC地址)、訊號強度、加密和認證方式等。

         掃描型別分兩種,一種是主動掃描(active scanning),另一種是被動掃描(passivescanning)。

        1、 主動掃描(activescanning)

        我們先來說說主動掃描。即我們的手機(工作站STA)以主動的方式,在每個通道上發出Probe Request幀,請求某個特定無線網路予以迴應。主動掃描是主動尋找網路,而不是靜候無線網路宣告本身的存在。使用主動掃描的工作站將會以如下的程式掃描通道表所列的頻道:

        (1)跳至某個通道,然後等候來幀指示(indicationof an incoming frame)或者等到ProbeDelay定時器超時。如果在這個通道收到幀,就證明該通道有使用者在使用,因此可以加以探測。而ProbeDelay定時器可用來防止某個閒置通道讓整個過程停止,因為工作站不會一直等待幀的到來。

        (2)利用基本的DCF訪問過程取得媒介使用權,然後送出一個Probe Request幀。

        (3)至少等候一段最短的通道時間(即MinChannelTime)。

        a.如果媒介並不忙碌,表示沒有網路存在,因此可以跳至下個通道。

        b.如果在MinChannelTime這段期間媒介非常忙碌,就繼續等候一段時間,直到最長的通道時間(即MaxChannelTime)超時,然後處理任何的Probe Response幀。

         大家可能會發現當手機進行WIFI熱點搜尋時,有時時間會比較長,原因是你處在的區域存在多個接入點(AP),當手機發出Probe Request幀時,多個接入點(AP)通過競爭視窗(congestionwindow)迴應Probe Response幀,而這個競爭過程受限於最長的通道時間(即MaxChannelTime)。

        當無線網路收到搜尋其所屬的擴充套件服務集(ESS)的Probe Request時,就會發出Probe Response幀。若要找到附近所有的無線網路,那麼Probe Request幀可使用broadcastSSID,如此一來,該區所有的802.11無線網路都會以Probe Response加以迴應。

        2、 被動掃描(passivescanning)

        現在大部分移動電子產品都是採用被動掃描(passive scanning)的方式,原因是掃描過程中不需要傳送任何訊號,可以省電。在被動掃描中,工作站會在通道列表(channel list)所列的各個通道之間不斷切換,並靜候Beacon幀的到來。所收到的任何幀都會被暫存起來,以便取出傳送這些幀的BSS 的相關資料。

        在被動掃描的過程中,工作站會在通道間不斷切換,並且會記錄來自所收到的任何Beacon的資訊。Beacon在設計上是為了讓工作站知道加入某個基本服務集(Basic Service Set,簡稱 BSS)所需要的引數以便進行通訊。在下圖中,通過監聽來自前三個接入點的Beacon幀,移動式工作站以被動掃描找出該區所有BSS。如果該工作站並未收到來自第四個接入點的Beacon,就會彙報目前只發現的三個BSS。


圖2  被動掃描

轉載請註明出處:http://blog.csdn.net/Righthek 謝謝!