请问GPRS是如何传送数据的?

请问GPRS是如何传送数据的?,第1张

GPRS的英文全称是:“General Packet Radio Service”(译作“通用分组无线服务”),它是利用“包交换”(Packet-Switched)的概念发展起来的一套无线传输方式。所谓“包交换”就是将Data封装成许多独立的封包,再将这些封包一一传送出去,形式上有点类似邮局中的寄包裹。其作用在于只有当有资料需要传送时才会占用频宽,而且可以以传输的资料量计价,这对广大用户来说是较合理的计费方式,因为像Internet这类的数据传输大多数的时间频宽是闲置的。

GPRS网络是基于现有的GSM网络来实现的。在现有的GSM网络中需增加一些节点,如GGSN(Gateway GPRS Supporting Node,GPRS网关支持节点)和SGSN( Serving GSN,GPRS服务支持节点),GSN是GPRS网络中最重要的网络节点。GSN具有移动路由管理功能,它可以连接各种类型的数据网络,并可以连到GPRS寄存器。GSN可以完成移动终端和各种数据网络之间的数据传送和格式转换。GSN可以是一种类似于路由器的独立设备,也肆如蠢可以与GSM中的MSC集成在一起。GSN有两种类型:一种为SGSN( Serving GSN,服务GSN),另一种为GGSN(Gateway GSN,网关GSN),SGSN的主要作用是记录移动终端的当前位置信息,并且在移动终端和GGSN之间完成移动分组数据的发送和接收。GGSN主要是起网关作用,它可以和多种不同的数据网络连接,如ISDN、PSPDN和LAN等。国外有些资料甚至将GGSN称为GPRS路由器。GGSN可以把GSM网中的GPRS 分组数据包进行协议转换,从而可以把这些分组数据包传送到远端的TCP/IP或X.25网络。

GPRS工作时,通过路由管理来进行寻址和建立数据连接,而GPRS的路由管理表现在以下三方面:移动终端发送数据的路由建立;移动终端接收数据的路由建立;以及移动终端处于漫游时数据路由的建立。

对于第一种情况,当移动终端产生了一个PDU分组数据单元),这个PDU经过SNDC层处理,称为SNDC数据单元。然后经过LLC层处理为LLC帧通过空中接口送到GSM网络中移动终端所处的SGSN。SGSN把数据送到GGSN。GGSN把收到的消息进行解装处理,转换为可在公用数据网中传送的格式(如PSPDN的PDU),最终送给公用数据网的用户。为了提高传输效率,并保证数据传输的安全,可以对空中接口上的数据做压缩和加密处理。

在第二种情况中,一个公用数据网用户传送数据到移动终端时,首先通过数据网的标准协议建立数据网和GGSN之间的路由。数据网用户发出的数据单元(如 PSPDN中的PDU),通过建立好的路由把数据单元PDU送给GGSN。

而GGSN再把PDU送给移动终端所在的SGSN上,GSN把PDU封装成SNDC数据单元,再经过LLC层处理为LLC帧单元,最终通过空中接口送给移动终端。

第三种情况是一个数据网用户传送数据给一个正在漫游的移动用户。这种情况下的数据传送必须要经过归属地的GGSN,然后送到用户A端。

GPRS的主要特点

相对原来GSM的电路交换数据传送方式,GPRS采用分组交换技术。由于使用“分组”技术,用户上网可以免受掉线的麻烦。此外,使橡明用GPRS上网的方法与WAP不同, 用WAP上网就如在家中上网,先“拨号连接”,而上网后便不能同时使用该电话线,但GPRS则较优越,下载资料和通话可以同时裂陪进行。

从技术上来说,声音的传送(即通话)继续使用GSM,而数据的传送则使用GPRS,就把移动电话的应用提升到一个更高层次,而且不需重新组网,十分经济。GPRS的用途十分广泛,包括通过手机发送及接收电子邮件、在Internet上浏览等。使用GPRS,数据可实现分组发送和接受,这意味着用户总是在线且按流量计费,降低了服务成本。

GPRS的最大优势在于数据传输速度不是WAP所能比拟的。目前的GSM移动通信网的传输速度为每秒9.6K字节,GPRS手机在今年初推出时已达到56Kbps的传输速度,到现在更是达到了115Kbps(此速度是常用56k modem理想速率的两倍)。除了速度上的优势,GPRS还有“永远在线”的特点,即用户随时与网络保持联系。举个例子,用户访问Internet时,点击一个超级链接,手机就在无线信道上发送和接受数据,主页下载到本地后,没有数据传送,手机就进入一种“准休眠”状态,手机释放所用的无线频道给其它用户使用,这时网络与用户之间还保持一种逻辑上的连接,当用户再次点击,手机立即向网络请求无线频道用来传送数据,而不像普通拨号上网那样断线后还得重新拨号才能上网。

