Linux做WAP網關

發布時間:2007年06月04日      浏覽次數:3188 次
1、WAP簡介
  1.1、WAP的産生(shēng)和發展
  1997年6月,Nokia、Ericsson、Motorola和Unwired Planet共同組成了WAP論壇,該論壇旨在将Internet的海量信息及先進的業務引入到無線數字話(huà)機及終端中(zhōng),目标是産生(shēng)一(yī)個适用于不同無線網絡技術的全球無線協議規範,以供工(gōng)業标準組織采納。
  WAP論壇設立以後得到了業界的積極響應,各路人士紛紛彙聚旗下(xià)。1998年初,WAP規範正式公布。WAP的出現,使電信産業中(zhōng)發展最爲迅速的移動通信完全加入到電腦網絡世界中(zhōng)來,同時也爲将來的電信産業的發展指明了方向,它使移動Internet有了一(yī)個通行的标準,昭示着移動Internet标準的成熟。
  WAP由一(yī)系列協議組成,用來标準化無線通信設備,例如蜂窩電話(huà),無線電收發機,也可用于Internet訪問,包括e-mail,WWW,Newsgroups和IRC(Internet Relay Chat)等。簡單說來,WAP的目标就是将Internet的海量信息及先進的業務引入到移動電話(huà)等無線終端之中(zhōng)。它針對無線網絡的特點如低帶寬、高延遲進行優化設計,把Internet的一(yī)系列協議規範引入到無線網絡中(zhōng)。WAP隻要求移動電話(huà)和WAP代理服務器的支持,而不要求現有的移動通信網絡協議做任何的改動,因而适用于CDMA、GSM、IMT-2000等不同的移動通信系統。此外(wài),WAP盡可能少地占用手持設備資(zī)源(如ROM、RAM、CPU等),它通過加強網絡的功能來彌補手持設備本身的缺陷。就象Web對Internet 的作用一(yī)樣,WAP在應用層上隐藏了GSM的複雜(zá)性,留給用戶友好親切的界面。
  符合WAP标準的電話(huà)将配備一(yī)浏覽器,可與标準Web浏覽器相媲美。它采用一(yī)種類似卡片組的工(gōng)作方式,用戶可通過卡片組浏覽運營商(shāng)定置的Web業務。終端用戶首先選擇一(yī)項業務,該業務會将卡片組下(xià)載到移動電話(huà)。然後,用戶可以在卡片之間往返浏覽,進行選擇和輸入信息,接着執行所選擇的工(gōng)作。浏覽到的信息可高速緩存。供以後使用,卡片組也可高速緩存并做成書(shū)簽以供快速檢索。電子名片、日曆事件和其它類型内容的格式都将得到支持。
  Internet、移動通訊是目前最具活力、發展最爲迅速的行業,WAP(無線應用協議 Wireless Application Protocol)将移動通訊和Internet有機地結合在一(yī)起,是移動世界與Internet之間的橋梁。現在,移動用戶可以随時随地接入Internet,能夠從他們的移動終端上快速安全地獲取互聯網及企業内部網的信息及其他通信服務。WAP具有廣闊的市場前景,必将獲得迅猛的發展,并将會在極大(dà)程度上改變我(wǒ)(wǒ)們的生(shēng)活。
  WAP最吸引人的地方在于,無論何時/何地/何人,都可以最快的速度獲取信息,并且WAP終端比較方便攜帶和使用。WAP最适用的地方是電子商(shāng)務,現在已經在證券、銀行等方面得到了應用,如手機炒股、手機銀行等。
