基于CDMA无线网络的内嵌精简TCIP/IP协议栈的实现

(整期优先)网络出版时间:2014-04-14
/ 2

基于CDMA无线网络的内嵌精简TCIP/IP协议栈的实现

吴菊芳黄瑛

吴菊芳黄瑛

摘要:借助CDMA模块实现数据的收发是无线网络传输软件核心部分,为了减少协议设计的复杂性,核心程序是按照层的方式来组织的。每一层设计目的都是向它的上一层提供一定的服务。由于CDMA网络是一个基于分组的IP无线局域网,本文结合TCP/IP协议来论述一个基于CDMA无线网络的内嵌精简TCIP/IP协议栈实现过程。

关键词:CDMA;PP;协议栈1.引言:TCP/IP网络协议TCP/IP协议常称为TCP/IP协议簇或者互联网协议簇,它为实现整个网络的互联提供指导,其层次组合是OSI模型的浓缩,将原来的七层模型合并为四层协议的体系结构,自顶向下分别是应用层、传输层、网络层和链路层。图1给出了不同层次协议之间的关系。

3.基于CDMA网络的网络层

在完成CDMA网络接入过程以后,真正要实现数据的传输还得网络层的协议,只有把数据封装在网络协议里面才能通过CDMA的路由器实现数据报文的转发。IP是TCP/IP协议族中最为核心的协议。所有TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输(见图4)。TCP/IP对IP提供不可靠、无链接的数据报传送,任何要求的可靠性必须由上层来提供(如TCP)。

4.基于CDMA网络的传输层UDP协议的实现UDP用户数据报协议与TCP协议相比具有面向无链接、对系统资源要求少、程序结构简单等特点,因此本课题选用了UDP协议,避免了采用TCP要建立和释放链接的复杂过程。在PPP链路层协议下,UDP封装数据格式如图6所示:

1)CPU串口驱动层:CPU定时查询16C550的接收缓冲区,将得到的数据存入一级缓冲区,同时接收指针向前移动。主程序会在流程中通过在一级接收缓冲区查找成对Ox7e的值,如果查找到一对,就先暂时认为是条PPP数据帧,就将拷贝到第二级接收缓冲区,在拷贝的同时将对数据帧进行转义。拷贝完成后设置标志位让PPP链路层分析子程序接管。

2)PPP链路层:PPP链路层分析子程序负责对该条数据帧进行CRC校验,CRC校验正确就将一级接收缓冲区Ox7e对应的地址的值改写为0x00,如果是链路层协议的话,直接进行协议处理。如果不是链路层协议的话,设置标志位将由网络层分析子程序接管。如果CRC校验不正确否则认为该PPP数据帧没有接收完全,暂时先不处理。

3)IPICMP协议层:IPICMP协议层分析子程序,这里主要是对IP数据包进行判断是否为UDP包,如果是UDP包的话将设置标志位由UDP分析子程序包接管,如果是Ping数据报的话将直接设置PPP链接状态机的状态位为打开。如果是其他程序无法识别的未知(包括TCP包)协议的数据包的话则将其丢弃。

4)UDP协议层:UDP协议层分析子程序对UDP数据中的UDP端口进行检查,本课题启用了6000这个端口,如果是6000这个端口的UDP数据包,那么就将该数据包中的用户数据取出放到第三级接收缓冲区,并设置标志位由用户层分析子程序接管。否则为了拦截其他非法的UDP数据报文子程序将UDP包丢弃。

5)用户层分析子程序对第三级接收缓冲区的数据格式进行判断是否符合监控终端和数据中心预先设定的通信标准,是的话则执行相关的动作,否的话则将其静静丢弃。

数据的接收:CPU软件设置了三级接收缓冲区,最关键的是第一级接收缓冲区,它的长度为256个字节,利用一个8位的接收指针形成一个环形的结构。因为接收指针定义为8位的数据类型,所以它最大的数值为255,溢出后该指针的复位为0,所以该指针能覆盖的区域只有256个字节。环形接收缓冲区的设置很好地解决了缓冲区溢出的问题。

数据的发送:CPU软件设置同样设置了三级发送缓冲区,因此监控终端和数据中心的通信是按照预先设定的通信标准进行的,所以主要是监控数据的封装,流程比较简单。封装次序如下:1)用户层:当有数据发送时例如定时采集的历史数据或者报警数据等等,先在第一级发送缓冲区形成标准监控数据格式的用户数据,同时设置标志位让UDP包封装子程序接管。

2)UDP协议层:UDP包封装子程序并将其拷贝到第二级发送缓冲区的UDP数据域,并填写源端口地址、目的端口地址、源IP地址、目的IP地址、数据长度、校验和等UDP数据包信息并设置标志位让IP包封装子程序接管。

3)IPICMP协议层:IP包封装子程序完成填写IP报头功能,并设置标志位让PPP帧封装子程序接管。

4)PPP链路层:PPP帧封装子程序填写相关的协议域的值,并计算该帧的CRC校验码填写入PPP帧FCS域,最终形成一条完整PPP数据帧。最后设置标志位让发送子程序接管。

5)CPU串口驱动层:发送子程序将PPP数据帧拷贝到第三级发送缓冲区拷贝的过程同时完成PPP数据帧的转义,最后将其发送出去。

6.结论经过实践,本课题开发的基于CDMA无线网络的内嵌精简TCIP/IP协议栈已经成功应用在电力行业的无线数据传输中,同时由于目前3G网络连接均可以通过3G无线模块来驱动,只是不同的网络格式硬件驱动程序有差别,因此本课题开发基于CDMA网络的精简TCP/IP协议栈也可以应用于其他制式无线网络包括其他3G、4GTD-LTE等行业。

参考文献:[1]ComputerNetworks.AndrewS.Tanenbaun.清华大学出版社2002[2]CDMA无线通信原理窦中兆、雷湘清华大学出版社2004[3]ARMCortex-M0微控制器原理与实践温子祺[等]编著北京航空航天大学出版社2013