GPRS的协议模型

Um接口是GSM的空中接口。Um接口上的通信协议有5层,自下而上依次为物理层、MAC(Media Access Control)层、LLG(Logical Link Control)层、SNDC层和网络层。Um接口的物理层为射频接口部分,而物理链路层则负责提供空中接口的各种逻辑信道。GSM空中接口的载频带宽为200KHZ,一个载频分为8个物理信道。如果8个物理信道都分配为传送GPRS数据,则原始数据速率可达200Kbps。考虑前向纠错码的开销,则最终的数据速率可达164kbps左右;MAC为媒质访问控制层。MAC的主要作用是定义和分配空中接口的GPRS逻辑信道,使得这些信道能被不同的移动终端共享;LLG层为逻辑链路控制层。它是一种基于高速数据链路规程HDLG的无线链路协议;SNDC被称为子网依赖结合层。它的主要作用是完成传送数据的分组、打包,确定TCP/IP地址和加密方式;网络层的协议目前主要是Phasel阶段提供的 TCP/IP和L25协议。TCP/IP和X.25协议对于传统的GSM网络设备(如:BSS、NSS等设备)是透明的。

GPRS的应用范围

GPRS是在现有GSM网络上开通的一种新型的分组数据传输业务,在有GPRS承载业务支持的标准化网络协议的基础上,GPRS可以提供系列交互式业务服务:

1、点对点面向连接的数据业务。为两个用户或者多个用户之间发送多分组的业务,该业务要求有建立连接、数据传送以及连接释放等工作程序。

2、单点对多点业务。根据某个业务请求者的要求,把单一信息传送给多个用户。该业务又可以分为点对多点多信道广播业务、点对多点群呼业务和IP多点传播业务。

3、点对点无连接型网络业务。各个数据分组彼此互相独立,用户之间的信息传输不需要端到端的呼叫建立程序,分组的传送没有逻辑连接,分组的交付没有确认保护,是由IP协议支持的业务。

GPRS除了提供点对点、点对多点的数据业务外,还能支持用户终端业务、补充业务、 GSM短消息业务和各种GPRS电信业务。

可见GPRS能同时发送两组或两组以上的数据

随着网络应用的普及和移动装备的大量增加,GPRS技术以其低廉的价格和较快的速率已经越来越多地应用到各种各样的场合中,通过 *** 作系统自带的网络协议来控制GPRS的拨号过程已经很成熟,但是,并非所有的数据传输系统都拥有 *** 作系统或网络协议。相对干昂贵的嵌入式芯片,8051系列单片机更经济,更具有实用性且如果仅仅为了实现GPRS数据传输而采用嵌入 *** 作系统也显得过于复杂这就要求能够有一种简洁有效的新方法来实现整个拨号过程及数据传输过程。因此有必要研究一种简单经济的新办法来解决这种矛盾。本文正是基于上述原因而提出了相应的解决办法.

一、网络体系结构分析

文中研究UDP/IP协议而不是TCP/IP协议,这主要根据本研究背景课题的实际情况而定。UDP相对于TCP的优点在干:简洁、方便迅速、经济。缺点在于:传输过程中可能出现“丢包”现象但对于本研究所涉及的工程项目则影响不大。具体硬件结构如图1所示。主要是通过GPRS模块实现远程传输从传感器采样的数据同时能够通过GPRS网络实现远程管理。外围电路还包括了看门狗、时钟、闪存、AD转换器等上位机软件再通过具体算法实现对数据的分析,是实现农业现代化的必不可少的基础工作,有很重要的实际意义。

研桥穗究基干GPRS的无线通讯必须首先明了通讯过程的网络系统结构,才能在实际解决问题的过程中不致误入歧途。

GPRS无线数据传输的最低层,即物理层是通过RS232串口及GPRS模块组成的,然后是数据链路层,该层是分析的重点和难点,其中涉及到PPP协议实现过程数据链路层上面是网络层,其后是传输层,就是我们通常所说的UDP/IP,TCP/IP其中IP协议属于网络层协议,而UDP.TCP都属于传输层协议传输层上方的是包括会话层、表示层、应用层等,均不属本文讨论范围内,这里不再详述。