1.2、WAP的體(tǐ)系結構
  WAP工(gōng)作模型類似WEB的工(gōng)作模型。移動終端發出請求并且攜帶有各種參數(URL等),網關通過解析,發出相應的請求到Web服務器上,服務器通過檢索參數生(shēng)成相應的結果,返回給代理網關,網關進行解碼、編碼,把結果送回給移動終端,一(yī)個會話(huà)過程就結束了。WAP定義了一(yī)整套标準部件來實現客戶端和服務器之間的通信,包括有标準的URL,标準的内容格式,标準的傳輸方式。 WAP和WWW使用一(yī)樣URL來标志(zhì)服務器上面的内容,因爲考慮到和現在的Internet兼容,這個标準沒有任何的改變。和WWW不一(yī)樣的是内容表達格式和文件傳輸方式的标準,針對移動終端的特點進行了優化。WAP使用到了網關的技術來連結無線網絡和Internet數據網絡,網關要能夠實現WAP協議堆棧到WWW協議堆棧的轉化,還能實現 内容格式的轉化,例如 wml語言到html。這種結構保證移動用戶可以使用廣泛的Internet資(zī)源,而網絡應用程序的開(kāi)發者不需要考慮網絡和終端的類型,具有最大(dà)的靈活性和伸縮性!
  在無線網絡中(zhōng),WAP手機與兩個服務器(WAP Proxy Server 和 WTA Server)通訊。 WAP proxy(即WAP網關)把WAP手機發來的WAP協議請求轉換成WWW協議請求,然後把WWW請求提交給Web Server。同時WAP Proxy也把Web Server應答的信息,編碼成WAP手機可以識别的緊湊的二進制格式,然後再傳遞給WAP手機。
  這個模型在很大(dà)程度上利用了現有的WWW 編程模型,應用開(kāi)發人員(yuán)可以從這種模型中(zhōng)得到許多好處,包括可以繼續使用自己熟悉的編程模型、能夠利用現有的工(gōng)具(如Web服務器、XML工(gōng)具)等。 另外(wài),WAP 編程模型還針對無線環境的通信特點,對原有的WWW編程模型進行了優化和擴展。
  WAP接入涉及了無線通信網絡和Internet/Intranet,同時采用了WAP協議以及TCP/IP協議,使得WAP網關成爲WAP接入的關鍵點。按照WAP網關的設置不同,可以把構造WAP接入平台的解決方案大(dà)緻分(fēn)成兩類:一(yī)類是接入單位直接利用電信部門的公用WAP網關(如中(zhōng)國移動提供的172等);另一(yī)類是接入單位自行架設專業WAP網關。是采用電信部門的公用WAP網關還是架設專業網關主要是考慮接入對時效性和安全性的要求,如要求不太高,可使用公用WAP網關,反之,則要架設專用網關。
  各大(dà)手機廠商(shāng)都有自己的網關産品,在國内電信部門使用較多是Nokia、Motorola和Phone.com的網關,它們的功能比較完善,技術支持力量雄厚,但價格極高,對于普通的企業來說是無法承受的。于是一(yī)些WAP的愛好者們開(kāi)始在LINUX上開(kāi)發WAP網關,做的比較好的是Kannel和3ui的網關。其中(zhōng)Kannel網關是第一(yī)個獲得WAP論壇WAP1.1兼容性認證的開(kāi)放(fàng)源代碼的網關。本文主要介紹Kannel的WAP網關。
  2、Kannel網關
  Kannel網關運行與Linux平台下(xià),開(kāi)放(fàng)源代碼,完全支持WAP1.1協議規範,采用了分(fēn)布式和多線程技術,網關處理速度快、可靠、易維護和易擴展。實現了WAP标準協議棧;實現WML和 WML Script内容的編碼與解碼;支持WBMP,實現圖形顯示;支持安全連接、非安全連接方式;支持持久連接、臨時連接方式。能在多台主機之間進行負載分(fēn)擔,容錯性高。在普通的PC機上能支持數百個并發用戶。
 2.1、安裝和配置
  可從kannel網站下(xià)載源代碼,最新的穩定版本是1.0.3,開(kāi)發版本是1.1.3,以1.0.3版本爲例,将gateway-1.0.3.tar.gz下(xià)載到Linux機器上,kannel網關需要安裝xml庫,可以到xmlsoft網站下(xià)載libxml2-2.2.8.tar.gz,假設目錄爲/home/wap,先安裝libxml庫
  cd /home/wap
  tar zxvf libxml2-2.2.8.tar.gz
  cd libxml2-2.2.8
  ./configure
  make
  make install (這一(yī)步需要root權限)
  然後安裝網關
  cd /home/wap
  tar zxvf gateway-1.0.3.tar.gz
  cd gateway-1.0.3
  ./configure
  make
  doc/arch目錄下(xià)的技術文檔是fig格式,需要fig2dev程序,如果沒有此程序,編譯會報錯,不過沒有關系,我(wǒ)(wǒ)們需要的二進制可執行程序已經生(shēng)成。如果嫌每次編譯都報錯麻煩,可以修改Makefile,将此部分(fēn)去(qù)掉。或者去(qù)下(xià)載fig2dev(我(wǒ)(wǒ)沒有去(qù)找它在哪兒)。
  現在到gw目錄下(xià)看一(yī)看,我(wǒ)(wǒ)們要的程序bearerbox和wapbox程序已生(shēng)成,啓動bearerbox(./bearerbox &),啊,程序報錯,無法讀配置文件kannel.conf,怎麽回事,gw目錄下(xià)沒有這個文件啊,沒關系,把wapkannel.conf文件拷貝爲kannel.conf就可以了(cp wapkannel.conf kannel.conf)。
  配置文件kannel.conf的格式如下(xià),具體(tǐ)的含義看看Kannel自帶的文檔就明白(bái)了。
  group = core
  admin-port = 13000
  wapbox-port = 13002
  admin-password = bar
  wdp-interface-name = "*"
  #log-file = "/tmp/kannel.log"
  #log-level = 0
  box-deny-ip = "*.*.*.*"
  box-allow-ip = "127.0.0.1"
  #admin-deny-ip = ""
  #admin-allow-ip = ""
  #access-log = "access.log"
  group = wapbox
  bearerbox-host = localhost
  #log-file = "/tmp/wapbox.log"
  #log-level = 0
  syslog-level = none
  啓動網關後(./bearerbox & ; ./wapbox &),就可以通過它訪問wml頁面了,趕快去(qù)下(xià)載模拟器吧,可以用Nokia Toolkit,Erission WapIDE,UP.SDK,Motorola等模拟器進行測試。如果你有WAP手機,裝網關的Linux機器連到了Interner上,就可以撥172了,把手機裏的網關設置爲你的機器的IP地址,就可以手機上網了。在手機上需要設置的主要是
  網關地址:xxx.xxx.xxx.xxx (你網關機器的IP地址)
  端口号: 9201(一(yī)般設置) 9200(無連接方式)
  連接類型:普通電話(huà)
  波特率: 9600
  用戶名: wap
  口令: wap
  電話(huà)号碼:172
  主頁: http://www.xxx.com (你想去(qù)的URL)
  2.2、程序說明
  網關把處理負載分(fēn)擔在多台主機上,分(fēn)爲兩個模塊。網關系統由一(yī)個bearerbox和一(yī)到多個wapbox組成。bearerbox和wapbox可以運行在不同的機器上。
  2.2.1. bearer box
  Bearerbox模塊連接到CSD router,提供了對Wapbox的接口,實現了WAP協議棧的WDP層。
