歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> 關於Unix

Linux無線網絡技術概述:GPRS、GSM

GSM 上的 Linux GPRS 和數據 GPRS 是一個用於通過 GSM 傳輸數據的數據分組服務,是一種卓越的數字蜂窩標准。盡管 GSM 上的數據是線路交換的並且不管怎樣都占用一個通道,但是 GPRS 上的數據是一直連接的(always-on)、分組交換(packet-switched)的數據流
  GSM 上的 Linux GPRS 和數據
  GPRS 是一個用於通過 GSM 傳輸數據的數據分組服務,是一種卓越的數字蜂窩標准。盡管 GSM 上的數據是線路交換的並且不管怎樣都占用一個通道,但是 GPRS 上的數據是一直連接的(always-on)、分組交換(packet-switched)的數據流,用戶根據使用付費。GSM 的傳輸速度一般是 9.6 kbps,而 GPRS 能夠運行的速度為 56 kbps 到 170 kbps。
  
  GPRS 和 GSM 芯片通常有一個到系統的 UART 接口。對於內置 GSM/GPRS 支持的母板(例如,一個帶有連接到 UART 通道的 Siemen MC-45 模塊的母板),傳統的串行驅動程序就能驅動這個鏈接。考慮 PCMCIA/CF 的形成因素(例如一張可選 GPRS 卡),serial_cs(是用於訪問 PCMCIA 串行設備的普通卡服務驅動程序)能夠允許其他操作系統把此卡當作一個串行設備。第一個未使用的串行設備(/dev/ttySx)被分配給此卡,然後此卡就可以被當成串行設備訪問。serial_cs 也可以通過全球定位系統 (GPS) PCMCIA 和 CF 卡模擬串行端口。針對 USB GPRS 調制解調器而言,USB-to-serial 轉換器一般 USB 端口轉換為虛擬串行端口,因此系統其他部分就會將它看作串行設備。
  
  GPRS 網絡使用 GGSN(GPRS 網關支持節點) 連接到一個外部網絡(例如 Internet)。GPRS 設備類似於擁有擴展 AT 命令集的調制解調器,在進入數據模式之前必須使用 AT 命令定義一個上下文。上下文字符串看起來類似於清單 3 中給出的示例。
  
  清單 3. 上下文字符串
  
  'AT+CGDCONT=1,"IP","internet.voicestream.com","0.0.0.0",0,0'
  
  在這個示例中,1 代表上下文編號,IP 是數據分組類型,internet.voicestream.com 是接入點名稱(APN) 字符串,0.0.0.0 意味著服務提供者選擇 IP 地址,其他參數與數據和報頭壓縮有關。APN 字符串取決於服務提供者。一般不需要用戶名和口令。
  
  PPP 允許網絡協議(比如 TCP/IP)在串行鏈路上運行。在無線網絡的上下文中,PPP 可以使 TCP/IP 運行於 GPRS 上,數據通過 GSM、Bluetooth RFCOMM 以及 IrDa COMM 進行傳輸。清單 4 給出了一種調用 PPP 後台進程 pppd 的公共語法。
  
  清單 4. 調用 PPP 後台進程 pppd 的公共語法
  
  pppd ttySx call connection-script
  
  在這個示例中,ttySx 是物理或虛擬的串行設備(PPP 運行其上),connection-script 是 /etc/ppp/peers/ 目錄中的一個文件,這個目錄包含在 pppd 和服務提供者之間交換的用於建立鏈接的 AT 命令序列。建立鏈接並完成身份驗證以後,PPP 將啟動網絡控制協議(Network Control Protocol,NCP)。IPCP (Internet Protocol Control Protocol,Internet 協議控制協議) 是用於運行 IP 的 NCP。一旦 IPCP 成功通過 IP 地址,PPP 就開始與 TCP/IP 棧交互。
  
  清單 5 給出了用於連接到 GPRS 服務提供者的 PPP 鏈接腳本示例,而清單 6 給出的是用於到 GSM 服務提供者的數據連接的連接腳本示例。
  
  清單 5. 針對 GPRS 的 pppd 鏈接腳本示例(/etc/ppp/peer/gprs-script)
  
  115200
  connect "/usr/sbin/chat -s -v "" AT+CGDCONT=1,"IP",
  "internet2.voicestream.com","0.0.0.0",0,0 OK AT+CGDATA="PPP",1"
  crtscts
  noipdefault
  modem
  usepeerdns
  defaultroute
  connect-delay 5000
  
  從操作系統的角度出發,GSM 上的數據類似於通過撥號調試解調器連接收發的數據。互聯網服務提供商(ISP)的電話號碼是使用 GSM 撥入的,並且會建立一個撥號連接。利用用戶名和口令進行身份驗證。
  
  一旦 PPP 建立了與服務提供者的 IP 連接,TCP 應用程序例如 Web 浏覽器就可以不加更改地在 GSM/GPRS 設備上運行。
  
  gsmlib 項目為通過 GSM 發送語音和 SMS(Short Messaging Service,短信服務)提供了實用程序(請參閱 參考資料 了解更多關於 gsmlib 的信息)。它包括用於存取 Subscriber Identity Module (SIM)卡中的電話簿、收發 SMS 消息等功能的實用程序。
  
  清單 6. 用於通過 GSM 傳輸數據的 pppd 連接腳本示例(/etc/ppp/peer/gsm-script)
  
  115200
  connect '/usr/sbin/chat -s -v ABORT "NO CARRIER" ABORT "NO DIALTONE" ABORT "BUSY" "" AT OK
  ATDT CONNECT'
  crtscts
  noipdefault
  modem
  user "linux"
  usepeerdns
  defaultroute
  connect-delay 5000
  
  Linux Infrared Data
  
  Infrared Data (IrDa) 是一種用紅外線無線傳輸數據的規范。主要用於連接膝上電腦或者將錄像機或照相機這樣的設備連接到計算機系統。
  
  IrDa 的速度從 Serial Infrared (SIR) 的 115 kbps 到 Very Fast Infrared (VFIR) 的 16 Mbps。大多數處於 SIR 模式的 IrDa 芯片是 UART 16650 兼容的(16650 是一種公共 PC UART),因此傳統 Linux 串口驅動程序可以充當鏈路級別的驅動程序。IrDa 行的規范實現 —— IrTTY (drivers/net/irda/irtty.c),使串行驅動程序驅動 SIR。IrPORT 驅動程序(drivers/net/irda/irport.c)代替了 IrTTY 和串行驅動程序,並提供更好的設備控制。與串行驅動器不兼容的 IrDa 芯片有自己的設備驅動程序。例如,NSC PC87108 芯片組就使用自己的驅動程序(nsc-irclearcase/" target="_blank" >cc.c)。與上面討論到的用於 USB Bluetooth 設備的 hci-usb 驅動程序類似,irda-usb.c 設備驅動程序支持 USB IrDa FIR 軟件狗。
  
  IrLAP 是負責 IrDa 設備發現、重傳以及流控制的鏈路存取協議層。IrLMP 鏈路管理層和 Tiny 傳輸協議層(TinyTP)駐留於 IrLAP 之上。而它們之上是 IrCOMM 和 IrLAN 層。IrCOMM(在 net/irda/ircomm/ 中實現)提供串行模擬,使運行於串行端口(比如終端仿真器)上的應用程序不加更改地在 IrDa 棧上運行。IrLAN(在 net/irda/irlan/ 中實現)提供使 TCP/IP 直接運行於 IrDa 棧之上的虛擬網絡接口。IrLAN 代碼使用 register_netdev 將太網設備注冊到 Linux 網絡層,使用 netif_rx 向 Linux IP 棧發送數據(與對 WLAN 驅動程序和 Bluetooth BNEP的解釋類似)。IrCOMM 與 Bluetooth RFCOMM 相似,而 IrLAN 則類似於 Bluetooth BNEP。
  
  IrOBEX 是建立在 TinyTP 之上的一個簡單協議,它允許傳輸二進制數據。IrOBEX 的擴展定義了不同數據對象的傳輸。
  
  為了在 Linux 上應用 IrDa 協議,必須安裝 IrDa 實用程序(如 irattach),它是作為 Linux IrDa 項目的一部分開發的。
  
  性能問題
  網絡性能取決於特定載體網絡的特征。例如,GPRS 的帶寬取決於使用的代碼模式,而 Bluetooth 的性能受 L2CAP 層的網段的影響。對於 WLAN 工作站與接入點之間的通信,幀確認會降低帶寬, 使用同一接入點的其他工作站的數量也會帶來同樣影響。
  
  無線網絡的特征(比如低且波動的帶寬和高延遲)會歪曲 TCP 度量和傳輸策略。盡管無線網絡中的大多數損耗來自信號衰退、干擾以及連接中斷等因素,但是 TCP 假定這些損耗與擁塞有關, 因此它摒棄了降低網絡流量的算法。有多種項目用來調整 TCP 和 Web 浏覽器的行為以適應無線網絡。
  
  結束語
  在本文中,您浏覽了是針對包括 WLAN、Bluetooth、GPRS、GSM 和 IrDA 在內的流行的無線技術的 Linux 設備驅動程序和網絡協議層。還通過跟蹤相應的代碼路徑和討論相關的用戶空間工具,了解到不同的無線設備如何在 Linux 中工作。
  
  現在,有了對 Linux 上提供的對各種無線技術、網絡技術以及總線技術的核心支持的理解,您可以修補多種具有不同形成因素的無線設備,開發啟用不被支持的設備所需的 Linux 內核代碼。

Copyright © Linux教程網 All Rights Reserved