基于WebSocket的网络设备自发现机制

2013-07-25 02:27周东仿
计算机工程与设计 2013年2期
关键词:服务端局域网客户端

周东仿,孟 宁

(中国科学技术大学软件学院,江苏苏州215123)

0 引言

网络和智能设备发展的最终目标都是为人类服务的,给人类提供便捷、高效、舒适、安全的生活环境,如何将个人或家庭所拥有的各种智能设备互联互通而不管其分散在何处成为一个新的研究课题。在将来会出现各种智能设备,用户希望不论在何时何地都能随心所欲地获取属于自己的设备资源信息,正是为了满足这个社会需求,个人域互联网络应运而生,这是一种新的网络概念。它以个人或家庭为单位,把个人或家庭所拥有的、分布在不同地理位置的各种智能电子设备接入互联网后,通过自发现、自组织、互连在一起形成一种新网络,在这种新网络中各种智能设备之间可以互相通信,基于设备自动发现机制的应用能够进一步实现资源共享和协同服务。这样它既能够提供多样化的服务又能提供个性化的服务,如安防监控、远程办公、设备管理、媒体资源传输与共享等。个人域互联网络的提出将改变当今信息时代普通用户的家庭生活方式和工作方式,以个人域互联网络为基本单元的一个有序化网络体系结构的诞生,为眼下正在如火如荼发展的物联网技术、云计算技术注入了生机和活力。为充分而有效的利用数字设备,融合和互通已是大势所趋。

1 概述

1.1 动态组网技术现状及不足

为满足现代消费者对各种智能电子设备管理与使用的新需求,为充分利用家庭、企业、个人现有的数字终端设备,打破这些设备所处于的“信息孤岛”状态,实现各种智能设备之间的自动发现与关联,从而可以进行资源共享和协同服务,国内外都做了大量的研究,并且形成了多种标准,如:闪联标准IGRS技术,Java智能网络框架Jini技术,开放服务网关OSGI技术,家庭音视频交互技术HAVi,数字生活网联盟DLNA技术,其中典型的为DLNA技术和IGRS技术,DLNA的全称是 DIGITAL LIVING NETW0RK ALLIANCE,它以UpnP作为DLNA的基础协议,它的设计目的是为了解决个人电脑、消费电器、移动电子设备的互联互通,即在家庭内建立一个集中管理个人电脑、家电和移动电子设备的互操作性网络。事实上,DLNA并不是创造性技术,而是形成一种大家都可以遵守的规范[1-2]。由于它是以UPnP协议作为基础协议,需要相应系统及路由器的支持,且一般仅能在局域网内工作,缺乏考虑同外网的互联互通。另外还存在如下问题:

组网过程复杂,实现起来繁琐,设备发现效率较低;只考虑了设备之间的资源共享,没有采用任何安全机制;只是简单地对智能设备进行了分类,所覆盖的设备范围较小[3];设备以监听组播地址的方式实现其他设备在线状态的发现及服务的发现,该监听方式具有一定的不确定性和不稳定性。

闪联标准IGRS也同样存在上述这些问题,此外,在闪联标准中缺少对网络的管理机制进行完善和详细的描述,各节点处于相同地位,因此协同工作困难[4]。DLNA、IGRS在家庭局域网内进行设备间的资源共享是没有问题的,但是在移动互联网的背景下,这些设备并不是固定在家庭或者某个区域内部,因此像DLNA、IGRS等技术都无法满足移动互联网条件下的用户需求。

事实上,已有一些研究者认识到了各种标准在发现机制上存在的一些不足,并提出了一些改进方法,如文献[5]中提出了对闪联协议的改进,但仍然是通过复杂的算法来查找宣告设备,整个协议实现起来较复杂、较繁琐,一般用户操作起来也较困难;如文献[6-7]提出了NAT穿透技术,发现效率也不高;文献[8]提出了借助网关技术,还有文献[9]中,通过设计非常复杂繁琐的服务器来实现非常有限的资源共享功能,花费的代价较大,实现的效率较低,更无法处理大量的并发数据连接,缺少通用性。

1.2 ADDP机制的提出

