自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

運維 系統(tǒng)運維
用 Linux 觀點闡釋了通過 WLAN、Bluetooth、GPRS、GSM 以及 IrDA 實現(xiàn)無線聯(lián)網(wǎng)。他使用各種不同的無線設(shè)備和相應(yīng)的內(nèi)核層,以及用戶空間工具來示范它們在 Linux 下如何工作。

當(dāng)今,不考慮 Linux 和無線網(wǎng)絡(luò)技術(shù)的話,就無法談到計算機和網(wǎng)絡(luò)。在這篇文章中,Sreekrishnan Venkateswaran 用 Linux 觀點闡釋了通過 WLAN、Bluetooth、GPRS、GSM 以及 IrDA 實現(xiàn)無線聯(lián)網(wǎng)。他使用各種不同的無線設(shè)備和相應(yīng)的內(nèi)核層,以及用戶空間工具來示范它們在 Linux 下如何工作。

無線技術(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 更高的速度和更長的傳播距離,但是它也需要更多的費用并且耗電量更大。GPRS 雖然比 Bluetooth 和 WLAN 慢,但是可用于移動技術(shù)。盡管它們存在差異,或者是其他原因,但是具有多種無線功能的設(shè)備可以綜合利用它們。例如,根據(jù) GPS 模塊的定位輸入,設(shè)備可以透明地將網(wǎng)絡(luò)連接從路上的 GPRS 切換到網(wǎng)吧中更便宜的 WLAN。移動電話可以通過 Bluetooth 與心律監(jiān)視器通信,當(dāng)病人心律超出某個極限時,就可以通過 GSM 向醫(yī)生發(fā)送警報。

目前,無線技術(shù)已經(jīng)以 PCMCIA、Compact Flash (CF) 卡的形式廣泛應(yīng)用,或者用于 USB 設(shè)備。大多數(shù)計算機系統(tǒng),包括嵌入式設(shè)備,都有 PCMCIA、CF 或者 USB 接口,即使不含對無線技術(shù)的內(nèi)置支持,也能夠立刻使用這些技術(shù)。這篇文章分析了無線設(shè)備的一些示例,并且研究了設(shè)備驅(qū)動程序的 Linux 實現(xiàn)、總線技術(shù)以及各種協(xié)議。

首先,通過跟蹤 WLAN 樣卡的代碼流,您將了解到 WLAN 設(shè)備是如何在 Linux 下工作的,然后還可以看到幾個 Bluetooth 設(shè)備如何與 Linux Bluetooth 棧和其他內(nèi)核層連接。接下來,您將了解到如何使 GPRS 和 GSM 設(shè)備在 Linux 下工作。文章***分析了 Linux 上的 IrDa 支持并簡要介紹了有關(guān)無線網(wǎng)絡(luò)設(shè)備的性能問題。

注意:本文涉及到的內(nèi)核數(shù)據(jù)結(jié)構(gòu)和文件名是當(dāng)前 Linux 版本中所使用的。文件名相對于 Linux 內(nèi)核源程序樹的根。

Linux 802.11 WLAN

WLAN 通信系統(tǒng)作為有線 LAN 以外的另一種選擇一般用在同一座建筑內(nèi)。WLAN 使用 ISM (Industrial、Scientific、Medical) 無線電廣播頻段通信。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 類似于有線以太網(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)的沖突檢測(CSMA/CD)。而且,與以太網(wǎng)幀不同的是,WLAN 幀是被確認(rèn)的。

由于 WLAN 工作站之間的模糊邊界,WLAN 鏈路層擁有在傳送前清除一個區(qū)域的協(xié)議。出于安全性考慮,WLAN 的 Wired Equivalent Privacy (WEP) 加密機制提供與有線網(wǎng)絡(luò)相同的安全級別。WEP 將 40 比特或 104 比特密鑰與隨機的 24 比特初始向量組合用以加解密數(shù)據(jù)。WLAN 支持兩種通信模式:Ad Hoc 模式 用于小群組工作站之間不必使用訪問點的短時間內(nèi)通信,而 Infrastructure 模式 的所有通信必須通過訪問點。訪問點周期性地廣播一個服務(wù)集標(biāo)識符(SSID),SSID 用于將一個 WLAN 網(wǎng)絡(luò)與其他網(wǎng)絡(luò)區(qū)別開來。

大多數(shù)可用的 WLAN 卡是基于 Intersil Prism 或 Lucent Hermes 芯片組的。Compaq、Nokia、Linksys 和 D-Link 卡使用 Prism 芯片組,而 Lucent Orinoco 卡和 Apple Airport 使用 Hermes 芯片組。

Linux WLAN 支持

Linux WLAN 支持由 WLAN API 實現(xiàn)和 WLAN 設(shè)備驅(qū)動程序組成。我將依次研究它們。

有兩個 Linux 項目定義一般的 WLAN API,并且提供工具讓用戶空間應(yīng)用程序配置參數(shù)和存取來自 WLAN 設(shè)備驅(qū)動程序的信息。Wireless Extensions 項目為不同的無線網(wǎng)卡提供公共的 Linux 用戶空間接口。這個項目的工具包括 iwconfig 用以配置參數(shù)(比如 WLAN 驅(qū)動程序中的 WEP 關(guān)鍵字及 SSID)。linux-wlan 項目作為 Wireless Extensions 項目一部分,也支持一系列用于從用戶空間與 WLAN 設(shè)備驅(qū)動程序交互的工具。與基于 Wireless Extensions 的工具不同,這些工具使用類似于 SNMP (Simple Network Management Protocol) MIB (Management Information Base) 的語法,該語法反映 IEEE 802.11 規(guī)范。

繼續(xù)討論設(shè)備驅(qū)動程序,支持流行的 WLAN 卡的 Linux 設(shè)備驅(qū)動程序包括:

Orinoco WLAN 驅(qū)動程序:是 Linux 內(nèi)核源代碼的一部分,支持基于 Hermes 的卡和基于 Intersil Prism 的卡。orinoco_cs 模塊提供了 PCMCIA 和 CF 卡所必需的 PCMCIA 卡服務(wù)支持。

linux-wlan 項目的 linux-wlan-ng 驅(qū)動程序:支持多種基于 Prism 芯片組的卡。這個驅(qū)動程序支持 linux-wlan API 并部分支持 Wireless Extensions。

Host AP 設(shè)備驅(qū)動程序:支持 Prism 芯片組的 AP 模式,可以使 WLAN 主機起訪問點的作用。

Linux Symbol Spectrum 設(shè)備驅(qū)動程序:支持 Symbol PCMCIA 卡。不同于 PCMCIA 卡,Symbol CF 卡缺乏板載固件,它依靠設(shè)備驅(qū)動程序來下載固件。該驅(qū)動程序的一個單獨版本適用于 CF 卡。Intel 將 Symbol PCMCIA 卡重新打包為 Intel PRO/Wireless 卡,而 Socket 通信重新打包了 Symbol CF 卡。

Atmel USB WLAN 驅(qū)動程序:利用 Atmel 芯片組支持許多 USB WLAN 設(shè)備。

Intersil Prism2 WLAN CF 卡

我將討論 Intersil Prism2 802.11b WLAN CF 卡來展示它如何與 Linux PCMCIA、網(wǎng)絡(luò)設(shè)備及協(xié)議層一起工作。

Linux PCMCIA/CF 層由 PCMCIA 主機控制器的設(shè)備驅(qū)動程序、不同卡的客戶機驅(qū)動程序、用戶模式程序、有助于熱拔的后臺進(jìn)程和與以上各部分交互并為它們提供服務(wù)的內(nèi)核卡服務(wù)中樞組成。PCMCIA 控制器將卡連接到系統(tǒng)總線,將卡內(nèi)存映射到主機 I/O 和內(nèi)存窗口,并將卡產(chǎn)生的中斷路由到自由處理器中斷線。CF 卡較小,但與 PCMCIA 兼容,并且經(jīng)常應(yīng)用于手持設(shè)備。PCMCIA/CF 卡擁有兩個存儲空間:屬性內(nèi)存(attribute memory)和 公共內(nèi)存(common memory)。屬性內(nèi)存類似于 Card Information Structure (CIS),用來保存配置注冊和描述符信息。Linux 卡服務(wù)核心與主機控制器設(shè)備驅(qū)動程序、卡設(shè)備驅(qū)動程序及用戶模式 cardmgr 后臺進(jìn)程交互。它在一些事件(比如卡插入、卡移出以及低電量)發(fā)生時調(diào)用卡驅(qū)動程序的事件處理程序例程。盡管卡服務(wù)從卡的 CIS 向上傳送信息到 cardmgr,但是 cardmgr 將為分配內(nèi)存窗口和中斷級別而在用戶空間(/etc/pcmcia/config.opts)中定義的資源分配策略向下傳送到卡服務(wù)。查看 drivers/pcmcia/ds.c 可以了解與 cardmgr 交互的內(nèi)核代碼,查閱 /etc/pcmcia/config.opts 可以了解用戶空間資源分配策略。

插入 Intersil WLAN CF 卡時,卡服務(wù)調(diào)用 orinoco_cs 模塊的 PCMCIA 事件處理程序??ǚ?wù)解析卡屬性內(nèi)存中的 CIS 元組(tuples)并向上傳送信息到 cardmgr,這將從 /etc/pcmcia/config 文件(參閱清單 1)加載適當(dāng)?shù)脑O(shè)備驅(qū)動程序。由于卡的 CIS 中的 manfid 元組匹配 /etc/pcmcia/config 中的條目,所以 cardmgr 綁定帶有 orinoco_cs 驅(qū)動程序的卡。清單 1 中的設(shè)備條目規(guī)定 orinoco_cs 驅(qū)動程序由三個內(nèi)核模塊組成:orinoco、orinoco_cs 和 hermes。此外,由于設(shè)備屬于無線的(wireless)一類,所以當(dāng)啟動和停止設(shè)備時,cardmgr 執(zhí)行腳本 /etc/wireless/wireless。這個腳本使用 WLAN 工具和實用程序來配置設(shè)備驅(qū)動程序參數(shù),例如 WEP 關(guān)鍵字和 SSID。它還可以啟動 WLAN 上的網(wǎng)絡(luò)協(xié)議,例如 DHCP(Dynamic Host Configuration Protocol,動態(tài)主機配置通訊協(xié)議)。清單 1 中的示例使用 Wireless Extensions 工具來執(zhí)行設(shè)備配置。

