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