Linux無(wú)線網(wǎng)絡(luò)技術(shù)概述:WLAN

字號(hào):

當(dāng)今,不考慮 Linux 和無(wú)線網(wǎng)絡(luò)技術(shù)的話,就無(wú)法談到計(jì)算機(jī)和網(wǎng)絡(luò)。在這篇文章中,Sreekrishnan Venkateswaran 用 Linux 觀點(diǎn)闡釋了通過(guò) WLAN、Bluetooth、GPRS、GSM 以及 IrDA 實(shí)現(xiàn)無(wú)線聯(lián)網(wǎng)。他使用各種不同的無(wú)線設(shè)備和相應(yīng)的內(nèi)核層,以及用戶空間工具來(lái)示范它們?cè)?Linux 下如何工作。
    無(wú)線技術(shù),例如 WLAN (Wireless Local Area Network)、Bluetooth、GPRS (General Packet Radio Service)、GSM (Global System for Mobile communications) 以及 IrDa (Infrared Data),在不同的環(huán)境下提供服務(wù)。雖然 WLAN 支持比 Bluetooth 更高的速度和更長(zhǎng)的傳播距離,但是它也需要更多的費(fèi)用并且耗電量更大。GPRS 雖然比 Bluetooth 和 WLAN 慢,但是可用于移動(dòng)技術(shù)。盡管它們存在差異,或者是其他原因,但是具有多種無(wú)線功能的設(shè)備可以綜合利用它們。例如,根據(jù) GPS 模塊的定位輸入,設(shè)備可以透明地將網(wǎng)絡(luò)連接從路上的 GPRS 切換到網(wǎng)吧中更便宜的 WLAN。移動(dòng)電話可以通過(guò) Bluetooth 與心律監(jiān)視器通信,當(dāng)病人心律超出某個(gè)極,就可以通過(guò) GSM 向醫(yī)生發(fā)送警報(bào)。
    目前,無(wú)線技術(shù)已經(jīng)以 PCMCIA、Compact Flash (CF) 卡的形式廣泛應(yīng)用,或者用于 USB 設(shè)備。大多數(shù)計(jì)算機(jī)系統(tǒng),包括嵌入式設(shè)備,都有 PCMCIA、CF 或者 USB 接口,即使不含對(duì)無(wú)線技術(shù)的內(nèi)置支持,也能夠立刻使用這些技術(shù)。這篇文章分析了無(wú)線設(shè)備的一些示例,并且研究了設(shè)備驅(qū)動(dòng)程序的 Linux 實(shí)現(xiàn)、總線技術(shù)以及各種協(xié)議。
    首先,通過(guò)跟蹤 WLAN 樣卡的代碼流,您將了解到 WLAN 設(shè)備是如何在 Linux 下工作的,然后還可以看到幾個(gè) Bluetooth 設(shè)備如何與 Linux Bluetooth 棧和其他內(nèi)核層連接。接下來(lái),您將了解到如何使 GPRS 和 GSM 設(shè)備在 Linux 下工作。文章最后分析了 Linux 上的 IrDa 支持并簡(jiǎn)要介紹了有關(guān)無(wú)線網(wǎng)絡(luò)設(shè)備的性能問(wèn)題。
    注意:本文涉及到的內(nèi)核數(shù)據(jù)結(jié)構(gòu)和文件名是當(dāng)前 Linux 版本中所使用的。文件名相對(duì)于 Linux 內(nèi)核源程序樹(shù)的根。
    Linux 802.11 WLAN
    WLAN 通信系統(tǒng)作為有線 LAN 以外的另一種選擇一般用在同一座建筑內(nèi)。WLAN 使用 ISM (Industrial、Scientific、Medical) 無(wú)線電廣播頻段通信。WLAN 的 802.11a 標(biāo)準(zhǔn)使用 5 GHz 頻段,支持的速度為 54 Mbps,而 802.11b 和 802.11g 標(biāo)準(zhǔn)使用 2.4 GHz 頻段,分別支持 11 Mbps 和 54 Mbps 的速度。
    WLAN 類(lèi)似于有線以太網(wǎng),它們都是從同一地址池分配 MAC (Media Access Control) 地址,并且都是作為以太網(wǎng)設(shè)備出現(xiàn)在操作系統(tǒng)的網(wǎng)絡(luò)設(shè)備層。例如,ARP(Address Resolution Protocol) 表是用 WLAN MAC 地址和以太網(wǎng) MAC 地址填充的。
    然而 WLAN 與有線以太網(wǎng)在鏈路層有很大的區(qū)別。例如,802.11 標(biāo)準(zhǔn)使用沖突避免(CSMA/CA)代替有線以太網(wǎng)的沖突檢測(cè)(CSMA/CD)。而且,與以太網(wǎng)幀不同的是,WLAN 幀是被確認(rèn)的。
    由于 WLAN 工作站之間的模糊邊界,WLAN 鏈路層擁有在傳送前清除一個(gè)區(qū)域的協(xié)議。出于安全性考慮,WLAN 的 Wired Equivalent Privacy (WEP) 加密機(jī)制提供與有線網(wǎng)絡(luò)相同的安全級(jí)別。WEP 將 40 比特或 104 比特密鑰與隨機(jī)的 24 比特初始向量組合用以加解密數(shù)據(jù)。WLAN 支持兩種通信模式:Ad Hoc 模式 用于小群組工作站之間不必使用訪問(wèn)點(diǎn)的短時(shí)間內(nèi)通信,而 Infrastructure 模式 的所有通信必須通過(guò)訪問(wèn)點(diǎn)。訪問(wèn)點(diǎn)周期性地廣播一個(gè)服務(wù)集標(biāo)識(shí)符(SSID),SSID 用于將一個(gè) WLAN 網(wǎng)絡(luò)與其他網(wǎng)絡(luò)區(qū)別開(kāi)來(lái)。
    大多數(shù)可用的 WLAN 卡是基于 Intersil Prism 或 Lucent Hermes 芯片組的。Compaq、Nokia、Linksys 和 D-Link 卡使用 Prism 芯片組,而 Lucent Orinoco 卡和 Apple Airport 使用 Hermes 芯片組。
    Linux WLAN 支持
    Linux WLAN 支持由 WLAN API 實(shí)現(xiàn)和 WLAN 設(shè)備驅(qū)動(dòng)程序組成。我將依次研究它們。
    有兩個(gè) Linux 項(xiàng)目定義一般的 WLAN API,并且提供工具讓用戶空間應(yīng)用程序配置參數(shù)和存取來(lái)自 WLAN 設(shè)備驅(qū)動(dòng)程序的信息。Wireless Extensions 項(xiàng)目為不同的無(wú)線網(wǎng)卡提供公共的 Linux 用戶空間接口。這個(gè)項(xiàng)目的工具包括 iwconfig 用以配置參數(shù)(比如 WLAN 驅(qū)動(dòng)程序中的 WEP 關(guān)鍵字及 SSID)。linux-wlan 項(xiàng)目作為 Wireless Extensions 項(xiàng)目一部分,也支持一系列用于從用戶空間與 WLAN 設(shè)備驅(qū)動(dòng)程序交互的工具。與基于 Wireless Extensions 的工具不同,這些工具使用類(lèi)似于 SNMP (Simple Network Management Protocol) MIB (Management Information Base) 的語(yǔ)法,該語(yǔ)法反映 IEEE 802.11 規(guī)范。
    繼續(xù)討論設(shè)備驅(qū)動(dòng)程序,支持流行的 WLAN 卡的 Linux 設(shè)備驅(qū)動(dòng)程序包括:
    Orinoco WLAN 驅(qū)動(dòng)程序:是 Linux 內(nèi)核源代碼的一部分,支持基于 Hermes 的卡和基于 Intersil Prism 的卡。orinoco_cs 模塊提供了 PCMCIA 和 CF 卡所必需的 PCMCIA 卡服務(wù)支持。
    linux-wlan 項(xiàng)目的 linux-wlan-ng 驅(qū)動(dòng)程序:支持多種基于 Prism 芯片組的卡。這個(gè)驅(qū)動(dòng)程序支持 linux-wlan API 并部分支持 Wireless Extensions。
    Host AP 設(shè)備驅(qū)動(dòng)程序:支持 Prism 芯片組的 AP 模式,可以使 WLAN 主機(jī)起訪問(wèn)點(diǎn)的作用。
    Linux Symbol Spectrum 設(shè)備驅(qū)動(dòng)程序:支持 Symbol PCMCIA 卡。不同于 PCMCIA 卡,Symbol CF 卡缺乏板載固件,它依靠設(shè)備驅(qū)動(dòng)程序來(lái)下載固件。該驅(qū)動(dòng)程序的一個(gè)單獨(dú)版本適用于 CF 卡。Intel 將 Symbol PCMCIA 卡重新打包為 Intel PRO/Wireless 卡,而 Socket 通信重新打包了 Symbol CF 卡。
    Atmel USB WLAN 驅(qū)動(dòng)程序:利用 Atmel 芯片組支持許多 USB WLAN 設(shè)備。