无线数据报协议( Wireless Datagram Protocol,WDP) :WDP 是传输层的通信协议,相当于
TCP协议。它可以工作在由不同无线窄带网络类型所支持的数据承载服务之上,提供不可靠的
数据报服务;能向上层提供一致的服务和在可用载体上透明的通信功能。
定义
无线数据报协议(Wireless Datagram Protocol,缩写WDP)定义了信息从接收者到发送者的移动,并类似互联网协议包中的
用户数据报协议(UDP)。无线数据报协议(WDP)是
无线应用协议(WAP)架构中的一个协议,覆盖了互联网模型中的传输层协议。作为一个通用传输服务,WDP向上层提供一个独立于所用的底层网络技术的透明接口。WDP数据报错误处理由WCMP(Wireless Control Message Protocol)实现。
由于通用的
传输协议接口,WAP架构的上层协议可以独立于底层的无线网络而操作。通过仅由传输层处理
物理网络相关问题,可以使用调制网关获得全球互操作性。由于WDP能够为WAP的上层通信协议提供统一的相对稳定的通信界面,因此,包括应用层、会话层、安全层的通信都能直接在WDP 上运行。
协议概述
WDP协议的功能是在一个WDP承载服务上支持来自高层的多个同时发生的通信应用。 WDP提供的服务包括:端口号应用寻址,可选的分段/合段以及可选的错误检测。端口号标识WDP上高层实体。通过复用低层的承载网络部件,WDP可以支持多种承载网络,并且可以通过优化实现对移动设备有限资源的有效操作。
WDP协议的结构模型
如图1所示,图1中承载服务的不同高度表示不同载体提供的不同能力,导致必须引用相关的WDP协议以维持在TSAP上提供相同的服务。该功能由载体适配服务完成。可见,WDP协议的服务可以映射到具有不同特性的承载网络上,而WDP协议的服务和服务原语向上层提供一致的接口。可用的承载网络种类包括:GSM SMS/USSD, GPRS, IS-136 R-Data, CDMAPacket Data等。
如图2所示。在移动端,WDP协议包括公共WDP元素(标记为WDP)以及适配层。适配层将WDP协议功能直接映射到特殊承载网络,由承载网络层提供承载服务。适配层结束于无线数据网关,无线数据网关将WDP分组通过特殊的协议(隧道协议)传至WAP Proxy/Server。子网是任何用于联接两个通信设备的公共网络技术,如基于TCP/IP,X.25的广域或基于CP/IP/Ethernet的局域网;WAP Proxy/Server提供应用内容或作为无线WTP协议簇和有线Internet的网关。
WDP管理实体
WDP管理实体是WDP层与设备环境的接口。WDP管理实体向WDP层提供设备环境的变化,这些变化可能影响WDP的正确操作。WDP管理实体监控移动环境的服务/功能的状态,并在不能服务时通知WDP层,随之WDP网络管理实体将指示WDP层关闭所有活跃的联接。WDP管理实体除了监控移动环境的状态,它也可能向用户提供配置WDP参数的接口,如设备地址。 WDP管理实体同样用于实现由用户使用的功能,如“结束所有数据连接”。通常,WDP管理实体将处理所有与启动、配置、动态重新配置以及与资源有关的问题。
WDP over GSM SMS/CSD
在GSM中的WDP承载网络包括GSM SMS和GSM USSD。GSM SMS Phase 1支持基于文本的头;GSM SMS Phase2支持基于二进制和文本的头。在WDP协议中使用的每一个分组均用户数据头(UDH)、信息元素(IE)、标识符进行标识。用户数据头信息元素标识符定义了一个位于分组头的端口号结构。这种信息元素标识符具有与基于IP的网络中的协议标识符相似的功能,并使得WDP协议与继承承载网络的其它特性共存。
模块
子模块以及子模块间接口功能如下:
上层协议接口模块
为了保证不同承载网络模块与上层协议的独立性以及提高系统的可靠性,此处采用TCP-Socket作为这两个模块的接口。在系统初始化期间,在接口与上层协议栈之间建立一条TCP连接,作为这两个模块信息交互的通道。这样,既保证了不同模块可以在不同的机器上运行以增加系统配置的灵活性,也增加了系统的可靠性。
管理模块
管理模块负责与WAP总体管理模块交互。在系统初始化期间根据初始化文件对承载网络模块的守护进程进行初始化(如发送缓冲区、接收缓冲区的大小,TCP-Socket侦听端口号,功能模块的定制等)。根据需要或者在承载网络部分出现异常情况时对系统日志文件进行记录。与WAP系统管理模块通过socket交互管理报文。
数据传输管理模块
数据传输管理模块是核心。在初始化期间它根据来自管理模块的侦听端口号启动TCP的服务器端,等待来自上层协议栈的连接建立请求并建立TCP连接。在运行时,它主要有以下几个任务: a.负责接收来自上层协议接口的数据并放入发送缓冲区待发送;b.根据承载网络不同,调用UDP/IP或WDP,将发送缓冲区内的数据通过底层无线承载服务进行传输;c.负责将接收缓冲区内的数据通过TCP连接发往上层协议栈模块;d.在传输出现异常时,发送相应的ICMP/WCMP报文; e.接收到ICMP/WCMP报文时,根据相应情况处理或者通知上层协议栈。
缓冲区管理模块
缓冲区管理模块分为发送缓冲区管理和接收缓冲区管理两个部分。各部分通过信号量管理以保证发送接收报文间不发生冲突。在缓冲区上溢时进行相应错误处理。
WDP协议处理模块
实现端口号应用寻址功能,分段/合段功能以及错误检测功能等。
WCMP协议处理模块
主要处理以下异常情况: a.终点不可达:如运输协议(如WDP)没有特殊端口的侦听者等;b.参数问题:即处理分组的WDP结点发现WDP头中的域有问题从而导致不能完成对分组的处理时;c.报文太大:用于当分段报文的第一个数据报被接受且没有足够的缓存空间用于存储整个报文的情况;d.合段失败:即组合分段的数据报的结点不能完成组合,它包括合段时间超时和缓存溢出两种情况;e.WCMP回应请求/应答:提供应用层的接口用于发送回应请求和接收回应应答,以用于诊断目的。
技术和方法
多类型报文的处理
上述各模块需要处理多种类型的报文,有UDP报文、WDP报文、管理报文等。对于从底层接收到的UDP报文和WDP报文,将其放在接收缓冲区中;对于从上层协议模块接收到的回应服文则放入发送缓冲区中。针对UDP报文和WDP报文的发送方的不同地址发送回应报文。
对于与管理模块的交互,是通过与系统管理模块建立socket连接定时发送管理轮询报文来实现。从系统管理模块接收到的轮询报文放入接收缓冲区中,然后通过与上层协议的接口发送给上层协议栈。上层协议栈传回的回应轮询报文也通过与上层协议的接口发送给承载网络模块。再由承载网络模块通过与系统管理模块的接口回送给系统管理模块。
为了充分发挥多线程任务调度的优势,在承载网络模块的实现中,报文的发送、接收等处理都是用单一进程、多个线程实现的。除了对报文的接收发送,模块对缓冲区的管理也通过线程进行:定时检测缓冲区内的报文,将出错或过期的报文删除。由于采用多线程技术,发送和接收缓冲区就成了两个最主要的共享资源。对于这两个资源的访问需要考虑到临界资源访问冲突问题。为此,我们使用互斥锁机制保证对资源的正确访问。