1、WAP簡介
1.1、WAP的產生和發展
1997年6月,Nokia、Ericsson、Motorola和Unwired Planet共同組成了WAP論壇,該論壇旨在將Internet的海量信息及先進的業務引入到無線數字話機及終端中,目標是產生一個適用於不同無線網絡技術的全球無線協議規範,以供工業標準組織採納。
WAP論壇設立以後得到了業界的積極響應,各路人士紛紛匯聚旗下。1998年初,WAP規範正式公佈。WAP的出現,使電信產業中發展最為迅速的移動通信完全加入到電腦網絡世界中來,同時也為將來的電信產業的發展指明了方向,它使移動Internet有了一個通行的標準,昭示著移動Internet標準的成熟。
WAP由一系列協議組成,用來標準化無線通信設備,例如蜂窩電話,無線電收發機,也可用於Internet訪問,包括e-mail,WWW,Newsgroups和IRC(Internet Relay Chat)等。簡單說來,WAP的目標就是將Internet的海量信息及先進的業務引入到移動電話等無線終端之中。它針對無線網絡的特點如低帶寬、高延遲進行優化設計,把Internet的一系列協議規範引入到無線網絡中。WAP只要求移動電話和WAP代理服務器的支持,而不要求現有的移動通信網絡協議做任何的改動,因而適用於CDMA、GSM、IMT-2000等不同的移動通信系統。此外,WAP盡可能少地佔用手持設備資源(如ROM、RAM、CPU等),它通過加強網絡的功能來彌補手持設備本身的缺陷。就像Web對Internet 的作用一樣,WAP在應用層上隱藏了GSM的複雜性,留給用戶友好親切的界面。
符合WAP標準的電話將配備一瀏覽器,可與標準Web瀏覽器相媲美。它採用一種類似卡片組的工作方式,用戶可通過卡片組瀏覽運營商定置的Web業務。終端用戶首先選擇一項業務,該業務會將卡片組下載到移動電話。然後,用戶可以在卡片之間往返瀏覽,進行選擇和輸入信息,接著執行所選擇的工作。瀏覽到的信息可高速緩存。供以後使用,卡片組也可高速緩存並做成書籤以供快速檢索。電子名片、日曆事件和其它類型內容的格式都將得到支持。
Internet、移動通訊是目前最具活力、發展最為迅速的行業,WAP(無線應用協議 Wireless Application Protocol)將移動通訊和Internet有機地結合在一起,是移動世界與Internet之間的橋樑。現在,移動用戶可以隨時隨地接入Internet,能夠從他們的移動終端上快速安全地獲取互聯網及企業內部網的信息及其他通信服務。WAP具有廣闊的市場前景,必將獲得迅猛的發展,並將會在極大程度上改變我們的生活。
WAP最吸引人的地方在於,無論何時/何地/何人,都可以最快的速度獲取信息,並且WAP終端比較方便攜帶和使用。WAP最適用的地方是電子商務,現在已經在證券、銀行等方面得到了應用,如手機炒股、手機銀行等。
1.2、WAP的體系結構
WAP工作模型類似WEB的工作模型。移動終端發出請求並且攜帶有各種參數(URL等),網關通過解析,發出相應的請求到Web服務器上,服務器通過檢索參數生成相應的結果,返回給代理網關,網關進行解碼、編碼,把結果送回給移動終端,一個會話過程就結束了。WAP定義了一整套標準部件來實現客戶端和服務器之間的通信,包括有標準的URL,標準的內容格式,標準的傳輸方式。 WAP和WWW使用一樣URL來標誌服務器上面的內容,因為考慮到和現在的Internet兼容,這個標準沒有任何的改變。和WWW不一樣的是內容表達格式和文件傳輸方式的標準,針對移動終端的特點進行了優化。WAP使用到了網關的技術來連結無線網絡和Internet數據網絡,網關要能夠實現WAP協議堆棧到WWW協議堆棧的轉化,還能實現 內容格式的轉化,例如 wml語言到html。這種結構保證移動用戶可以使用廣泛的Internet資源,而網絡應用程序的開發者不需要考慮網絡和終端的類型,具有最大的靈活性和伸縮性!
在無線網絡中,WAP手機與兩個服務器(WAP Proxy Server 和 WTA Server)通訊。 WAP proxy(即WAP網關)把WAP手機發來的WAP協議請求轉換成WWW協議請求,然後把WWW請求提交給Web Server。同時WAP Proxy也把Web Server應答的信息,編碼成WAP手機可以識別的緊湊的二進制格式,然後再傳遞給WAP手機。
這個模型在很大程度上利用了現有的WWW 編程模型,應用開發人員可以從這種模型中得到許多好處,包括可以繼續使用自己熟悉的編程模型、能夠利用現有的工具(如Web服務器、XML工具)等。 另外,WAP 編程模型還針對無線環境的通信特點,對原有的WWW編程模型進行了優化和擴展。
WAP接入涉及了無線通信網絡和Internet/Intranet,同時採用了WAP協議以及TCP/IP協議,使得WAP網關成為WAP接入的關鍵點。按照WAP網關的設置不同,可以把構造WAP接入平台的解決方案大致分成兩類:一類是接入單位直接利用電信部門的公用WAP網關(如中國移動提供的172等);另一類是接入單位自行架設專業WAP網關。是採用電信部門的公用WAP網關還是架設專業網關主要是考慮接入對時效性和安全性的要求,如要求不太高,可使用公用WAP網關,反之,則要架設專用網關。
各大手機廠商都有自己的網關產品,在國內電信部門使用較多是Nokia、Motorola和Phone.com的網關,它們的功能比較完善,技術支持力量雄厚,但價格極高,對於普通的企業來說是無法承受的。於是一些WAP的愛好者們開始在LINUX上開發WAP網關,做的比較好的是Kannel和3ui的網關。其中Kannel網關是第一個獲得WAP論壇WAP1.1兼容性認證的開放源代碼的網關。本文主要介紹Kannel的WAP網關。
2、Kannel網關
Kannel網關運行與Linux平台下,開放源代碼,完全支持WAP1.1協議規範,採用了分佈式和多線程技術,網關處理速度快、可靠、易維護和易擴展。實現了WAP標準協議棧;實現WML和 WML Script內容的編碼與解碼;支持WBMP,實現圖形顯示;支持安全連接、非安全連接方式;支持持久連接、臨時連接方式。能在多台主機之間進行負載分擔,容錯性高。在普通的PC機上能支持數百個並發用戶。
2.1、安裝和配置
可從kannel網站下載源代碼,最新的穩定版本是1.0.3,開發版本是1.1.3,以1.0.3版本為例,將gateway-1.0.3.tar.gz下載到Linux機器上,kannel網關需要安裝xml庫,可以到xmlsoft網站下載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 (這一步需要root權限)
然後安裝網關
cd /home/wap
tar zxvf gateway-1.0.3.tar.gz
cd gateway-1.0.3
./configure
make
doc/arch目錄下的技術文檔是fig格式,需要fig2dev程序,如果沒有此程序,編譯會報錯,不過沒有關係,我們需要的二進制可執行程序已經生成。如果嫌每次編譯都報錯麻煩,可以修改Makefile,將此部分去掉。或者去下載fig2dev(我沒有去找它在哪兒)。
現在到gw目錄下看一看,我們要的程序bearerbox和wapbox程序已生成,啟動bearerbox(./bearerbox &),啊,程序報錯,無法讀配置文件kannel.conf,怎麼回事,gw目錄下沒有這個文件啊,沒關係,把wapkannel.conf文件拷貝為kannel.conf就可以了(cp wapkannel.conf kannel.conf)。
配置文件kannel.conf的格式如下,具體的含義看看Kannel自帶的文檔就明白了。
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頁面了,趕快去下載模擬器吧,可以用Nokia Toolkit,Erission WapIDE,UP.SDK,Motorola等模擬器進行測試。如果你有WAP手機,裝網關的Linux機器連到了Interner上,就可以撥172了,把手機裡的網關設置為你的機器的IP地址,就可以手機上網了。在手機上需要設置的主要是
網關地址:xxx.xxx.xxx.xxx (你網關機器的IP地址)
端口號: 9201(一般設置) 9200(無連接方式)
連接類型:普通電話
波特率: 9600
用戶名: wap
口令: wap
電話號碼:172
主頁:
http://www....com (你想去的URL)
2.2、程序說明
網關把處理負載分擔在多台主機上,分為兩個模塊。網關係統由一個bearerbox和一到多個wapbox組成。bearerbox和wapbox可以運行在不同的機器上。
2.2.1. bearer box
Bearerbox模塊連接到CSD router,提供了對Wapbox的接口,實現了WAP協議棧的WDP層。
Bearerbox記錄當前運行的wapbox,從CSD router接收UDP包,把從同一個終端接收到的包路由到同一個wapbox,收到wapbox的處理結果後發到相應的用戶終端。
2.2.2. wapbox
wapbox模塊實現了WAP協議棧的上層部分,屬於同一個事務的會話和事務由同一個wapbox處理。Wapbox實現了WTLS、WTP和WSP層。Wapbox從電話接收到類似HTTP的請求,把實際的HTTP請求發到內容服務器,壓縮響應數據,發回到終端。
bearerbox和wapbox之間通過TCP建立連接。 bearerbox充當server等待wapbox進行連接。這樣,bearerbox就不需要保留靜態的wapbox列表。它以一個空的列表開始,等待wapbox進行註冊,這種設計使得動態的加入新的wapbox變得非常方便:只須安裝一個,配置好,連接到相應的bearerbox。
如果bearerbox和wapbox之間的TCP連接斷開了,bearerbox會得到通知把它從自己的clients列表中去掉。當崩潰的wapbox從bearerbox的clients列表中去掉之後,從應該路由到此wapbox的終端收到的數據包被看作從一個新的終端收到。這意味著wapbox必須能處理在一個會話當中的包。
也可能出現這樣的情況,wapbox還存活著,但已經不能處理任何消息了。為了檢測這種情況,wapbox要定期向bearerbox發送心跳(heartbeat)包,如果bearerbox未能收到heartbeat消息,它認為存在問題的wapbox崩潰了,但是未能斷開TCP連接。bearerbox會斷開連接,把它從clients列表種去掉。當wapbox恢復後,會重新打開連接。Heartbeat消息還包含wapbox的負載,bearerbox據此進行負載平衡。
2.3、性能測試
我在以下的環境下進行了測試,測試共使用三台PC機,分別為CWAP網關機器,Web服務器,模擬客戶機,通過10M以太網相連,機器配置如下:
WAP網關:
操作系統: Linux RedHat7.0
CPU: Intel Pentium III
主頻: 500MHz
內存: 128M
Web服務器:
操作系統: Windows 2000
CPU: Intel Celeron
主頻: 500MHz
內存: 64M
模擬客戶機:
操作系統: Linux RedHat7.0
CPU: Intel Celeron
主頻: 500MHz
內存: 128M
WAP網關機器上啟動網關程序(bearerbox和wapbox),模擬客戶機上用測試程序fakewap(在test目錄下)向網關請求Web服務器上的wml頁面,統計響應時間,每秒處理請求數量等數據。
fakewap程序採用了多線程技術,可以模擬多用戶量的並發情況,缺省設置下使用9201端口(WSP/WTP/WDP),使用方法為fakewap [options] url ...,其中幾個主要的選項如下:
-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的情況下,網關的響應時間在1秒以內,平均每秒處理的請求數量為40個左右,這對於絕大部分的企業應用來說是足夠了。