另一方面,每层协议都是基于下方协敏铅卜议而实现的即如果使用数据链路层则必须有物理层的支持。如果没有物理层,实施软件的物理介质也就不存在。同理,IP则是基于PPP协议实现的数据链路层,而UDP是基于IP协议实现的网络层,这也就是UDP/IP包要通过PPP协议封装起来的原因.

二、数据链路层的建立

GPRS登陆网络过程属干数据链路层的建立,要通过PPP协议实现PPP协议(Point-to-Point Protocol)提供了在串行点对点链路上传输数据报的方法,支持异步8位数据及位导向的同步连接(如ISDN)它提供了一种管理两点间会话的有效方法,正在取代SLIP(Serial Line Interface Protocol)协议成为点对点网络的标准.

1.通过PPP实现GPRS的上网认证过程

在GPRS模块上网的过程中,主要是经过PPP协议中的三种协议,分别为LCP(Link Control Protocol)协议,PAP(Pass-word Authentication Protocol)认证协议以及IPCP(Internet Protocol Control Protocol)协议LCP部分主要协商下一步的密码认证协议,可选择PAP方式或CHAP方式,我们根据ISP要求选择PAP方式。PAP部分主要是向ISP发送密码进行认证。密码认证通过以后进入IPCP,完成客户端请求IP及ISP端分发IP的过程。其实现过程图如图2所示

在认证过程中,MCU、GPRS模块及ISP都需要发送PPP格式的数据包来完成协商过程该数据包为16进制,多数情况下其对应ASCII码并无实际意义PPP数据帧的结构如表1所示。

对于表1所示的协议部分有如下凡种形式的描述:

对于表1所示的信息位包括了链路配置包标志,描述如下:

以上3个表所示的内容是分析PPP协议各种类型数据包的基本概念。在解析PPP数据包中需要注意的另外一个事项是,如果字符中包括了Ox7D,则表示该字符后面的字符需要转义。转义方式是后一个字符与0x20进行异或运算得出的16进制数据作为真是数据比如一个数据包包括了......Ox7D0x23......,则真实表示的为Ox03a(为方便表示下文所示数据均为转义后的数据)

2.实际协商过程分析

(1)LCP协商过程

首先设置模块的初始化参数及工作参数向模块发送如激皮下AT指令:

1)AT+CGCLASS="B"置为“B”模式

2)AT+CGDCONT=1,"IP""CMNET"设置APN

3)AT+CGATT=1,使GPRS模块附着在网络上

然后发送指令"ATD*99***1#"建立拨号过程,模块会返回16进制的一些数据。我们要据此与模块进行协商。首先返回数据包(16进制):7EFF03CO2101010016010405DC020600000000070208020304CO2326B47E

数据包含义:7E(PPP包头)FF03CO21(LCP协议)01(代码)01(标识符)0016(长度)01(类型)04(长度)05DC(协商内容Maximum-Receive-Unit)02(类型)06(长度)00000000(协商内容)07C类型协议压缩协商)02(长度)08(类型,地址控制域压缩协商)02C长度)03〔类型)04(长度)CO23(内容表示请求PAP认证)26B4(FCS,校验和)7E(PPP包尾)。

此模块在进行LCP协商阶段是比较友好的,主动提出了PAP认证方式,可直接返回对它请求的同意也可以提出些新的申请,实际 *** 作中发送同意请求为:7EFF03CO2102010016010405DC020600000000070208020304CO23DO477E。

至此LCP认证阶段已经结束

(2)PAP认证过程

因为协商同意PAP密码认证方式故进入PAP过程,需要发送用户名和密码至ISP.请求格式为7ECO230101000600003B3F7E

该包在0006后的0000分别代表用户名和密码,都为空此时由于需要与ISP进行认证,需要等一段时间经过判断,服务器通过密码认证,返回:7ECO237D227D217D207D2D7D2857656C636F6D65214EBC7E

其中的16进制字符"57656C636F6D6521"转为ASCII码为"Welcome!".同时服务器发送IPCP请求数据包:7E8021010100OA0306COA86F6FCID497E

进入IPCP协商过程

(3)IPCP协商过程

客户端部分此时需要请求ISP分发IP请求为:7E802101060016030600000000810600000000830600000000OACF7E

"0306""8106""8306"后的四个00分别代表客户端IP,第一DNS主机地址,第二DNS主机地址,这3个部分全部为00表示内容为空,是请求ISP分发IP到客户端。

服务器得到请求后分发IP数据包为:7E8021030600160306OA4A0C148106D38812AB8306D3887D34CB.6B6B7E