注意: PCMCIA 配置文件的確切位置取決于所用的 Linux 分布。

清單 1. Intersil WLAN CF 卡的 PCMCIA 設(shè)備條目

card "Intersil PRISM2 11 Mbps Wireless Adapter"

manfid 0x0156, 0x0002

bind "orinoco_cs"

device "orinoco_cs"

class "wireless" module "orinoco","orinoco_cs","hermes"

用 /etc/pcmcia/wireless 和 /etc/pcmcia/wireless.opts 腳本來配置 WEP 關(guān)鍵字和 SSID 這樣的參數(shù)。

清單 2. 配置 WLAN 特定參數(shù)

iwconfig ethX essid

key AAAA-AAAA-AA [1] key BBBB-BBBB-BB [2] key CCCC-CCCC-CC [3] key DDDD-DDDD-DD [4]

: Set 64-bit WEP Keys and ESSID in the driver

iwconfig ethX : Display WLAN parameters

iwpriv : Get nongeneric, driver-specific parameters

iwlist : List Information and statistics from an interface

iwspy : Read quality of link for a set of addresses

/proc/net/wireless : Wireless Statistics from the device driver

在插入卡時,orinoco_cs 像傳統(tǒng)的網(wǎng)絡(luò)設(shè)備驅(qū)動程序一樣,調(diào)用 register_netdev 來獲得分配給 WLAN 接口的 ethX 網(wǎng)絡(luò)接口名。它還會注冊一個中斷服務(wù)例程的地址以服務(wù)收發(fā)無線數(shù)據(jù)時產(chǎn)生的中斷。中斷處理程序是 orinoco 模塊的一部分,并與 Linux 網(wǎng)絡(luò)棧交互。Linux 網(wǎng)絡(luò)棧使用主要的數(shù)據(jù)結(jié)構(gòu)是 sk_buff 結(jié)構(gòu)(定義在 include/linux/skbuff.h 中,該文件包括關(guān)于附加在它上的一個內(nèi)存塊的控制信息)。sk_buffs 為所有網(wǎng)絡(luò)層提供有效的緩沖器處理和流控制機制。網(wǎng)絡(luò)設(shè)備驅(qū)動程序執(zhí)行一個 dev_alloc_skb 和一個 skb_put,以用 IP 數(shù)據(jù)填充一個 sk_buff,然后通過調(diào)用 netif_rx 將這個sk_buff 傳送到 TCP/IP 棧。orinoco 中斷服務(wù)例程用從 WLAN 接收的數(shù)據(jù)填充 sk_buffs,并經(jīng)由 netif_rx 將它傳送到 IP 棧。

