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