OA4AOC14表示为十进制的10.74,12.20,由于中国移动通信规定GPRS拨号上网的用户分发的IP均为内部IP,非外部IP,所以IP都是以10.***开头的。8106后面的D38812AB表示211.136.18171,是第一DNS主机的IP地址。8306后面的D38814CB表示211.136.20.203,是第二DNS主机的IP地址此后我们需要对分发下的几个IP辨认识别,然后再次请求请求中包含这3个分发IP,代表接受分发结果。数据包为7E8021010700160306OA4A4C838106038812ABe3o6D38e14CBF2C17E

此后清求得到ISP认可,链路层PPP握手过程全部结束进入网络阶段。此后所有发往GGSN网绍的包含IP的数据包都会透明的传给所对应的IP地址。以上既是对PPP协商过程的分析,只要注意上面所提及的每步的注意事项及含义,即可迅速快捷的建立数据链路层.

三、网络层及传输层的实现

网络层和传输层虽然属于IP及UDP协议实现的功能但此两者都是建立在数据链路层基础上的,因此在发送PDP/IP包的时候仍然不能摆脱对PPP协议的依赖。由PPP封装的UDP/IP数据包组成如下表所示:

1.IP协议介绍

IP包的组成形式如表5所示,其中8位协议处可选择TCP方式或UDP方式,8位TTL为TimeToLive,只数据包在网络中的存活时间。

2.UDP协议介绍

相对于旧数据包UDP数据包的组成比较简草,主要包含所要发送的数据信息即数据段。结构如表6所示其中最后的UDP校验与IP数据包中的IP校验方式一样,但与PPP协议中的FSC校验方式不同。FSC校验属于CRC16位校验方式的一种而旧校验和UDP校验是相对简单的反码求和的校验机制。并且对于IP及UDP校验而言需要将数据包需要校验部分的16位转换为32位进行校验校验好之后再转换为16位.

3.IP及UDP校验和

IP校验和所要校验的数据段包括了前面所提的IP数据包内的所有位段,而UDP校验相对IP校验复杂的地方在于,UDP校验不仅仅要将UDP数据包内的内容包括进来,而且还要包括IP部分的一些信息UDP校验位组成如下:

对于最后一位的数据段而言由于校验是32位所以如果数据段出现奇数个数据,需要加零补位。

校验程序如下所示:

HdelineUSHORT

unsignedshortUSHOPTchecksum(USHORT*buller,Intsize)

{

unsignedIongcksum=0

while(size>1)

{

cksum+=*buffer++;

size-=sizeof(USHORT)

}

if(size)

cksum+=*(UCHAR*)buller

cksum=(cksum>>16)+(cksum&oxnff)

cksum+=(cksum>>16)return(USHORT)(Ccksum)

}

4.由PPP封装形式封装的UDP/IP数据包

根据前面所介绍的方法,下面给出一个具体的实例进行分析:7E2145.00001D47F300DOBID11BOF60A4A30EDD350336C03E803F20000551B61A5DE7E

7E21为PPP包头,4表示旧版本号5表示首部长度,00表示服务类型,001D表示包的All长度47F3表示16位的标识,00表示3位的标志+13位的片偏移,80表示TTL,11表示协议(11表示UDP协议,TCP为06),B0F6是IP首部校验和。接下来的"0A4A30E0"表示本地IP地址即刚才通过PPP协议获得的动态IP而"D350336C"表示对方IP,即要发送的目的IP,"03E8"表示本地端口(这个可以随便设定只要不与系统已用端口冲突即可,对于UDP而言这个没有实际意义因为GPRS分配到的是内部IP,即使对方知道你的IP及端口也可能通过UDP方式传输数据,而如果是TCP协议则用GPRS作为Client清求Server建立通道后Server端可根据端口发送数据)"03F2"表示目的端口"0009",表示UDP包的长度(本地端口2字节+目的端口2字节+数据长度2字节+数据端n字节十UDP校验2字节),“55”表示数据,转换为ASCII码应为"a","1B61"为UDP校验和"A5DE"为PPP包的FSC校验和。此段代码的含义是“向IP为211.80.51.108,端口为1010的目的地发送字符a".

四、结束语

GPRS的应用不仅仅局限于嵌入式或PC机领域,更能扩大到简单的8051微控制器,从而更深入地扩大GPRS技术的使用。同时针对GPRS上网方式裁减PPP和UDP/IP协议,软件部分用C语言编写可压缩至4K,不仅简化认证过程更节省程序运行时间,正常情况下从拨号到登陆网络只需要3秒钟而且该程序可方便的移植到各种硬件系统中。目前该系统已稳定运行于南京试验田农田墒情检测系统。