Linux TCP/IP 應(yīng)用程序可以在前面談到的內(nèi)核模塊為 Intersil WLAN CF 卡提供的網(wǎng)絡(luò)接口上不加更改地運行。

【編輯推薦】

  1. Linux無線網(wǎng)絡(luò)技術(shù):Bluetooth
  2. Linux無線網(wǎng)絡(luò)技術(shù):GPRS、GSM
  3. Linux下NFS服務(wù)server
責(zé)任編輯:趙寧寧 來源: 賽迪網(wǎng)
相關(guān)推薦

2009-10-19 10:26:04

Linux無線網(wǎng)絡(luò)技術(shù)Bluetooth

2009-10-19 10:27:48

Linux無線網(wǎng)絡(luò)技術(shù)GPRS

2010-03-22 15:46:46

WLAN無線網(wǎng)絡(luò)技術(shù)

2010-09-13 11:02:13

WLAN無線網(wǎng)絡(luò)覆蓋

2010-09-28 08:50:05

無線網(wǎng)絡(luò)

2009-07-28 10:52:45

醫(yī)院無線網(wǎng)絡(luò)

2009-04-22 09:47:00

無線網(wǎng)絡(luò)無線網(wǎng)絡(luò)技術(shù)

2018-11-16 11:20:20

WIFI無線網(wǎng)絡(luò)技術(shù)

2010-09-10 09:08:07

無線網(wǎng)絡(luò)技術(shù)對比

2010-08-27 10:10:25

WLAN無線網(wǎng)絡(luò)覆蓋

2010-08-30 09:13:02

無線網(wǎng)絡(luò)

2010-09-28 09:58:16

802.11n

2010-09-10 10:48:42

2010-10-12 12:00:08

WLAN無線網(wǎng)絡(luò)

2013-05-02 13:34:47

WLANZigbeeM2M

2009-11-05 11:09:33

無線網(wǎng)狀網(wǎng)

2010-09-16 13:36:52

無線網(wǎng)絡(luò)技術(shù)

2010-04-07 10:46:11

無線網(wǎng)絡(luò)技術(shù)應(yīng)用

2010-03-11 12:14:19

CDMA無線網(wǎng)絡(luò)

2009-11-05 14:45:45

無線網(wǎng)絡(luò)技術(shù)
點贊
收藏

51CTO技術(shù)棧公眾號