本節介紹802.11規范中的物理組件和相關網絡結構。首先來看無線網絡中的物理組件。
1. 物理組件[12]
802.11無線網絡包含四種主要物理組件,如圖3-9所示:
:-: 
圖3-9 802.11四大主要物理組件
圖3-9中定義了四個組件,它們分別是:
- Wireless Medium(譯為無線媒介):規范中縮寫為WM。其本意指能傳送無線MAC幀數據的物理層。規范最早定義了射頻和紅外兩種物理層,但目前使用最多的是射頻物理層。
- Station(譯為工作站):規范中縮寫為STA,其英文定義是“A logical entity that is a singly addressable instance of a MAC and PHY interface to the WM”。通俗點說,STA就是指攜帶有無線網絡接口卡(即無線網卡)的設備,例如筆記本、智能手機等。另外,無線網卡和有線網卡的MAC地址均分配自同一個地址池以確保其唯一性。。
- Acess Point(譯為接入點):規范中縮寫為AP,其原文定義是“An entity that contains one STA and provides access to the distribution services, via the WM for associated STAs”。由其定義可知,AP本身也是一個STA,只不過它還能為那些已經關聯的(associated)STA提供分布式服務(distribution services)。什么是Distribution Services呢?請讀者閱讀下文。
- Distribution system(譯為分布式系統):規范中縮寫為DS,其英文定義為“A system used to interconnect a set of basic service sets(BSSs)and integrated local area networks(LANs)to create an extended service set(ESS)”。DS的定義涉及到BSS、ESS等后文才介紹的無線網絡架構,其解釋見下文。
上述四個物理組件中最難解釋清楚的就是DS了。筆者在仔細閱讀規范后,感覺其對DS的解釋并不直觀。此處將列舉一個常見的應用場景以幫助讀者理解:
一般家用無線路由器一端通過有線接入互聯網,另一端通過天線提供無線網絡。當打開Android手機上的Wi-Fi功能,并成功連接到此無線路由器提供的無線網絡(假設其網絡名為“TP-LINK_1F9C5E”,可在路由器中設置)時,我們將得到:
- 路由器一端通過有線接入互聯網,故可認為它整合(integrate)了LAN。
- 不論路由器是否接入有線網絡(即本例中的互聯網),手機(扮演STA的角色)和路由器(扮演AP的角色)之間建立了一個小的無線網絡。該無線網絡的覆蓋范圍由AP即路由器決定。這個小網絡就是一個BSS。另外,定義中提及的ESS是對BSS的擴展。一個ESS可包含一或多個BSS。在本例中,ESS對應的ID就是“TP-LINK_1F9C5E”,即我們為路由器設置的網絡名。
上述內容中將BSS和LAN結合到一起以構成一個ESS的“東西”就是DS。雖然規范中并未明示DS到底是什么,但絕大部分情況下,DS是指有線網絡(通過它可以接入互聯網)。后文我們將介紹DS所提供的分布式服務(即DSS)。現在對讀者來說,更重要的概念是其中和無線網絡架構相關的BSS和ESS等。這部分內容將在下節介紹。
* * * * *
**規范閱讀提示**:
1 上文介紹的AP、STA、DS的定義都來自于802.11的3.1節。筆者個人覺得該節所列的定義是最精確的。以DS為例,此節所定義的DS涉及到和有線網絡的結合。但規范中其他關于DS的說明均未明示是否一定要和LAN結合。
2 關于STA,其定義只說明它是一個可singly addressable的實體,而沒有說明其對應的功能。所以,讀者會發現AP也是一個STA。另外還有提供QoS(Quality of Service)的STA。除此之外,從可移動性的角度來看,還有Mobile STA和Portable STA之分。Portable STA雖然可以移動,但只在固定地點使用(例如AP就是一個典型的Portable STA)。而Mobile STA表示那些只要在Wi-Fi覆蓋范圍內,都可以使用的STA(例如手機、平板等設備)。
* * * * *
2. 無線網絡的構建[12]
有了上節所述的物理組件,現在就可以搭建由它們構成的無線網絡了。802.11規范中,基本服務集(Basic Service Set,簡寫為BSS)是整個無線網絡的基本構建組件(basic building block)。BSS如圖3-10所示:
:-: 
圖3-10 BSS的兩種方式
由圖3-10可知,BSS有兩種類型,分別是:
-**Independent BSS(獨立型BSS)**:這種類型的BSS不需要AP參與。各STA之間可直接交互。這種網絡也叫ad-hoc BSS(一般譯為自組網絡或對等網絡)。
- **Infrastructure BSS(基礎結構型BSS)**:所有STA之間的交互必須經過AP。AP是基礎結構型BSS的中控臺。這也是家庭或工作中最常見的網絡架構。在這種網絡中,一個STA必須完成諸如關聯、授權等步驟后才能加入某個BSS。注意,一個STA一次只能屬于一個BSS。
* * * * *
**提示**:
1 Independent BSS縮寫為IBSS。而Infrastructure BSS沒有對應的縮寫。不過,一般用BSS代表Infrastrucutre BSS。
2 根據前文所述,AP也是一個STA。但此處STA和AP顯然是兩個不同的設備。
* * * * *
由圖3-10中BSS的結構可知,其網絡覆蓋范圍由該BSS中的AP決定。在某些情況下,需要幾個BSS聯合工作以構建一個覆蓋面更大的網絡,這就是一個ESS(Extended Service Set:擴展服務集)。如圖3-11所示:
:-: 
圖3-11 ESS示意圖
ESS在規范中的定義是“A set of one or one interconnected BSSs that appears as a single BSS to the LLC layer at any STA associated with one of those BSSs”。此定義包含幾個關鍵點:
- 一個ESS包含一到多個BSS。如圖3-11中所示的BSS1和BSS2。
- BSS1和BSS2本來各自組成了自己的小網絡。但在ESS結構中,它們在邏輯上又構成了一個更大的BSS。這意味著最初在BSS2中使用的STA4(利用STA3,即BSS2中的AP上網)能跑到BSS1的范圍內利用它的AP(即STA2)上網而不用做任何無線網絡切換之類的操作。此場景在手機通信領域很常見。例如在移動的汽車上打電話。此時手機就會根據情況在物理位置不同的基站間切換語音數據傳輸而不影響通話。
* * * * *
**注意**:ESS中的BSS擁有相同的SSID(Service Set Identification,詳細內容見下文),并且彼此之間協同工作。這和目前隨著Wi-Fi技術的推廣,家庭和工作環境中存在多個無線網絡(即存在多個ESS)的情況有本質不同。在多個ESS情況下,用戶必須手動選擇才能切換到不同的ESS。由于筆者日常工作和生活中,ESS只包含一個BSS,當某個AP停機時,筆者就得手動切換到其他無線網絡中去了。
另外,切換相關的知識點屬于Roaming(漫游)范疇,讀者可閱讀“Secure Roaming in 802.11 Networks”一書來了解相關細節。
* * * * *
上述網絡都有所謂的Identification,它們分別是:
- BSSID:每一個BSS都有自己的唯一編號,稱為BSS Identification。在基礎結構型網絡中,BSSID就是AP的MAC地址,該MAC地址是真實的地址。IBSS中,其BSSID也是一個MAC地址,不過這個MAC地址是隨機生成的。
- SSID:Service Set Identification。一般而言,BSSID會和一個SSID關聯。BSSID是MAC地址,而SSID就是網絡名。網絡名往往是一個可讀字符串,因為網絡名比MAC地址更方便人們記憶。
ESS包括一到多個BSS,而它對外看起來就像一個BSS。所以,對ESS的編號就由SSID來表達。只要設置其內部BSS的SSID為同一個名稱即可。一般情況下,ESS的SSID就是其網絡名(network name)。
* * * * *
**規范閱讀提示**:
1 上述網絡結構中,并未提及如何與有線網絡(即LAN)的整合。規范中其實還定義了一個名為portal的邏輯模塊(logical component)用于將WLAN(Wireless LAN)和LAN結合起來。由于WLAN和LAN使用的MAC幀格式不同,所以直白得說,portal的功能類似翻譯,它在WLAN和LAN間轉換MAC幀數據。目前,portal的功能由AP實現。
2 規范中還定義了QoS BSS。這主要為了在WLAN中支持那些對QoS有要求的程序。由于無線網絡本身固有的特性,WLAN中的QoS實現比較復雜,效果也不如LAN中的QoS。初學者可先不接觸這部分內容。
* * * * *
- 前言
- 第1章 準備工作
- 1.1 Android系統架構
- 1.2 工具使用
- 1.2.1 Source Insight的使用
- 1.2.2 Eclipse的使用
- 1.2.3 BusyBox的使用
- 1.3 本書資源下載說明
- 第2章 深入理解Netd
- 2.1 概述
- 2.2 Netd工作流程
- 2.2.1 main函數分析
- 2.2.2 NetlinkManager分析
- 2.2.3 CommandListener分析
- 2.2.4 DnsProxyListener分析
- 2.2.5 MDnsSdListener分析
- 2.3 CommandListener中的命令
- 2.3.1 iptables、tc和ip命令
- 2.3.2 CommandListener構造函數和測試工具ndc
- 2.3.3 InterfaceCmd命令
- 2.3.4 IpFwd和FirewallCmd命令
- 2.3.5 ListTtysCmd和PppdCmd命令
- 2.3.6 BandwidthControlCmd和IdletimerControlCmd命令
- 2.3.7 NatCmd命令
- 2.3.8 TetherCmd和SoftapCmd命令
- 2.3.9 ResolverCmd命令
- 2.4 NetworkManagementService介紹
- 2.4.1 create函數詳解
- 2.4.2 systemReady函數詳解
- 2.5 本章總結和參考資料說明
- 2.5.1 本章總結
- 2.5.2 參考資料說明
- 第3章 Wi-Fi基礎知識
- 3.1 概述
- 3.2 無線電頻譜和802.11協議的發展歷程
- 3.2.1 無線電頻譜知識
- 3.2.2 IEEE 802.11發展歷程
- 3.3 802.11無線網絡技術
- 3.3.1 OSI基本參考模型及相關基本概念
- 3.3.2 802.11知識點導讀
- 3.3.3 802.11組件
- 3.3.4 802.11 Service介紹
- 3.3.5 802.11 MAC服務和幀
- 3.3.6 802.11 MAC管理實體
- 3.3.7 無線網絡安全技術知識點
- 3.4 Linux Wi-Fi編程API介紹
- 3.4.1 Linux Wireless Extensions介紹
- 3.4.2 nl80211介紹
- 3.5 本章總結和參考資料說明
- 3.5.1 本章總結
- 3.5.2 參考資料說明
- 第4章 深入理解wpa_supplicant
- 4.1 概述
- 4.2 初識wpa_supplicant
- 4.2.1 wpa_supplicant架構
- 4.2.2 wpa_supplicant編譯配置
- 4.2.3 wpa_supplicant命令和控制API
- 4.2.4 git的使用
- 4.3 wpa_supplicant初始化流程
- 4.3.1 main函數分析
- 4.3.2 wpa_supplicant_init函數分析
- 4.3.3 wpa_supplicant_add_iface函數分析
- 4.3.4 wpa_supplicant_init_iface函數分析
- 4.4 EAP和EAPOL模塊
- 4.4.1 EAP模塊分析
- 4.4.2 EAPOL模塊分析
- 4.5 wpa_supplicant連接無線網絡分析
- 4.5.1 ADD_NETWORK命令處理
- 4.5.2 SET_NETWORK命令處理
- 4.5.3 ENABLE_NETWORK命令處理
- 4.6 本章總結和參考資料說明
- 4.6.1 本章總結
- 4.6.2 參考資料說明
- 第5章 深入理解WifiService
- 5.1 概述
- 5.2 WifiService的創建及初始化
- 5.2.1 HSM和AsyncChannel介紹
- 5.2.2 WifiService構造函數分析
- 5.2.3 WifiStateMachine介紹
- 5.3 加入無線網絡分析
- 5.3.1 Settings操作Wi-Fi分析
- 5.3.2 WifiService操作Wi-Fi分析
- 5.4 WifiWatchdogStateMachine介紹
- 5.5 Captive Portal Check介紹
- 5.6 本章總結和參考資料說明
- 5.6.1 本章總結
- 5.6.2 參考資料說明
- 第6章 深入理解Wi-Fi Simple Configuration
- 6.1 概述
- 6.2 WSC基礎知識
- 6.2.1 WSC應用場景
- 6.2.2 WSC核心組件及接口
- 6.3 Registration Protocol詳解
- 6.3.1 WSC IE和Attribute介紹
- 6.3.2 802.11管理幀WSC IE設置
- 6.3.3 EAP-WSC介紹
- 6.4 WSC代碼分析
- 6.4.1 Settings中的WSC處理
- 6.4.2 WifiStateMachine的處理
- 6.4.3 wpa_supplicant中的WSC處理
- 6.4.4 EAP-WSC處理流程分析
- 6.5 本章總結和參考資料說明
- 6.5.1 本章總結
- 6.5.2 參考資料說明
- 第7章 深入理解Wi-Fi P2P
- 7.1 概述
- 7.2 P2P基礎知識
- 7.2.1 P2P架構
- 7.2.2 P2P Discovery技術
- 7.2.3 P2P工作流程
- 7.3 WifiP2pSettings和WifiP2pService介紹
- 7.3.1 WifiP2pSettings工作流程
- 7.3.2 WifiP2pService工作流程
- 7.4 wpa_supplicant中的P2P
- 7.4.1 P2P模塊初始化
- 7.4.2 P2P Device Discovery流程分析
- 7.4.3 Provision Discovery流程分析
- 7.4.4 GO Negotiation流程分析
- 7.5 本章總結和參考資料說明
- 7.5.1 本章總結
- 7.5.2 參考資料說明
- 第8章 深入理解NFC
- 8.1 概述
- 8.2 NFC基礎知識
- 8.2.1 NFC概述
- 8.2.2 NFC R/W運行模式
- 8.2.3 NFC P2P運行模式
- 8.2.4 NFC CE運行模式
- 8.2.5 NCI原理
- 8.2.6 NFC相關規范
- 8.3 Android中的NFC
- 8.3.1 NFC應用示例
- 8.3.2 NFC系統模塊
- 8.4 NFC HAL層討論
- 8.5 本章總結和參考資料說明
- 8.5.1 本章總結
- 8.5.2 參考資料說明
- 第9章 深入理解GPS
- 9.1 概述
- 9.2 GPS基礎知識
- 9.2.1 衛星導航基本原理
- 9.2.2 GPS系統組成及原理
- 9.2.3 OMA-SUPL協議
- 9.3 Android中的位置管理
- 9.3.1 LocationManager架構
- 9.3.2 LocationManager應用示例
- 9.3.3 LocationManager系統模塊
- 9.4 本章總結和參考資料說明
- 9.4.1 本章總結
- 9.4.2 參考資料說明
- 附錄