|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
GPRS應用中TCP/IP/PPP基本概念:(CDMA的原理與此差不多) |
| 作者:lxj7871 欄目:通信技術 |
實際上GPRS DTU上實現(xiàn)的是協(xié)議棧是TCP/IP Over PPP。我們在使用時必須要有一些相應的概念。因此在下面我們就與SARO-3130P使用相關的一些事項作一些簡要的說明,如果您想詳細了解這些協(xié)議,請參見相關書籍: 1. 每一次SARO-3130P撥ATD*99***1#(或ATD*99***1#)之后其實都在采用PPP協(xié)議和移動的接入設備(一般是移動公司的一臺特殊的GGSN路由器)進行握手,當PPP協(xié)議握手成功后,SARO-3130P都會獲得一個動態(tài)IP地址。一般來說,每一次SARO-3130P下線后(掛斷連接或者直接斷電后)在重新進行撥號和PPP握手后取得的動態(tài)IP地址都是不一樣的。但是移動公司可以通過為客戶開通特定的APN和發(fā)行特殊的SIM卡,使得用這張SIM卡獲得的動態(tài)IP地址每一次都不變。也就是說可以做到SIM卡和IP地址綁定。 2. 我們在做測試時,應當注意到如下事實:在采用公網(wǎng)的Apn(“cmnet”)的條件下,如果我們用SARO-3130P主動向公網(wǎng)上的一個靜態(tài)公網(wǎng)IP地址發(fā)起TCP連接,只要這個公網(wǎng)上的機器確實有偵聽相應的端口,這樣是可以連上的;但是相反地,如果是由公網(wǎng)上的靜態(tài)IP向SARO-3130P動態(tài)獲得的IP地址主動發(fā)起的TCP連接將不會成功。這個現(xiàn)象的原因是:實際上SARO-3130P獲得的動態(tài)IP地址是移動的一個特殊的內(nèi)部網(wǎng)段上的地址,這個特殊內(nèi)部網(wǎng)段里的地址如果要和外部網(wǎng)(公網(wǎng))的地址進行TCP通信,必須通過一個類似于TCP代理(或者NAT)的設備進行通信的轉發(fā)。換句話說,這個動態(tài)地址對于網(wǎng)絡上的其他機器來說是不可訪問的。 3. 標準AT命令+CGDCONT的主要作用是指定Apn。Apn是Access Point NAME(訪問接入點)的縮寫,移動通過開通特殊的Apn為行業(yè)客戶提供Vpn(Virtual Private Net)服務。比如說,如果是要上公網(wǎng)(Internet),應當使用“cmnet”作為Apn。又如,某企業(yè)向移動公司申請了Vpn服務,移動公司為其開通了一個Apn為“hxsw.gd”,則我們就應當用這個Apn來設置Gprs模塊,格式如下: AT+CGDCONT=1,“IP”,“hxsw.gd” 4. 確定一條TCP連接有4個要素,這4個要素是雙方的IP地址和雙方的TCP端口號,這也就是SARO-3130P為什么將本地端口、目的端口和目的IP地址結合起來作為連接的ID號(SARO-3130P在PPP握手成功后獲得的動態(tài)地址只要不斷線重連就不會改變)的原因。 5. 使用TCP協(xié)議進行數(shù)據(jù)通信時,必須要經(jīng)過三個階段,第一個階段是連接建立階段,第二個階段是數(shù)據(jù)收發(fā)階段,第三個階段是連接釋放階段: 1).連接建立階段:連接的建立又有主動連接和被動連接之分,一般來說客戶機都是主動發(fā)起連接的,而服務器是被動接受連接的。 所謂的主動連接是指本方主動向遠端發(fā)起連接請求, 而被動連接指的是本方偵聽一個端口,等待遠端及其主動向自己發(fā)起一個連接請求并且進行回應并且最終握手建鏈成功。 在連接成功,切換到數(shù)據(jù)態(tài)后,我們可以通過OPEN命令幀控制SARO-3130P 進行主動連接。當然,連接時要指定對方的IP地址和端口號。至于被動連接,SARO-3130P也可以支持,目前的程序只支持偵聽一個端口。對方主動連接(SARO-3130P被動連接)成功后將建立一條新的通信連接,SARO-3130P將把這個被動連接成功的事件通知給上位機。 2).數(shù)據(jù)收發(fā)階段:當一條連接建立之后,我們就可以在這條連接上進行數(shù)據(jù)收發(fā)了。 我們可以使用SEND命令幀控制SARO-3130P進行數(shù)據(jù)發(fā)送。當然,發(fā)送時要指定連接號(通過本地端口、目的地址和端口唯一確定)。 對于對方發(fā)送過來的數(shù)據(jù),SARO-3130P首先將其存儲在自身的數(shù)據(jù)緩沖區(qū)中,然后將數(shù)據(jù)已到達此事件通知給上位機,上位機讀取到數(shù)據(jù)已到達事件后,應當及時使用RECV命令幀控制SARO-3130P將相應連接上的所有數(shù)據(jù)通過串口讀出,當數(shù)據(jù)讀出后,這些數(shù)據(jù)原先占用的數(shù)據(jù)緩沖區(qū)空間將會被釋放。注意,由于SARO-3130P的數(shù)據(jù)緩沖區(qū)有限(總量僅有25K Bytes),所以,對于對方發(fā)來的數(shù)據(jù),上位機一定要及時讀出,否則數(shù)據(jù)越積越多,可能會導致數(shù)據(jù)緩沖區(qū)溢出,丟失數(shù)據(jù)。 3).掛斷連接階段:當一條連接上的所有數(shù)據(jù)都已經(jīng)收發(fā)完成了,不再需要這條連接時,就可以把連接給掛斷了。 和連接建立階段相類似,掛斷也分為主動掛斷和被動掛斷。 我們可以使用RSET命令幀控制SARO-3130P進行連接的主動掛斷。 如果連接被對方主動掛斷,SARO-3130P將會把這個事件通知給上位機進行處理。
|
| 2樓: | >>參與討論 |
| 作者: guorock 于 2005/12/25 8:16:00 發(fā)布:
不錯的帖子 |
|
| 3樓: | >>參與討論 |
| 作者: high 于 2005/12/26 17:07:00 發(fā)布:
很好! "但是相反地,如果是由公網(wǎng)上的靜態(tài)IP向SARO-3130P動態(tài)獲得的IP地址主動發(fā)起的TCP連接將不會成功。" 我還以為是MODULE沒有辦法去listen. |
|
| 4樓: | >>參與討論 |
| 作者: tjjack 于 2005/12/28 10:19:00 發(fā)布:
好!收獲很大!斑竹多發(fā)點啊!期待 |
|
| 5樓: | >>參與討論 |
| 作者: gulfweed 于 2006/4/29 10:51:00 發(fā)布:
ding`````````````` ding`````````````` |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |