一种实现数字家庭设备间多协议互联互通的适配器及其方法
技术领域
本发明涉及一种网络通信技术,尤其涉及一种基于数字家庭基础协议实现数字家庭设备之间多协议互联互通的适配器及其方法。
背景技术
从1994年数字家庭诞生到现在,经过10余年的发展,各项技术已日趋成熟,数字家庭的相关产品也层出不穷。因此,不同设备之间如何方便、智能地互联互通及资源共享和协同工作等已逐渐成为人们关注的问题。
目前,许多相关的厂商或组织正致力于该领域的研究之中,如国内以联想为首的“闪联”(IGRS)提出了IGRS协议、由国际众多著名厂商联盟的数字生活网络联盟(DLNA)提出了UPnP协议等等。虽然如此,但目前还只是局限于单纯协议间设备的互联互通,而如何在这些协议之间实现互联互通的问题并未得到实质性的解决。因此,如何实现不同协议间的自由通信,以及基于不同协议的设备间的相互交流与控制,是数字家庭技术发展中一个亟待解决的问题。
发明内容
本发明的目的在于克服现有技术的不足,提供一种使得基于不同协议的设备之间能够互相发现、控制以及通信的实现数字家庭设备间多协议互联互通的适配器,从而使不同协议的设备间实现互联互通、资源共享和互操作等,使得数字家庭设备变得多样化,不再依赖设备所属协议的限制。本发明的另一目的在于提供一种实现数字家庭设备间多协议互联互通的方法。
本发明的目的通过以下技术方案予以实现:
本发明提供的一种实现数字家庭设备间多协议互联互通的适配器,包括GDHomeICP基础协议模块和多协议分析处理模块;其中
1)GDHomeICP基础协议模块-用于实现对设备和消息的控制;包括以下组成部分:
消息接收缓冲区-用于临时存储来自发送方设备的数据报;
消息提取与转发子模块-用于读取消息接收缓冲区的数据报,根据该数据报头部的协议描述字段数据判断其协议类型,并根据协议类型的不同,将数据报发送到消息处理缓冲区等待消息处理,或转发到多协议分析处理模块做进一步的处理;将处理后的数据报发送到接收方设备;
消息处理缓冲区-用于临时存储来自消息提取与转发子模块的数据报;
消息分析子模块-用于读取消息处理缓冲区的数据报,分析消息类型,通过数据报中消息类型描述字段数据,判断该数据报所属的类型,并调用消息处理子模块相应的处理方法接口;
消息处理子模块-用于根据数据报所述类型通过调用相应处理方法接口对其进行处理,并对整个传输进行总控制;
消息发送缓冲区-用于临时存储处理后需要发送给接收方设备的数据报,以供消息提取与转发子模块调用发送到接收方设备;
2)多协议分析处理模块-用于实现消息格式的分析以及消息内容的处理,对数据报进行拆包,提取字段、属性和字段数据,形成分析表;按照接收方的协议格式对数据报进行重新封装后,转发到所述GDHomeICP基础协议模块的消息发送缓冲区;包括以下组成部分:
消息分析缓冲区-用于临时存储来自所述消息提取与转发子模块或消息处理子模块、需要多协议分析处理模块进行处理的数据报;
分析处理子模块-根据消息的不同类型通过调用相应处理方法的接口对消息进行拆包,提取字段、属性和数据操作形成分析表、重新封装数据等操作与处理。
多协议字段与属性映射表-内置于多协议分析处理模块,主要包括不同协议间的字段名称映射和不同协议间的字段属性映射两部分内容;
所述GDHomeICP基础协议模块通过通用接口与发送方设备和接收方设备连接;GDHomeICP基础协议模块和多协议分析处理模块则通过预定义的软件接口相互连接通信。
本发明基于GDHomeICP(广东省数字家庭互联互通基础协议),该协议比IGRS基础协议与UPnP协议等的兼容性更强。采用多协议分析处理机制和缓冲区技术,对于来自发送方设备的数据报,如果属于GDHomeICP基础协议,直接由GDHomeICP基础协议模块处理并发送给接收方设备。如果属于其他协议,则通过多协议分析处理模块对其进行分析及关键字段提取与转化,最后将处理后的数据报按照接收方的协议格式进行封装,交由GDHomeICP基础协议模块转发给接收方设备,从而实现不同协议设备之间的互联互通。
采用缓冲区技术目的在于提高消息处理速度。缓冲区均采用队列方式实现,先进入缓冲区的消息将被先处理。
本发明所述消息处理子模块是GDHomeICP基础协议模块的核心,其功能通过以下八个模块实现:
Web模块-用于发送和接收,由客户端和服务器端组成,主要是负责基于TCP通信的HTTP消息报文的处理;
SSDP模块-用于发送和接收,主要是实现简单服务发现协议,以实现设备和服务发现,为上层模块的UDP组播通信提供接口函数;
设备模块-用于实现设备相互发现功能,包括设备在线、离线宣告消息处理、基于组播发送设备查找消息处理、设备在线检测处理和获取设备描述文档处理;
设备组模块-用于实现主从设备组功能,包括设备组的创建、设备组宣告、设备组加入和设备组查找功能;
设备管道模块-用于实现安全设备管道的创建、消息加解密等功能;
服务模块-用于实现设备间服务发现和服务访问功能,包括服务在线和离线宣告、服务注册和注销、服务查找、服务描述文档的获取和解析、根据服务描述文档描述的各种接口实现设备间的服务调用;
事件模块-用于实现设备和服务的在线离线、数据变化事件订阅、续订和取消订阅功能;
安全模块-用于为GDHomeICP协议栈提供多种安全算法来保障信息传输的安全性,主要用在设备管道模块的创建对消息进行加解密处理。
本发明基于GDHomeICP(广东省数字家庭互联互通基础协议),所述多协议分析处理模块具体地可以对IGRS、UPnP协议数据报进行处理,即主要解决以“闪联”(IGRS)设备与DLNA的UPnP设备为主的设备间的互联互通问题。此外,由于UPnP基础协议没有设备管道的概念,因此其数据报必将缺少相应字段与数据。为此本发明所述多协议分析处理模块按照默认的原则为UPnP协议设备分配无安全机制的设备管道,并为该数据报加入相应的字段与数据,在返回UPnP信息时将该字段与数据去除。
不同协议间设备通过本发明多协议互联互通适配器间接相连,设备间消息的传递与服务的调用等均通过多协议互联互通适配器做中继与处理,使得不同设备间如同形成了一个虚拟连接,从而间接实现互联互通。多协议互联互通适配器对不同设备间发送的数据报处理过程对各个设备保持透明。主要技术方案为对基于不同协议的设备间发送的数据报进行响应与处理后将其转发,使得设备通过适配器间接实现互联互通、互操作以及资源共享等。
本发明的另一目的通过以下技术方案予以实现:
本发明提供的一种实现数字家庭设备间多协议互联互通的方法,将上述GDHomeICP基础协议模块和多协议分析处理模块嵌入适配器中;包括以下步骤:
a)适配器的GDHomeICP基础协议模块从发送方设备接收消息后,将消息存储在消息接收缓冲区;
b)消息提取与转发子模块从消息接收缓冲区中获取数据报,并根据数据报头部的协议描述字段数据,判断该数据报是否是GDHomeICP协议数据报;如果是,则继续下面的步骤;如果不是,则转到步骤f),即转发至多协议分析处理模块进行处理;
c)该数据报存放在消息处理缓冲区等待消息的进一步分析和处理;
d)消息分析子模块从消息处理缓冲区读取数据报,根据数据报中消息类型描述字段数据判断该数据报属于何种消息,并调用消息处理子模块的不同消息类型的处理方法接口;
e)消息处理子模块将数据报相应字段的数据进行修改和处理;
f)数据报存放在多协议分析处理模块的消息分析缓冲区内等待处理;
g)分析处理子模块从消息分析缓冲区读取数据报,对数据报进行拆包预处理,并提取字段、属性和数据操作形成分析表;
h)拆包预处理后,根据协议描述字段数据,确定该数据报属于何种协议,如果该消息已经过基础协议模块的处理,则继续下面的步骤;否则,对其采取该协议与GDHomeICP协议的字段与属性映射,将该数据报转换封装为GDHomeICP基础协议数据报发送到GDHomeICP基础协议模块,转到步骤c);
i)采用内置的多协议字段与属性映射表,通过查表的方式进行字段与属性映射;
j)根据接收方协议格式要求,对该数据报进行重新封装;
k)将重新封装处理后的数据报发送至GDHomeICP基础协议模块的消息发送缓冲区;
l)消息提取与转发子模块提取消息发送缓冲区中的数据报,然后发送到接收方设备,从而完成一次设备间的互连互通。
本发明具有以下有益效果:
(1)基于不同协议的数字家庭设备间实现互联互通
通过本发明多协议互联互通适配器,基于不同协议的设备间建立了虚拟连接,从而实现设备间相互识别、连接以及通信。设备间发送的各种消息数据报均可被适配器调整为符合各自协议要求的格式,而适配器内部功能的具体实现对各个设备保持透明。因此,有效解决了不同协议设备之间实现互联互通的问题,从而实现了不同协议设备的互操作以及资源共享。
(2)具有较高的灵活性与可扩展性
由于GDHomeICP基础协议本身以及多协议字段与属性映射表均具有的较高灵活性与可扩展性,因此可自由地根据不同协议的特点对协议内容和映射表做出相应调整。
(3)对需要实现互联互通的设备无需进行任何改动
本发明适配器是针对设备间发送的数据报进行重新封装与处理,因此无需对设备进行调整。对各个设备均保持透明,因此完全不用对设备进行任何改动,方便了用户使用。
(4)具有较完善的兼容机制
本发明适配器通过对登录的所有设备进行协议登记与分析,选取机制完善的协议的处理方式作为默认处理方式,使得各个设备的协议间能够兼容与通信。
(5)便于操作
用户不必改动或影响其他设备,也不必关心本发明适配器的实现机制或对适配器进行人为操作和改动,仅需通过通用接口将各个设备相连即可,易于操作。
附图说明
下面将结合实施例和附图对本发明作进一步的详细描述:
图1是本发明实施例所支持的GDHomeICP基础协议的层次结构图;
图2是本发明实施例所支持的GDHomeICP基础协议的工作流程图;
图3是本发明实施例多协议互联互通适配器的结构原理框图;
图4是本发明实施例中消息处理子模块的协议栈结构图;
图5是本发明实施例的工作流程框图。
具体实施方式
图1~图5所示为本发明的实施例。本实施例一种实现数字家庭设备间多协议互联互通的适配器及其方法,是基于GDHomeICP(广东省数字家庭互联互通基础协议)进行的。
GDHomeICP(广东省数字家庭互联互通基础协议)介绍
出于对IGRS协议与UPnP协议的兼容问题,GDHomeICP基础协议交互的消息采用简单服务发现协议(SSDP)、通用事件通知架构(GENA)和简单对象访问协议(SOAP)来进行标准化。然后通过HTTP协议传输消息。其结构如图1所示。
在GDHomeICP基础协议中,设备(组)及服务是协议中的基本元素,设备之间的相互访问、控制及多媒体信息的传输都是被封装为服务的形式。
GDHomeICP基础协议规定每个设备(组)及服务均以描述文档形式描述其特征、设备提供服务列表、服务行为列表及服务状态返回值等相关信息,用以标识不同设备(组)与服务。其中,IGRS与UPnP设备(组)描述文档均采用XML文档格式,而服务描述文档则有不同,IGRS采用WSDL格式,而UPnP则采用XML格式,两者在格式与内容上均有一定的差异。因此,在GDHomeICP基础协议中,我们采用XML来描述各种服务调用接口信息,通过SOAP实现服务的调用功能,从而兼容IGRS和UPnP的设备(组)与服务描述文档格式。
GDHomeICP(广东省数字家庭互联互通基础协议)工作流程
在GDHomeICP基础协议中,将一个设备(组)从加入到网络,发现其它设备信息,加入某个设备组,发现设备组内其它设备上的服务并进行服务调用,到最后退出网络的全部过程定义为11个步骤,其工作流程如图2所示。
如图3所示,本实施例一种实现数字家庭设备间多协议互联互通的适配器,包括GDHomeICP基础协议模块和多协议分析处理模块。
一、GDHomeICP(广东省数字家庭互联互通)基础协议模块-支持GDHomeICP基础协议,用于实现对设备和消息的控制。
包括以下组成部分:
消息接收缓冲区-用于临时存储来自发送方设备的数据报;
消息提取与转发子模块-用于读取消息接收缓冲区的数据报,根据该数据报头部的协议描述字段数据判断其协议类型,并根据协议类型的不同,将数据报发送到消息处理缓冲区等待消息处理,或转发到多协议分析处理模块做进一步的处理;将处理后的数据报发送到接收方设备;
消息处理缓冲区-用于临时存储来自消息提取与转发子模块的数据报;
消息分析子模块-用于读取消息处理缓冲区的数据报,分析消息类型,通过数据报中消息类型描述字段数据,判断该数据报所属的类型,并调用消息处理子模块相应的处理方法接口;
消息处理子模块-用于根据数据报所述类型通过调用相应处理方法接口对其进行处理,并对整个传输进行总控制;
消息发送缓冲区-用于临时存储处理后需要发送给接收方设备的数据报,以供消息提取与转发子模块调用发送到接收方设备。
其中,消息处理子模块是GDHomeICP基础协议模块的核心,如图4所示,其功能通过安全模块、Web模块、SSDP模块、设备模块、设备组模块、管道模块、服务模块和事件模块这八个模块实现。
底层的三个模块安全模块、Web模块和SSDP模块是协议栈的核心部分,提供了一个可靠的消息报文传输机制。上层的设备模块、设备组模块、管道模块、服务模块和事件模块分别实现GDHomeICP基础协议标准中规定的功能。这些模块之间的通信主要是基于HTTP和SOAP协议传输的。
Web模块,用于负责发送和接收,由客户端(HTTPClient)和服务器端(HTTPServer)组成,主要是负责基于TCP通信的HTTP消息报文的处理,这些消息报文主要为GET、M-GET、POST和M-POST类型的消息报文。HTTPClient负责消息报文的发送并提供了一个回调函数处理机制,HTTPServer负责接收HTTP报文并进行相应的处理。
SSDP模块,用于负责发送和接收,主要是实现简单服务发现协议,其功能是实现设备和服务发现,为上层模块的UDP组播通信提供接口函数,主要处理M-SEARCH、NOTIFY消息报文。
设备模块,主要是实现设备相互发现功能,包括设备在线、离线宣告消息处理、基于组播发送设备查找消息处理、设备在线检测处理和获取设备描述文档处理。
设备组模块,主要是实现主从设备组功能,包括设备组的创建、设备组宣告、设备组加入和设备组查找功能。
设备管道模块,主要是实现安全设备管道的创建、消息加解密等功能。
服务模块主要实现设备间服务发现和服务访问功能,包括服务在线和离线宣告、服务注册和注销、服务查找、服务描述文档的获取和解析、根据服务描述文档描述的各种接口实现设备间的服务调用。
事件模块,功能主要是实现设备和服务的在线离线、数据变化事件订阅、续订和取消订阅功能。
安全模块,为GDHomeICP协议栈提供多种安全算法来保障信息传输的安全性,主要用在设备管道模块的创建对消息进行加解密处理。
具体消息内容规范如表1、表2所示,消息类型与相应处理接口定义如表3所示:
表1 请求与通知类型HTTP扩展消息
表2 响应类型HTTP扩展消息
表3 主要消息类型与对应处理函数接口名
二、多协议分析处理模块-主要针对IGRS、UPnP协议数据报进行处理,用于实现消息格式的分析以及消息内容的处理,对数据报进行拆包,提取字段、属性和字段数据,形成分析表;按照接收方的协议格式对数据报进行重新封装后,转发到GDHomeICP基础协议模块的消息发送缓冲区。
包括以下组成部分:
消息分析缓冲区-用于临时存储来自消息提取与转发子模块或消息处理子模块、需要多协议分析处理模块进行处理的数据报;
分析处理子模块-根据消息的不同类型通过调用相应处理方法的接口对消息进行拆包,提取字段、属性和数据操作形成分析表、重新封装数据等操作与处理。
多协议字段与属性映射表-内置于多协议分析处理模块,主要包括不同协议间的字段名称映射和不同协议间的字段属性映射两部分内容。
对于某些协议如UPnP基础协议,没有设备管道的概念,所以其数据报必将缺少相应字段与数据。如果接收方为基于IGRS或GDHomeICP基础协议的设备,它们均具有设备管道。对此,多协议分析处理模块按照默认的原则为该UPnP设备分配无安全机制的设备管道,并为该数据报加入相应字段与数据如DeviceSecurity:NULL进行后期处理,在返回UPnP信息时将该字段与数据去除。其它类似情况均可以采取此方式进行处理。
本实施例适配器基于的GDHomeICP基础协议比IGRS基础协议与UPnP协议兼容性更强,主要针对以“闪联”(IGRS)设备与DLNA的UPnP设备为主的设备间的互联互通问题。其中GDHomeICP基础协议模块与与发送方设备和接收方设备连接,在外围连接上采用兼容IGRS与UPnP两种协议设备的通用接口(如USB、RJ45、PS/2接口等);GDHomeICP基础协议模块和多协议分析处理模块则通过基础协议子模块定义的接口进行通信,该接口为软件接口,具体接口名称与参数名称可由实现者自行定义,但消息格式、消息类型以及消息属性等定义必须遵循GDHomeICP基础协议要求。
本实施例实现数字家庭设备间多协议互联互通的方法为,将上述GDHomeICP基础协议模块和多协议分析处理模块嵌入适配器中。如图4所示,包括以下步骤:
a)适配器的GDHomeICP基础协议模块从发送方设备接收消息后,将消息存储在消息接收缓冲区等待基础协议模块的处理;
b)消息提取与转发子模块从消息接收缓冲区中获取数据报,并根据数据报头部的协议描述字段01-Version内容,判断该数据报是否是GDHomeICP协议数据报;如果01-Version内容为GDHomeICP/1.0,则说明该数据报属于GDHomeICP基础协议,由于多协议互联互通适配器是基于GDHomeICP基础协议的,因此该数据报直接被基础协议模块处理而继续下面的步骤;如果01-Version内容为IGRS/1.0或UDA/1.0,则说明该数据报是IGRS或UPnP协议的,GDHomeICP基础协议模块不能对其直接进行处理,需要转发至多协议分析处理模块进行处理,并设置是否处理标志位为1,表示需要待多协议分析处理模块处理后返回给基础协议模块进行处理,转到步骤f);
c)该数据报存放在消息处理缓冲区等待消息的进一步分析和处理;
d)消息分析子模块从消息处理缓冲区读取数据报,根据数据报中消息类型描述字段即01-MessageType中的内容,判断该数据报属于何种消息,并分别调用消息处理子模块的不同消息类型的处理方法接口;
e)消息处理子模块将数据报相应字段的数据进行修改和处理,并设置是否处理标志位为0,表示已经过基础协议模块的处理;
f)数据报存放在多协议分析处理模块的消息分析缓冲区内等待处理;
g)分析处理子模块从消息分析缓冲区读取数据报,对数据报进行拆包预处理,将数据报的SOAP与GENA封装去除,只留下字段、属性与字段数据,形成分析结果表;
h)拆包预处理后,根据协议描述字段数据,确定该数据报属于何种协议,如果该消息的是否处理标志位为1,则表明需要基础协议模块针对该消息的具体类型采取相应处理与操作,因此通过查表的方式用与该协议相对应的GDHomeICP基础协议的字段与属性替代(GDHomeICP基础协议的字段与属性对应表的举例如表4和表5所示),并以GDHomeICP基础协议消息格式要求进行重新打包封装,形成新的数据报,然后发送到GDHomeICP基础协议,即转到步骤c);否则,如果是否处理标志位为0,说明该消息是由基础协议模块处理过的数据报,则继续下面的步骤;
表4 设备描述文档属性字段对应表
GDHomeICP |
UPnP |
IGRS |
root |
root |
root |
deviceTemplateVersion |
specVersion |
deviceTemplateVersion |
device |
device |
device |
protocolVersion |
无 |
protocolVersion |
major |
major |
major |
minor |
minor |
minor |
deviceType |
deviceType |
deviceType |
deviceName |
friendlyName |
deviceName |
manufactureURL |
manufactureURL |
manufactureURL |
modelDescription |
modelDescription |
modelDescription |
modelName |
modelName |
modelName |
modelNumber |
modelNumber |
modelNumber |
modelURL |
modelURL |
modelURL |
serialNumber |
serialNumber |
serialNumber |
UDN |
UDN |
UDN |
DeviceIconURL |
iconList |
DeviceIconURL |
icon |
icon |
icon |
mimetype |
mimetype |
mimetype |
width |
width |
width |
height |
height |
height |
depth |
depth |
depth |
url |
url |
url |
joinedGroupList |
无 |
joinedGroupList |
deviceSecurityIdList |
无 |
deviceSecurityIdList |
serviceList |
serviceList |
serviceList |
serviceId |
serviceId |
serviceId |
serviceName |
无 |
serviceName |
serviceSecurityIdList |
无 |
serviceSecurityIdList |
无 |
SCPUDURL服务描述的URL |
无 |
无 |
controlURL |
无 |
无 |
eventSubURL |
无 |
表5 设备描述文档属性类型对应表
GDHomeICP |
UPnP |
IGRS |
deviceTemplateVersionType |
无 |
deviceTemplateVersionType |
deviceTemplateType |
无 |
deviceTemplateType |
protocolVersionType |
无 |
protocolVersionType |
unsignedInt |
int必须为0/1 |
unsignedInt |
anyURL |
uri |
uri |
string |
textOnly |
string |
joinedGroupListType |
无 |
joinedGroupListType |
deviceGroupType |
无 |
deviceGroupType |
deviceSecurityIdListType |
无 |
deviceSecurityIdListType |
serviceListType |
无 |
serviceListType |
serviceSecurityIdListType |
无 |
serviceSecurityIdListType |
无 |
SCPUDURL |
无 |
i)采用内置的多协议字段与属性映射表,通过查表的方式进行字段与属性映射;
j)根据接收方协议格式要求,对该数据报进行重新封装;
k)将重新封装处理后的数据报发送至GDHomeICP基础协议模块的消息发送缓冲区;
l)消息提取与转发子模块提取消息发送缓冲区中的数据报,然后发送到接收方设备,从而完成一次设备间的互连互通。
本实施例多协议互联互通方法的工作原理如下:首先由GDHomeICP基础协议模块接收来自发送方设备的消息数据报,并判断该数据报所属的协议类型。如果该数据报属于GDHomeICP基础协议,则该数据报直接由GDHomeICP基础协议模块处理,处理后将该数据报转发至多协议分析处理模块,对数据报进行分析、拆包,并提取字段、属性和字段数据形成分析表,最后通过映射并按照接收方协议格式要求对数据报重新封装后,交由GDHomeICP基础协议模块发送至接收方设备。否则,如果该数据报是其他协议如IGRS、UPnP类型,则转发到多协议分析处理模块,对数据报进行分析、拆包,并提取字段、属性和字段数据形成分析表,并采用GDHomeICP基础协议消息格式进行封装并返回至基础协议模块,由基础协议模块针对不同消息类型对消息进行相应处理。处理后返回,多协议分析处理模块则根据接收方协议格式要求重新封装消息内容后,再次转交于基础协议模块发送至接收方设备。