GPRS 网络应用系统中的协议转换
1 PPP 的实现
PPP 是为在同等单元之间传输数据包而设计的链路层协议。这种链路提供全双工操作,并按照顺序传递数据包。设计的目的主要是,通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案。
PPP 中提供了一整套方案来解决链路建立、维护、拆除、上层协议协商、认证等问题。PPP 包含这样几个部分:链路控制协议LCP(Link Control Protocol);网络控制协议NCP(Network Control Protocol);认证协议,最常用的包括口令验证协议PAP(Password Authentication Protocol)和挑战握手验证协议CHAP(Challenge-Handshake Authentication Protocol)。
LCP负责创建、维护或终止一次物理连接。NCP是一族协议,负责解决物理连接上运行什么网络协议,以及解决上层网络协议发生的问题。
一个典型的PPP 链路建立过程分为三个阶段: 创建阶段、认证阶段和网络协商阶段。
LCP 负责创建链路。在这个阶段,将对基本的通信方式进行选择。链路两端设备通过LCP 向对方发送配置信息报文(configure packets)。一旦一个配置成功的信息包(configure-ack packet)被发送且被接收,就完成了交换,进入LCP 开启状态。
在这个阶段,客户端会将自己的身份发送给远端的接入服务器。该阶段使用一种安全验证方式避免第三方窃取数据或冒充远程客户接管与客户端的连接。在认证完成之前,禁止从认证阶段前进到网络层协议阶段。如果认证失败,认证者应该跃迁到链路终止阶段。认证阶段完成之后,PPP 将调用在链路创建阶段选定的各种网络控制协议(NCP)。选定的NCP 解决PPP 链路之上的高层协议问题。在该阶段IP 控制协议(IPCP)可以向拨入用户分配动态地址。
这样,经过三个阶段以后,一条完整的PPP 链路就建立起来了。
中国移动在GPRS 与Internet 网中间建立了许多相当于ISP 的网关支持节点(GGSN),以连接GPRS 网与外部的Internet 网。GPRS 模块可以通过拨“*99***1#”登录到GGSN 上,动态分配到Internet 网的IP 地址。其间,GPRS模块与网关的通信要符合点对点协议,其中身份验证时用户名、密码都为空。使用PPP 登录之后,就可以通过GGSN 接上Internet 了。
由于移动梦网的GGSN 与GPRS 模块通信时遵循PPP协议,所以要在微控制器中也实现一部分PPP 协议才能与之对话。GPRS 模块在拨号后首先要与GPRS 网关进行通信链路的协商,即协商点到点的各种链路参数配置。协商过程遵守LCP、PAP(Password Authentication Protocol)和IPCP(Internet Protocol Control Protocol)等协议。其中LCP 协议用于建立、构造、测试链路连接;PAP 协议用于处理密码验证部分;IPCP 协议用于设置网络协议环境,并分配IP 地址。协商机制用有限状态机的模型来实现。一旦协商完成,链路已经创建,IP 地址已经分配就可以按照协商的标准进行IP 报文的传输了。根据应用的不同,IP 报文中可以携带UDP 报文,也可以是TCP 或ICMP 报文。本系统正是采用UDP 报文传送数据信息的。
数据传输完成之后,微控制器会向GGSN 发送LCP 的断开连接报文,以终止网络连接。微控制器的串口中断接收程序首先以包起始和结束符来判断是否有完整的PPP包,并对PPP 包的内容进行校验,以确定数据包的完整性和正确性。PPP 数据帧的结构如下:
评论