Bearerbox記錄當前運行的wapbox,從CSD router接收UDP包,把從同一(yī)個終端接收到的包路由到同一(yī)個wapbox,收到wapbox的處理結果後發到相應的用戶終端。
2.2.2. wapbox
  wapbox模塊實現了WAP協議棧的上層部分(fēn),屬于同一(yī)個事務的會話(huà)和事務由同一(yī)個wapbox處理
。Wapbox實現了WTLS、WTP和WSP層。Wapbox從電話(huà)接收到類似HTTP的請求,把實際的HTTP請求發到内容服務器,壓縮響應數據,發回到終端。
  bearerbox和wapbox之間通過TCP建立連接。 bearerbox充當server等待wapbox進行連接。這樣,bearerbox就不需要保留靜态的wapbox列表。它以一(yī)個空的列表開(kāi)始,等待wapbox進行注冊,這種設計使得動态的加入新的wapbox變得非常方便:隻須安裝一(yī)個,配置好,連接到相應的bearerbox。
  如果bearerbox和wapbox之間的TCP連接斷開(kāi)了,bearerbox會得到通知(zhī)把它從自己的clients列表中(zhōng)去(qù)掉。當崩潰的wapbox從bearerbox的clients列表中(zhōng)去(qù)掉之後,從應該路由到此wapbox的終端收到的數據包被看作從一(yī)個新的終端收到。這意味着wapbox必須能處理在一(yī)個會話(huà)當中(zhōng)的包。
  也可能出現這樣的情況,wapbox還存活着,但已經不能處理任何消息了。爲了檢測這種情況,wapbox要定期向bearerbox發送心跳(heartbeat)包,如果bearerbox未能收到heartbeat消息,它認爲存在問題的wapbox崩潰了,但是未能斷開(kāi)TCP連接。bearerbox會斷開(kāi)連接,把它從clients列表種去(qù)掉。當wapbox恢複後,會重新打開(kāi)連接。Heartbeat消息還包含wapbox的負載,bearerbox據此進行負載平衡。
  2.3、性能測試
  我(wǒ)(wǒ)在以下(xià)的環境下(xià)進行了測試,測試共使用三台PC機,分(fēn)别爲CWAP網關機器,Web服務器,模拟客戶機,通過10M以太網相連,機器配置如下(xià):
  WAP網關:
  操作系統: Linux RedHat7.0
  CPU: Intel Pentium III
  主頻(pín): 500MHz
  内存: 128M
  Web服務器:
  操作系統: Windows 2000
  CPU: Intel Celeron
  主頻(pín): 500MHz
  内存: 64M
  模拟客戶機:
  操作系統: Linux RedHat7.0
  CPU: Intel Celeron
  主頻(pín): 500MHz
  内存: 128M
  WAP網關機器上啓動網關程序(bearerbox和wapbox),模拟客戶機上用測試程序fakewap(在test目錄下(xià))向網關請求Web服務器上的wml頁面,統計響應時間,每秒處理請求數量等數據。
  fakewap程序采用了多線程技術,可以模拟多用戶量的并發情況,缺省設置下(xià)使用9201端口(WSP/WTP/WDP),使用方法爲fakewap [options] url ...,其中(zhōng)幾個主要的選項如下(xià):
  -g hostname 網關的機器名或IP地址 (default: localhost)
  -p port 網關端口(default: 9201)
  -m max 總共發送請求數 (default: 1)
  -i interval 發送2個請求之間的間隔 (default: 1.0 seconds)
  -c threads 并發用戶數量 (default: 1)
  測試結果爲:在并發用戶數爲100的情況下(xià),網關的響應時間在1秒以内,平均每秒處理的請求數量爲40個左右,這對于絕大(dà)部分(fēn)的企業應用來說是足夠了。
文章來源:http://www.wapease.com/2004/9-5/8421.html
免責聲明:本站相關技術文章信息部分(fēn)來自網絡,目的主要是傳播更多信息,如果您認爲本站的某些信息侵犯了您的版權,請與我(wǒ)(wǒ)們聯系,我(wǒ)(wǒ)們會即時妥善的處理,謝謝合作!