天天看點

GPRS應用中TCP/IP/PPP基本概念

GPRS應用中TCP/IP/PPP基本概念

廈門桑榮科技有限公司

GPRS應用中TCP/IP/PPP基本概念:(CDMA的原理與此差不多)

實際上GPRS DTU上實作的協定棧是TCP/IP Over PPP。我們在使用時必須要有一些相應的概念。是以在下面我們就與SARO-1010P使用相關的一些事項作一些簡要的說明,如果您想詳細了解這些協定,請參見相關書籍:

  1. 每一次SARO-1010P撥ATD*99***1#(或ATD*99***1#)之後其實都在采用PPP協定和移動的接入裝置(一般是移動公司的一台特殊的GGSN路由器)進行握手,當PPP協定握手成功後,SARO-1010P都會獲得一個動态IP位址。一般來說,每一次SARO-1010P下線後(挂斷連接配接或者直接斷電後)在重新進行撥号和PPP握手後取得的動态IP位址都是不一樣的。但是移動公司可以通過為客戶開通特定的APN和發行特殊的SIM卡,使得用這張SIM卡獲得的動态IP位址每一次都不變。也就是說可以做到SIM卡和IP位址綁定。

  

  2. 我們在做測試時,應當注意到如下事實:在采用公網的Apn(“cmnet”)的條件下,如果我們用SARO-1010P主動向公網上的一個靜态公網IP位址發起TCP連接配接,隻要這個公網上的機器确實有偵聽相應的端口,這樣是可以連上的;但是相反地,如果是由公網上的靜态IP向SARO-1010P動态獲得的IP位址主動發起的TCP連接配接将不會成功。這個現象的原因是:實際上SARO-1010P獲得的動态IP位址是移動的一個特殊的内部網段上的位址,這個特殊内部網段裡的位址如果要和外部網(公網)的位址進行TCP通信,必須通過一個類似于TCP代理(或者NAT)的裝置進行通信的轉發。換句話說,這個動态位址對于網絡上的其他機器來說是不可通路的。

  

  3. 标準AT指令+CGDCONT的主要作用是指定Apn。Apn是Access Point Name(通路接入點)的縮寫,移動通過開通特殊的Apn為行業客戶提供Vpn(Virtual Private Net)服務。比如說,如果是要上公網(Internet),應當使用“cmnet”作為Apn。又如,某企業向移動公司申請了Vpn服務,移動公司為其開通了一個Apn為“hxsw.gd”,則我們就應當用這個Apn來設定Gprs子產品,格式如下:

  AT+CGDCONT=1,“IP”,“hxsw.gd”

  

  4. 确定一條TCP連接配接有4個要素,這4個要素是雙方的IP位址和雙方的TCP端口号,這也就是SARO-1010P為什麼将本地端口、目的端口和目的IP位址結合起來作為連接配接的ID号(SARO-1010P在PPP握手成功後獲得的動态位址隻要不斷線重連就不會改變)的原因。

  

  5. 使用TCP協定進行資料通信時,必須要經過三個階段,第一個階段是連接配接建立階段,第二個階段是資料收發階段,第三個階段是連接配接釋放階段:

  

  1).連接配接建立階段:

  連接配接的建立又有主動連接配接和被動連接配接之分,一般來說客戶機都是主動發起連接配接的,而伺服器是被動接受連接配接的。

  

  所謂的主動連接配接是指本方主動向遠端發起連接配接請求, 而被動連接配接指的是本方偵聽一個端口,等待遠端及其主動向自己發起一個連接配接請求并且進行回應并且最終握手建鍊成功。

  

  在連接配接成功,切換到資料态後,我們可以通過OPEN指令幀控制SARO-1010P 進行主動連接配接。當然,連接配接時要指定對方的IP位址和端口号。至于被動連接配接,SARO-1010P也可以支援,目前的程式隻支援偵聽一個端口。對方主動連接配接(SARO-1010P被動連接配接)成功後将建立一條新的通信連接配接,SARO-1010P将把這個被動連接配接成功的事件通知給上位機。

  

  2).資料收發階段:

  當一條連接配接建立之後,我們就可以在這條連接配接上進行資料收發了。

  

  我們可以使用SEND指令幀控制SARO-1010P進行資料發送。當然,發送時要指定連接配接号(通過本地端口、目的位址和端口唯一确定)。

  

  對于對方發送過來的資料,SARO-1010P首先将其存儲在自身的資料緩沖區中,然後将資料已到達此事件通知給上位機,上位機讀取到資料已到達事件後,應當及時使用RECV指令幀控制SARO-1010P将相應連接配接上的所有資料通過序列槽讀出,當資料讀出後,這些資料原先占用的資料緩沖區空間将會被釋放。注意,由于SARO-1010P的資料緩沖區有限(總量僅有25K Bytes),是以,對于對方發來的資料,上位機一定要及時讀出,否則資料越積越多,可能會導緻資料緩沖區溢出,丢失資料。

  

  3).挂斷連接配接階段:

  當一條連接配接上的所有資料都已經收發完成了,不再需要這條連接配接時,就可以把連接配接給挂斷了。

  

  和連接配接建立階段相類似,挂斷也分為主動挂斷和被動挂斷。

  

  我們可以使用RSET指令幀控制SARO-1010P進行連接配接的主動挂斷。

  

  如果連接配接被對方主動挂斷,SARO-1010P将會把這個事件通知給上位機進行處理。

繼續閱讀