基于GSM/GPRS的IP協(xié)議提供了與互聯(lián)網(wǎng)“永遠在線”的可能性,使之成為一種節(jié)約成本的選擇。為了開發(fā)基于IP協(xié)議的應用,系統(tǒng)設(shè)計師需要同時通曉無線網(wǎng)絡(luò)和TCP/IP協(xié)議。本文將詳細介紹支持TCP/IP協(xié)議和嵌入式應用的索尼愛立信模塊及其應用實例。
各種各樣的接入技術(shù)被用于無線網(wǎng)絡(luò)。在FDMA技術(shù)中,每個用戶被分配一個頻率,而TDMA技術(shù)則通過時間分隔用戶。在CDMA技術(shù)中,所有用戶在同一時間使用同一頻段發(fā)送信號,分隔用戶通過各自被分配到的唯一代碼來實現(xiàn)。在2G系統(tǒng)中,數(shù)據(jù)傳輸主要是通過電路交換,即一個被分配給用戶的傳輸信道,當一個用戶完成傳輸任務、讓出信道后,該傳輸信道才被提供給其他用戶使用。由于猝發(fā)性是數(shù)據(jù)業(yè)務的基本特征,當一個用戶不再有數(shù)據(jù)傳輸時,寬帶就處于荒廢狀態(tài)中。在分組交換系統(tǒng)中,所有用戶分享同一個信道,用戶則可以實現(xiàn)多路復用的功能。當一個用戶沒有需要傳輸?shù)臄?shù)據(jù)時,信道就會被其他用戶所使用。信息包的傳輸方法可通過媒體存取控制(MAC)協(xié)議被編排。
在互聯(lián)網(wǎng)上的信息包傳輸全部基于IP協(xié)議。無線網(wǎng)絡(luò)將與互聯(lián)網(wǎng)整合,信息包通過無線媒介無縫地傳輸至基于IP協(xié)議的網(wǎng)絡(luò),在傳輸前,為了能直接到達指定目的地,數(shù)據(jù)包必須根據(jù)TCP/IP協(xié)議封裝。在GPRS網(wǎng)絡(luò)中也采取了IP協(xié)議進行傳輸。
就服務的靈活性來說,幾乎所有的GSM模塊都可以連接到GPRS網(wǎng)絡(luò)。通常情況下,根據(jù)TCP/IP協(xié)議棧的信息打包功能并不是模塊特征的一部分。在通過模塊發(fā)送數(shù)據(jù)前,TCP/IP協(xié)議棧必須事先被開發(fā),然而,只有很少的模塊具有內(nèi)嵌式的TCP/IP協(xié)議棧,數(shù)據(jù)可以通過模塊直接被發(fā)送。如此一來,應用開發(fā)周期被縮短,其執(zhí)行能力也在很大程度上得到提高。
本文將簡要介紹TCP/IP協(xié)議及在GPRS網(wǎng)絡(luò)中實現(xiàn)TCP/IP的必要條件,詳細敘述支持TCP/IP協(xié)議和嵌入式應用的索尼愛立信模塊及其應用實例。
基于GPRS的TCP/IP協(xié)議
TCP/IP是為協(xié)同操作計算機、分享網(wǎng)絡(luò)資源的一套協(xié)議。該協(xié)議成員包括IP、TCP、UDP等。TCP確保數(shù)據(jù)的正確傳送,如果對于一個信息包來說,數(shù)據(jù)量太大,TCP則可將其分成若干組。IP被用來為信息包到達另一端尋找通道,每一個與網(wǎng)絡(luò)相連接的工作站都有一個唯一IP地址,該IP地址為一個32位數(shù),它通常被寫成四個十進制數(shù)字,每一個代表8位,例如,165.21.32.70是索尼愛立信網(wǎng)站服務器的一個IP地址。
TCP/IP是一個無連接協(xié)議,信息以分組方式進行傳輸,信息包的最大容量在初始化過程中得以商定。如果信息超出其最大容量,則將被分成若干組分別傳送。信息包未得以按順序傳送甚至丟失及再次轉(zhuǎn)發(fā)的可能性是存在的,因此,TCP必須將序號、信息來源和目的地通道數(shù),以及其他信息添加進數(shù)據(jù)包中,被稱為TCP包頭。接收器端將利用該信息來檢測數(shù)據(jù)包是否被正確地接收,從而加以整理。要直接將信息包發(fā)送至正確的工作站,僅有TCP包頭,是不充分的。一個IP報頭必須被加在TCP包頭之上,源地址和目的地址被包括在IP包頭里。發(fā)送信息包至目的地,計算機將首先核對其自身的路由列表,如果目的地在自己的網(wǎng)絡(luò)內(nèi),它將直接發(fā)送信息包。否則,它將發(fā)送信息包至網(wǎng)關(guān),每一個網(wǎng)關(guān)都有一個路由列表,信息包將通過幾個單獨的路由節(jié)點到達目的地址。
GPRS網(wǎng)提供網(wǎng)絡(luò)功能將IP信息包從移動用戶點傳送至外部網(wǎng)絡(luò)。GPRS可以為IP地址提供多重選擇,包括公共地址、專用地址以及客戶代理地址。指定IP地址選擇權(quán)的GPRS機制被稱為接入點域名(APN)。
圖1顯示了基于GSM/GPRS的TCP/IP系統(tǒng)結(jié)構(gòu)。因為IP地址的整體供應受到限制,一個GPRS網(wǎng)絡(luò)提供商通常使用專用的、可動態(tài)分配地址,然而,公共網(wǎng)址選擇可由專門的客戶提供,專用網(wǎng)址則無法越過公共網(wǎng)進行操作。為連接公共網(wǎng)絡(luò),專用網(wǎng)址被轉(zhuǎn)換成公共網(wǎng)址。該轉(zhuǎn)換通過一個節(jié)點發(fā)生,該節(jié)點是專用的網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)。多重專用地址可被映射成一個公共地址,對于基于IP協(xié)議的應用,和有線網(wǎng)絡(luò)一樣,在無線網(wǎng)絡(luò)中它們以相同的方式工作。當GPRS對話啟動時,大多數(shù)服務提供商也將監(jiān)控數(shù)據(jù)的傳輸流量,如果在特定的一段時間內(nèi)沒有數(shù)據(jù)傳輸,其連接將被斷開。
因為TCP/IP信息包是通過GSM網(wǎng)傳輸?shù)?,所以,必須考慮TCP/IP協(xié)議棧的一些參數(shù)配置?;贕PRS的TCP應當支持適當?shù)拇翱诔叽缫岳趦?yōu)化端對端連接的帶寬延遲,默認接收和發(fā)送緩沖器比例應當增加到容納足夠大的窗口,被銜接層支持的IP數(shù)據(jù)包的最大值是最大傳輸單元(MTU)。在高誤碼率的鏈路上,較小的MTU尺寸增加了成功傳輸?shù)臋C會,默認IP最大傳輸單元值為576字節(jié)。依據(jù)鏈路條件和ARQ的配置,它有可能增加MTU大小到一個較大的值,一個較大的MTU允許TCP更快地增加擁擠窗口。對于基于GPRS的TCP/IP協(xié)議的設(shè)計,設(shè)計師必須考慮到這些問題。
索尼愛立信機對機通信模塊
很多GSM模塊可以通過GSM/GPRS直接接入互聯(lián)網(wǎng),如果模塊上沒有TCP/IP協(xié)議棧,它則必須在其應用或外圍的微處理器中體現(xiàn)。索尼愛立信GR47/48模塊正是一種內(nèi)置TCP/IP協(xié)議棧的模塊之一。為開發(fā)基于GSM/GPRS網(wǎng)的TCP/IP應用,索尼愛立信提供了一套完整工具,其機對機通信商業(yè)解決方案(M2mpower Business Solution)是一個強有力的支持環(huán)境,專為促進提高成本效益比率的無線機對機應用的研發(fā)而設(shè)計。M2mpower使開發(fā)者通過運用特定的開發(fā)工具,能夠更容易地將無線應用直接嵌入兼容的索尼愛立信機對機產(chǎn)品中。M2mpower與可編程無線器件GR47/48一同被引入,其腳本語言是建立在工業(yè)級ANSI C語言的基礎(chǔ)之上,使開發(fā)者將現(xiàn)有的應用可以平滑地轉(zhuǎn)換到M2mpower。
圖2顯示了GR47實時操作系統(tǒng)的結(jié)構(gòu)。新款可編程無線模塊GR47/48提供了完整全面的功能。該模塊包括一個內(nèi)置TCP/TP協(xié)議棧,以便更有效地使用GPRS。它允許一個TCP/UDP傳輸機制以最小的前期配置和操作來被使用。其內(nèi)嵌控制器方便集成客戶的應用,減少外部控制器的需求,例如在報警、儀表抄送和自動售貨等應用上。GR47和GR48分別支持雙頻GSM寬帶900MHz/1800MHz和850MHz/1900MHz,它們都可通過SMS短消息服務、CSD、HSCSD或GPRS來發(fā)送或接收數(shù)據(jù),并可處理語音及傳真。其TCP/IP協(xié)議棧亦可通過AT命令或嵌入式應用進行訪問。
GR47/48模塊具有很多強大的特征。其TCP/UDP會話可以通過一個命令啟動;它還提供為統(tǒng)一資源定位器(URL)查詢IP地址的功能;最有用的特點之一是IP服務器偵聽功能,該功能允許通信模塊啟動與網(wǎng)絡(luò)的對話,例如,一個被分配的IP地址無需連接任何部分,只要等待該單元接收一個基于IP的連接引入請求,即可實現(xiàn)。
應用實例
在這一部分,我們將列出一些使用索尼愛立信GR47模塊的應用實例以供參考。第一個例子顯示了使用AT命令建立一個TCP會話的步驟,第二個則是嵌入式應用的范例。
1.使用AT命令接入GPRS網(wǎng)
GR47提供一系列AT命令來完成TCP/IP協(xié)議的功能,以簡化應用集成的流程。相關(guān)的命令可以讓應用設(shè)計者建立和取消UDP和TCP 協(xié)議,控制GPRS PDP context 的建立,傳送數(shù)據(jù),檢查IP的狀態(tài)信息等。
啟動TCP會話功能的步驟如下所示:
1. at+cgdcont=1,"IP","CMNET" \*write PDP context information, connect to China Mobile GPRS network*\
2. at*e2ipa=1,1 \*active IP session using stored PDP context*\
3. at*e2ipi=0 \*return currently assigned IP address*\
4. at*e2ipo=1,"166.111.8.238",23 \*initiate a TCP connection to the module*\
5. at*e2ipc \*close a currently opened IP connection*\
當模塊處于數(shù)據(jù)傳輸狀態(tài)中時,需要激活DTR來轉(zhuǎn)換回在線命令模式,ATO則被用于再次轉(zhuǎn)換回數(shù)據(jù)模式。
2.嵌入式應用接入GPRS網(wǎng)
以下描述示范怎樣激活PDP文本、開始TCP對話以及接收數(shù)據(jù)。這只是整個程序的一部分,不能單獨運行。
/* Reset the IP error flag by reading it */
gtf( APPS_IP_ERROR_TRIGGER );
Err = pdpa( 1, 1 );
prtf( "\n PDP activate result = %d\n", Err );
if ( Err == 0 )
{ Val = ipi( 0 );
prtf( " IP Address = %x", Val );}
else
{ prtf( "\n PDP activation failed!\n" );
return;}
Err = ipo( 1, &SckNum );
if( Err != 0 )
{ prtf( " \n TCP Socket open failed!\n" );}
else
{ prtf( "\n TCP Socket Opened!\n" );
Err = tcpc( SckNum, Port, Address );
if( (Err == 0) || (Err == TCP_CONNECTING) || (Err == TCP_CONNECTED) )
{ while( !Complete && (gtb( APPS_IP_ERROR_STATUSBYTE ) == 0) )
{ int len;
/* Receive some data */
if( gtf( APPS_IP_DATA_RECVD ) )
{ prtf( "\n IP DATA RECVD" );
len = RXTX_SIZE;
Err = tcpr( SckNum, RxTxBuf, &len);
if( Err != 0 )
{ prtf( "\n *** Error in TCP Receive (%d). ***\n\n", Err );}
else
{ if( gtb( APPS_IP_TCPSTATUS_BYTE ) == TCP_CONNECTING )
{ prtf( "\n Delaying while TCP Connect occurs...\n\n" );}
else
{ prtf( "\n Received %d bytes of data.\n\n", len ); }
}
}
}
}
Err = ipc( SckNum );
if ( Err != 0 )
{ prtf( "\n Socket close failed!\n" );} }
Err = pdpa( 0, 1 );
prtf( "\n PDP deactivate result = %d\n", Err );
本文小結(jié)
基于GSM/GPRS的TCP/IP協(xié)議為很多應用提供了更高級的解決方案,例如,車輛定位、遠程抄表和遠程銀行等。它具有無線通信的靈活性和移動性,TCP/IP協(xié)議提供對因特網(wǎng)“永遠在線”的通信方式,以及相對于SMS、CSD等更為經(jīng)濟的解決方案。索尼愛立信GSM模塊,支持TCP/IP協(xié)議及嵌入式應用,是很完善的無線通信解決方案之一。