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

原创 2006年06月14日 15:06:00
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将会把这个事件通知给上位机进行处理。

gprs模块在linux下ppp拨号上网

由于一个嵌入式平台上项目开发的需要,在arm平台上实施ppp拨号上网。说起这个linux平台的ppp拨号上网,也许很多人觉很简单,网上的成功的例子很多!不错,你说的对,但是我还要给点我的看法,就是这个...
  • qiuzhilu
  • qiuzhilu
  • 2014年06月05日 11:03
  • 1368

TCP/IP详解--基本概念

链路层:设备驱动程序及接口号
  • ythunder
  • ythunder
  • 2016年09月27日 09:52
  • 891

sim900芯片—GPRS模块ppp拨号上网

sim900芯片—GPRS模块ppp拨号上网 ——————————————————————————————————————— 主机操作系统:Centos 6.5  交叉编译器环境:arm-linux-...
  • LYX_WIN
  • LYX_WIN
  • 2016年08月04日 19:33
  • 2027

sim900GPRS模块ppp拨号上网

————————————————————————————————sim900GPRS模块ppp拨号上网...
  • hulu_arm
  • hulu_arm
  • 2016年03月30日 02:19
  • 3749

PPP、TCP/IP、UDP协议之间的关系

PPP工作于第2层,TCP/IP工作于3-7层 PPP(Point to Point Protocol)点对点协议   它是用于串行接口的两台计算机的通信协议,是为通过电话线连接计算机和服务器...
  • u013385925
  • u013385925
  • 2016年04月22日 10:06
  • 1822

PPP/MAC/IP/UDP/TCP的数据报格式

PPP MAC IP UDP TCP
  • jxch____
  • jxch____
  • 2017年12月22日 18:37
  • 60

GPRS模块在Linux平台上ppp拨号上网总结与心得

转http://blog.chinaunix.net/uid-23381466-id-58641.html 由于一个嵌入式平台上项目开发的需要,在arm平台上实施ppp拨号上网。说起这个linux平...
  • keleming1
  • keleming1
  • 2016年04月01日 13:49
  • 911

嵌入式车载平台的GPRS网络实现-续PPP协议(转)

接上一节未完的嵌入式车载平台的GPRS网络实现(转) 前面以为GPRS模块直接执行AT指令就可以联网,好像不对,看了下面的知道还缺少PPP协议,那么PPP协议一般是ADSL在拨号的时候用的(PPPO...
  • shareCode
  • shareCode
  • 2013年06月30日 23:37
  • 2879

GPRS模块与Internet上主机的连接、数据传输过程

请问GPRS模块与Internet上主机的连接、数据传输过程 虽然按照GPRS模块的说明文档能够通过内嵌TCP/IP实现数据的传输,但是对GPRS模块和主机之间的连接关系了解得不是很多。有谁可以介绍...
  • Stephen_yu
  • Stephen_yu
  • 2014年06月18日 22:33
  • 12819

PPP用户认证和IP地址分配

当用户和接入服务器之间的PPPOE建立之后,就可以在上面建立PPP会话。PPP会话的建立分为三个阶段:LCP协商、认证、IPCP协商。   对于PPP终结和PPP续传,LCP协商阶段是相同的。认...
  • MEIYOUDAO_JIUSHIDAO
  • MEIYOUDAO_JIUSHIDAO
  • 2016年06月17日 14:36
  • 1206
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:GPRS应用中TCP/IP/PPP基本概念
举报原因:
原因补充:

(最多只允许输入30个字)