上述所列出的设备发现机制一般仅能实现局域网内的发现,在互联网中的发现实现起来较复杂、较困难,而ADDP机制的出现可以解决移动互联网条件下的设备发现问题。ADDP即Auto Device Detecting Protocol设备自发现协议,是一种应用层的新协议,它基于TCP/IP协议族,通信机制采用功能强大的WebSocket技术,使用现有几种非常成熟的网络规范,通过实时自动更新DeviceList(设备列表),在互联网范围内实现了智能设备之间的自动发现、自动管理、自动提供服务的自治网络架构。通过运用ADDP机制,智能设备可以实时动态地加入某个网络,并向所在网络广播本设备信息及提供相应的服务,实现了自动感知网络上的其他设备和服务。即使设备是“零配置”也可自动发现各种不同类型的设备,提高了不同智能设备之间的互操作能力和协同性。ADDP机制屏蔽了各种设备、网络之间的差异,也屏蔽了它们之间的接口,它将通信消息统一封装为JSON格式,充分利用WebSocket全双工、实时性的通信特点[10],通过建立WebSocket长连接的方式,实现智能设备之间的实时互联互通。它与底层互联机制无关,可支持有线、无线、蓝牙、Zigbee等多种连接方式,从而能够广泛支持不同网络、不同设备之间的互联互通,提高了其通用性。它可作为其他应用系统实现的底层,可承载图片、音视频信息及高速数据传输等多种应用。它具有发现范围广、发现效率高、安全稳定、简单方便可行等特点,ADDP发展的终极目标是家庭或个人域互联网络的高度智能一体化。

2 技术原理

2.1 WebSocket技术

个人域互联网络要求接入的设备能够实时动态发现和组网,所以采用WebSocket技术进行通信。WebSocket是整个ADDP机制运行的基础,没有WebSocket长连接的建立,整个ADDP机制便无法实现。

WebSocket协议是一种基于一个TCP连接的、可以实现全双工通信的新协议,即不仅客户端能向服务端发送数据,而且服务端也可以主动推送数据到客户端。其通信过程是首先由客户端发送请求头信息到服务端,然后服务端对请求头信息进行判断是否是WebSocket请求,如果是,则会发送一次握手信息到客户端。仅需这一次握手,客户端和服务端之间就“开辟”了一条快速通道,两者之间就可以互相传送数据了。与HTTP协议相比,它有更加轻量级的头信息,把HTTP协议给轻量化了;减少了不少交互信息和网络吞吐量,节省了带宽,提高了通信效率,基本解决了Web实时性的问题。人们设计它的目的也是在客户端和服务端之间提供一种有状态的、双向的、持续的通信方式,也即在它们之间形成长连接。这项技术实现了以前无法通过Web实现的高实时性、高交互性的网络应用[11-12]。

2.2 基于WebSocket的ADDP机制架构

设备自发现机制基本组成部分包括设备端和账户服务器端,WebSocket使得客户端与服务端的通信变得实时高效、节省带宽又不浪费过多的数据流量。设备自发现系统的框架结构如图1所示。

图1 设备自发现系统的框架结构

ADDP客户端与账户服务器建立WebSocket连接成功后,从设备配置信息库中提取账号、设备编号、IP地址等设备信息,其工作分为两种情况:

(1)与账户服务器之间网络通信良好时,ADDP客户端与账户服务器直接通信,通过WebSocket维持连接,由账户服务器提供设备配置信息库;(2)与账户服务器无法通信时,ADDP设备向局域网内发送广播,获取设备列表和设备信息,在设备本地建立设备配置信息库。

其中,图1中虚线上半部分表示互联网中的设备发现情况,虚线下半部分表示局域网中的设备发现情况,实线箭头部分是情况 (1),虚线箭头部分代表情况 (2)。

2.3 客户端

客户端的功能主要包括发起与账户服务器的连接请求,连接成功后进行设备信息注册,发送 DeviceID(设备编号)、DeviceName(设备名称)、DeviceType(设备类型)、AccountID(账户编号)和AccountPasswd(密码)到账户服务器上注册设备;将这些信息记录到设备配置信息库中,设备便能够从相应的数据源获得所有能访问到的设备列表。每当设备列表发生变化时,通过WebSocket自动推送回客户端,进行实时的更新设备列表信息。当账户服务器因为网络连接问题或账户服务器自身问题无法提供设备自动发现服务时,设备会自动进入ADDP机制客户端的局域网模式,局域网模式类似UPnP的简单服务发现协议SSDP[13],ADDP机制客户端会向局域网广播自身信息,局域网内同一账号的设备会响应自身的设备信息,以达到局域网内设备自动发现的目的。ADDP机制客户端具体工作流程描述如图2所示,其中AS为AccountServer(账户服务器)的缩写,WS为 WebSocket的缩写,DL为 DeviceList(设备列表)的缩写,下同。

图2 ADDP客户端工作流程