1)拨号上网:常见的如拨ATD *99***#

2)指定Server的IP地址、Port端口号,使用特定的AT指令来连接到外部的数据网,也即Internet。常见的如AT+CIPSTART="TCP","211.34.48.48","3030",即可连接具有公网IP地址为211.34.48.48,TCP端口为3030的Server。

拨号上网采用的是外部协议栈,需要用户自己实现PPP、TCP、UDP等协议栈,而第二种方式则采用模块自带的协议栈,用户的底层应用程序不需要实现上述较为复杂的协议栈。当然两种方式各有优缺点,第一种方式实现起来比较复杂,但是使用灵活,用户的数据封装比较灵活,可以适应用户的特殊应用。采用第二种方式比较简单,但成本较高,数据的封装格式也较为固定。

常见的GPRS模块分为3种:

1)GPRS DTU(GPRS数传单元,常称为GPRS透传模块)

GPRS DTU内部封装了完善的TCP/IP等协议栈,可为无线传输提供透明的TCP/IP通道。在软件设计上,它封装了协议栈内容并且具有嵌入式 *** 作系统,硬件上可看作是嵌入式PC加无线接入部分的结合,用窗口进行数据通信。棚裂主要应用于工业领域,而GPRS modem通常要完成类似的功能必须借助于PC机的软件进行预数据处理。这种形式的应用通常需要一个PC接一个GPRS Modem来连接到外部的数据网。GPRS DTU的四个核心功能:

(1)内部集成TCP/IP协议栈

(2)提供串口数据双向转换功能

(3)支持自动心跳,保持终端设备永久在线(DTU包含上电自动拨号,采用心跳包保持永久在线-当长时间没有数据通信时,移动网关将断开DTU与中心的连接,心跳包就是DTU与数据中心在连接被断开之前发送一个小数据包,以保持连接不被断开。支持断线自动重连、自动重拨号等功能)。

(4)支持参数配置,永久保存。将数据中心的IP地址及端口号,串口的波特率等保存在FLASH或EEPROM中。一旦上电,就自动按照设置好的参数进行工作。

较为高级的GPRS DTU还提供一些扩展功能,主要包括:支持数据中心域名解析、支持远程参数配置/远程固件升级、支持远程短信/电话唤醒、支持本地串口固件升级、提供短信通道、提供DTU在线/离线电平指示等。

2)GPRS/GSM Modem(纯的GPRS/GSM调制解调器,常称为GPRS猫)。GPRS Modem是接入GPRS分组网的一个物理通道,它本身不具有 *** 作系统,必须依附于计算机(在功能上类似于有线Modem),在计算机 *** 作系统之上才能进行PPP拨号连接,通常是与PC结合使用,实现拨号上网。在工作方式上,GPRS DTU与GPRS Modem最大的区别就是GPRS DTU内部CPU在主动进行控制拨号和处理TCP/IP协议包,而GPRS Modem则是被动的,需要外部设备来进枯庆行拨号和进行TCP/IP协议包处理。

3)带TCP/IP协议栈的GPRS Modem(将GPRS/GSM modem和TCP/IP协议栈封装在一起,内链败闭部有CPU,FLASH,RAM,控制单元等硬件,和DTU功能类似)

如果是要求数据长期可靠传输,那么应当采用GPRS DTU,通过GPRS网络平台实现与监控中心端的数据通信。如果使用GPRS Modem则只能采用普通拨号方式上网,由于这种拨号方式是针对普通用户的上网业务设计的,而不是针对数据可靠收发应用来设计的,因此不适合于可靠的数据传输;而且通常断线后并不进行自动重拨。因此,在需要数据长期可靠传输的领域,都应选择使用GPRS DTU。如果只是用于无线上网,则可以选择GPRS Modem。

带TCP/IP协议栈的GPRS Modem与GPRS DTU的差别在于,它在 *** 作上和普通的GPRS Modem很相似,即:所有对模块的 *** 作只能用AT命令,尤其是发送和接收数据都要通过专用的AT命令。如果嵌入式系统采用的CPU是资源有限的单片机,建议使用GPRS DTU或自带协议栈的GPRS Modem,否则要实现自己的TCP/IP协议,非常麻烦。如果是使用带有 *** 作系统WinCE或嵌入式Linux的嵌入式系统,可以采用GPRS/GSM Modem,这样成本会比较低。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12335012.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存