ADDP机制客户端启动后,首先发起与AS建立WS连接请求,一旦建立成功便发送当前设备信息到AS;AS收到设备信息后,便把当前设备信息写入到数据库中,从而实现更新服务器DL;然后把最新的DL推送给与AS建立WS连接的其他设备上,从而保证每个设备端获取到的DL都是最新的。当ADDP机制客户端与AS建立连接失败时,将转入ADDP机制局域网模式。

2.4 服务端

服务器端主要负责接受客户端请求以及接收并存储、更新ADDP机制客户端发送的设备信息,其功能包括:接收并处理设备注册请求、接受并处理设备信息请求、管理功能等,具体如下:

(1)接收并处理设备注册请求功能

请求包含3个字段:DeviceID、AccountID和Account-Passwd,用户身份认证通过后只需将 DeviceID、AccountID存入关系表中即可。

(2)接收并处理设备信息请求功能

AS启动后将监测是否接到设备上线信息,当某个设备的信息发生变化时,AS负责接收设备信息更新请求,然后更新数据库中DL,AS更新完毕后将发送更新的DL给所有在线的其他设备,这些设备应该与发生变化的设备在同一个账号下,并且与AS建立了WebSocket连接。

(3)管理功能

管理功能包括注册账号、用户登录认证等用户管理功能;增删改查设备信息表;增删改查用户和设备的关系表等。

2.5 ADDP机制通信协议规格

ADDP客户端和服务端通过协议消息进行通信,协议消息用JSON格式进行描述,客户端首先把设备信息打包成JSON各式发给AS,AS收到该数据包后更新DL并发给在线的其他设备,从而实现了设备之间的相互发现。如请求和宣告消息采用如下的格式:

{

"ADDP":{

//Auto Device Detection Protocol Meta Data

"Version":"1.0.0"

}

"ADDPMsgType" : "DeviceAdvertisement",

/* ADDP DeviceAdvertisement Message*/

}

其中,ADDP(即Auto Device Detection Protocol)用来记录ADDP的协议头信息,目前定义了Version,Version格式采用 x.y.z方式表述,表示协议版本号,本例中为1.0.0。本协议规定当收到一个高于自身实现版本的消息时,应该抛弃该消息。

ADDPMsgType则指明了消息的类型,在本例中为设备宣告DeviceAdvertisement,从设备发向账号服务器消息类型还有设备变更 DeviceChanged、请求查找其他设备 DeviceFindStart、停止查找其他设备DeviceFindStop;从账号服务器发向设备的消息类型有账号服务器返回该用户账号下的所有设备信息ASDeviceList、账号服务器主动推送变更后的设备信息ASChangedDevice以及返回请求错误信息ASError,具体消息类型见表1。

表1 ADDP协议消息类型列表

各类型消息通过使用完整的JSON格式描述如下:

{

"addp":{

//Auto Device Detection Protocol Meta Data

"version":"1.0.0"

},

"type" : "消息类型序列号",

"list" : [

{

"id" :"设备唯一的序列号",

"name" :"设备名称",

"type" :"设备类型序列号",

"desc" :"设备描述信息",

"url" :"提供服务的设备IP和服务信息的主路径",

"online" :"设备是否在线"

},

...

]}

3 测试及分析

主要测试系统的发现时间、发现效率、发现范围以及对设备资源信息进行管理的效果。在设备发现测试中,用装有Ubuntu10.04的虚拟机来模拟智能设备,虚拟机内存为512M。设备发现时间的计算公式为1所示

式中:T——设备发现时间,T1——设备信息搜集并发送给AS上的时间,T2——服务器的处理时间 (包括写入数据库并进行读取的时间),T3——服务器处理完毕后推送给其他设备的平均时间,T3的计算公式为2所示

式中:T31——AS推送给设备D1所花费的时间,T32——AS推送给设备D2所花费的时间,T3n——AS推送给设备Dn所花费的时间,N——设备的个数。T4——设备收到并进行更新的时间。这里假设设备已注册,不考虑设备注册时间,不考虑设备在具体的网络环境中获得IP地址并接入互联网的时间。具体设备发现时间测试数据见表2。

表2 设备发现时间测试数据

当设备为1台时,表示服务器发现该台设备上线的时间。在本测试中,只是测试10种同类型设备,在相同实验环境下的发现时间,这主要是实验平台的限制,而实际情况设备的类型及设备所处的网络环境都有可能不同。这组数据的图表表示如图3所示。

图3 设备发现时间关系

由测试数据与其折线图,可以看出,设备发现时间与网络的复杂度呈现出一个不规则曲线关系。设备发现时间是处在一个一定大小的区间 (3-43毫秒)。

一般互联互通技术标准中仅能实现局域网中的设备发现,并且发现时间数量级为秒级。从本测试结果中可知:本设备发现机制发现时间仅为数毫秒。

以上测试结果表明:ADDP机制不仅可以实现设备之间的相互发现,而且发现时间比同类标准少,发现效率比同类标准高,发现范围比同类标准广。

4 结束语

本文通过利用最新的WebSocket技术,提出了一种新的、快速而又高效的设备自发现机制,提出了个人域互联网络的相关概念,实现了基于该网络的设备自发现模型。最后通过实验进行测试,并对测试结果进行分析,验证了ADDP机制的正确性和可行性。本论文只是对ADDP机制做了基础分析和研究,现阶段只是简单实现了智能设备之间的无缝连接、相互发现、资源共享,并对设备进行统一管理。由于ADDP机制还不完善,尤其是上层应用框架还正在设计,处于发展的初级阶段,在一些方面存在尚未精确的定义;在协议转换方面的技术细节也需要进一步研究和确定,这些都需要我们继续努力和改进。

[1]WANG Jing.The research of wireless digital home network[D].Xi'an:Northwest University,2010(in Chinese).[王晶.无线数字家庭网络的研究[D].西安:西北大学,2010.]

[2]LE Xing.Digital home networking standard-the DLNA [J].Practical Audio-Visual Technique,2008(9)(in Chinese).[乐行.数字家庭的网络标准-DLNA[J].实用影音技术,2008(9).]

[3]LIU Yun.The research of home network standard[D].Chengdu:University of Electronic Science and Technology of China,2006(in Chinese).[刘云.家庭网络标准研究 [D].成都:电子科技大学,2006.]

[4]YE Mao.Research and design of IGRSprotocol and device management[D].Chengdu:University of Electronic Science and Technology of China,2009(in Chinese).[叶茂.闪联协议研究和设计及其设备管理机制的研究与改进[D].成都:电子科技大学,2009.]

[5]ZHAN Hongyan.Research of IGRSand realization and perfection of its key module[D].Xi'an:Xi'an University of Science and Technology,2006(in Chinese).[詹红艳.闪联协议的研究及其关键模块的实现与改进 [D].西安:西安科技大学,2006.]

[6]WU Runkai.The study and application of interconnection between digital homes[D].Guangzhou:South China University of Technology,2011(in Chinese).[吴润凯.数字家庭间互联互通方法的研究与应用 [D].广州:华南理工大学,2011.]

[7]ZHANG Binhua.The study and application of digital home interconnection technology[D].Guangzhou:South China University of Technology,2010(in Chinese).[张炳华.数字家庭互联互通方法研究及其应用[D].广州:华南理工大学,2010.]

[8]WANG Mingjie.The study and realization of smart home gateways adaptivity[D].Chengdu:University of Electronic Science and Technology of China,2011(in Chinese).[王明杰.家庭网关的自适应性的研究与实现[D].成都:电子科技大学,2011.]

[9]ZHANG Yanhong.The research and implementation of the plug and control protocol stack in the digital home[D].Nanjing:Nanjing Polytechnic University,2007(in Chinese).[张艳红.数字家庭环境下智能设备即插即控协议栈的研究及实现 [D].南京:南京理工大学,2007.]

[10]Peter Lubbers,Brian Albers,Frank Salim.Pro HTML5 programming:Powerful APIs for richer internet application development[M].USA:Apress,2010:137-168.

[11]IETF HyBi Working Group.The WebSocket protocol[EB/OL].[2011-12-30].http://tools.ietf.org/html/draft-ietf-hybithewebsocketprotocol-17.

[12]W3C.The WebSocket API[EB/OL].[2012-05-08].http://dev.w3.org/html5/websockets/#websocket/.

[13]ZENG Hui.UPnP protocol research and applied techniques development[D].Nanjing:Nanjing University of Posts and Telecommunications,2007(in Chinese).[曾辉.UPnP协议研究及应用技术开发[D].南京:南京邮电大学,2007.]

猜你喜欢
服务端局域网客户端
轨道交通车-地通信无线局域网技术应用
基于VPN的机房局域网远程控制系统
如何看待传统媒体新闻客户端的“断舍离”?
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
新时期《移动Web服务端开发》课程教学改革的研究
基于802.1Q协议的虚拟局域网技术研究与实现
局域网性能的优化
摸清黑客套路防范木马侵入