UPNP协议的分析及实现Word文档下载推荐.docx
- 文档编号:22210113
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:42
- 大小:614.57KB
UPNP协议的分析及实现Word文档下载推荐.docx
《UPNP协议的分析及实现Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《UPNP协议的分析及实现Word文档下载推荐.docx(42页珍藏版)》请在冰豆网上搜索。
XMl;
工作流程;
IntelSDK;
数据包
AnalysisandrealizationofUPnPprotocol
Abstract
Withthegreatdevelopmentofcomputerindustryandcomputernetworktechnology,embeddedsystemandthehomenetworkingcommunicationisbecomingapopularresearchfieldnow.Atthesametime,duetothedevelopmentofhomenetworkingandthemoreembeddeddevicesinuse,itisurgenttoexploreanewwaytoconnectallkindsofembeddeddevicesinthehomenetworking.
Thekeyofhomenetworkrealizationisthehomenetworkmiddlewaretechnology.Manyfamousinformationdevicecorporationshaveprovidedtheirownnewtechnologyandnewmeanstoresolveit,Especially,UPnPprovidedbyMicrosoft,thehotspotofresearchineverycountrynow,getsthemostextensivesupportandpossesestheenormousdevelopprospect.UPnPistheabbreviationofUniversalPlugandPlay.Itismostlyusedforimplementingintellectualinterconnectingbetweendevices.UsingUPnPprotocoldoesn’tneedthedevicedrivingprograms.Itcanrunoveralmostalloperatingsystems.UPnPwillmakeiteasytobuildthenetworkenvironmentfordevicesinterconnectingintheofficeorhome.
Firstly,thepaperintroducesontheprotocolsUPnPrefersto(suchasSSDP,GENA,SOAP)andfocusesontheanalysisofthetechnologicalprocesstoimplementUPnP.Secondly,basedontheanalysisofthestructureandfunctionalityofthemostcommonlyusedIntelSDK,thepapersummarizesthedesignanddevelopmenttechniquesforUPnPdeviceandcontrolpointusingthisSDKwiththeexampleofdevelopingTVcontrolpointandTVdevice.Finally,utilizingthedatapacketscaughtbytheWiresharkPortable,thepaperanalysesexhaustivelythemessagepacketsofeveryprocess.
Keywords:
UPnP;
homenetwork;
XML;
workprocess;
IntelSDK;
datapackets
目录
论文总页数:
33页
1引言1
2UPnP的结构规范1
2.1UPnP的基本组件1
2.2UPnP部分术语2
2.3UPnP设备协议栈3
2.3.1SSDP协议3
2.3.2SOAP协议3
2.3.3GENA协议3
2.4基于XML的upnp描述4
2.4.1XML简介[2]4
2.4.2TV设备的设备描述编写5
3UPnP实现的工作流程7
3.1寻址(Addressing)8
3.2发现(Discovery)8
3.3描述(Description)9
3.4控制(Control)10
3.5事件(Eventing)10
3.6展示(Presentation)11
4基于Linux的UPnP协议实现的源代码模块12
4.1设备/控制点12
4.2UPnP软件开发包API(upnpSDKAPI)12
4.3WEBServer13
4.4库模块13
4.4.1XML解析模块13
4.4.2SDK中的线程库13
4.4.3HTTP解析器13
4.4.4微型服务器(MiniServer)13
5TV控制点及设备的代码实现14
5.1TV控制点的代码实现14
5.1.1发现、描述的代码实现14
5.1.2订阅服务的代码实现17
5.1.3控制服务的代码实现18
5.1.4退出20
5.2TV设备的代码实现21
5.2.1设置和初始化设备21
5.2.2处理异步请求22
5.2.3发送事件通知23
5.2.4关闭设备24
6UPnP协议消息分析24
6.1发现设备的消息分析24
6.1.1SSDP发现请求24
6.1.2SSDP存在宣告25
6.2描述数据包分析25
6.2.1获取设备描述的请求消息25
6.2.2TV设备的设备描述消息26
6.3事件数据包分析26
6.3.1订阅请求的消息分析26
6.3.2续订请求的消息分析27
6.3.3NOTIFY事件通知消息分析27
6.4控制数据包分析28
6.4.1动作调用的消息分析28
6.4.2查询变量的消息分析29
参考文献31
致谢32
声明33
1引言
UPnP全名是UniversalPlugandPlay,主要是微软在推行的一个标准。
简单的来说,UPnP最大的愿景就是希望任何设备只要一接上网络,所有在网络上的设备马上就能知道有新设备加入,这些设备彼此之间能互相沟通,更能直接使用或控制它,一切都不需要设定,完全的PlugandPlay。
举个例子来说:
Mary在她的计算机中存储了大量数码相机拍摄的照片。
当朋友Karen来拜访时,Mary在起居室拿起与等离子电视机配套的红外线(IR)遥控器,从电视所显示的列表中挑选她感兴趣的照片,向Karen在电视屏幕上展示一下这些照片。
这过程中就使用了UPnP协议。
2UPnP的结构规范
2.1UPnP的基本组件
服务、设备和控制点是UPnP网络的基本组件。
其组件图如图1所示:
图1UPnP组件图
●服务(Service)
在UPnP网络中,最小的控制单元就是服务。
服务描述的是设备在不同的情况下的活动和设备的状态。
例如,时钟服务可以表述为时间变化(状态变化)、当前的时间(时钟的状态)以及设置时间和读取时间两个活动,通过这两个活动.你就可以控制服务。
●设备(Device)
UPnP网络中定义的设备具有很广泛的含义,各种各样的家电、电脑外设、智能设备、无线设备、个人电脑等等都可以成为其中一员。
一个UPnP设备可以是多个服务的载体和多个子设备的嵌套集。
例如一台印表机有提供列印这样的服务;
一台电视有提供收讯的服务,这些都属于设备。
●控制点(ControlPoint)
在UPnP网络中,控制点指的是可以发现并控制其它设备的控制设备。
在UPnP网络中,设备可以和控制点合并。
也就是说,同一个设备,可以同时具有设备的功能和控制点的功能,即可以作为设备提供服务,也可以作为控制点发现和控制其它设备。
2.2UPnP部分术语
●UUID
UUID含义是通用唯一识别码(UniversallyUniqueIdentifier),其目的是让分布式系统中的所有元素,都有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。
其格式为xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx(8-4-4-16),分别为当前日期和时间,时钟序列,全局唯一的IEEE机器识别号,如果有网卡,从网卡mac地址获得,没有网卡以其他方式获得。
●UDN
单一设备名(UniqueDeviceName),基于UUID,表示一个设备。
在不同的时间,对于同一个设备此值应该是唯一的。
●URI
Web上可用的每种资源-HTML文档、图像、视频片段、程序等-由一个通用资源标志符(UniversalResourceIdentifier,简称"
URI"
)进行定位。
URI一般由三部分组成:
访问资源的命名机制;
存放资源的主机名;
资源自身的名称,由路径表示。
考虑下面的URI,它表示了当前的HTML4.0规范:
●URL
URL是URI命名机制的一个子集,URL是UniformResourceLocation的缩写,译为“统一资源定位符”。
通俗地说,URL是Internet上用来描述信息资源的字符串,主要用在各种www客户程序和服务器程序上。
采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。
●URN
URN:
URL的一种更新形式,统一资源名称(URN,UniformResourceName)。
唯一标识一个实体的标识符,但是不能给出实体的位置。
标识持久性Internet资源。
URN可以提供一种机制,用于查找和检索定义特定命名空间的架构文件。
尽管普通的URL可以提供类似的功能,但是在这方面,URN更加强大并且更容易管理,因为URN可以引用多个URL。
2.3UPnP设备协议栈
UPnP定义了设备之间、设备和控制点、控制点之间通讯的协议。
完整的UPnP由设备寻址、设备发现、设备描述、设备控制、事件通知和基于Html的描述界面几部分构成。
UPnP设备协议栈如下图所示:
图2UPnP协议栈[1]
UPnP协议结构最底层的TCP/IP协议是UPnP协议结构的基础。
IP层用于数据的发送与接收。
对于需要可靠传送的信息,使用TCP进行传送,反之则使用UDP。
UPnP对网络物理设备没有要求,可以使用以太网、无线网、IEEE1394、红外进行连接,只要支持IP协议即可。
同时UPnP还可以使用TCP/IP协议族中的其他协议,如ARP、IGMP、DHCP、DNS等。
构建在TCP/IP协议之上的是HTTP协议及其变种,这一部分是UPnP协议的核心部分,所有UPnP消息都被封装在HTTP协议及其变种之中。
HTTP协议的变种是HTTPU和HTTPMU,这些协议的格式沿袭了HTTP协议,只不过与HTTP协议不同的是它们通过UDP而不是TCP来发送消息,并且可以用于多播通信。
2.3.1SSDP协议
简单服务发现协议(SimpleServiceDiscoveryProtocol:
SSDP),内建在HTTPU/HTTPMU里,定义如何让网络上有的服务被发现的协议。
包括控制点如何发现网络上有哪些服务,并取得这些服务的资讯,还有装置本身宣告他提供哪些服务。
该协议运用在UPnP工作流程的设备发现部分。
2.3.2SOAP协议
简易对象访问协议(SimpleObjectAccessProtocol:
SOAP)定义如何使用XML与HTTP来执行远端程序呼叫(RemoteProcedureCall)。
包括控制点如何发送命令消息给设备,及设备接收到命令消息后如何发送响应消息给控制点。
该协议运用在UPnP工作流程的设备控制部分。
2.3.3GENA协议
一般事件通知架构(GenericEventNotificationArchitecture:
GENA)定义在控制点想要监听设备的某个服务状态变量的状况时,控制点如何传送订阅讯息并如何接收通知讯息用的。
该协议运用在UPnP工作流程的事件订阅部分。
2.4基于XML的UPnP描述
2.4.1XML简介[2]
XML(ExtensibleMarkupLanguage)即可扩展标记语言,它与HTML一样,都是SGML(StandardGeneralizedMarkupLanguage,标准通用标记语言)。
XML是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。
扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。
与HTML类似,XML描述的内容封装在开始标签<
标签名>
和结束标签<
/标签名>
之间,一对标签及其封装的内容,如<
movie>
GonewiththeWind<
/movie>
,被称为一个元素。
元素可以嵌套,一个XML文档正是由许多这样的元素嵌套而成的。
元素可以有属性,可赋予属性值。
在实际应用中,人们常常根据需要自定义元素名和属性名,这些名字具有明确易懂的含义。
但是由于应用的繁多,所定义的名字很有可能发生冲突,为此XML引入了命名空间(namespace)的概念,它给出元素名和属性名定义的来源处,允许不同应用使用相同的名字,不致引起混淆。
XML命名空间采用“两段式命名法”定义所谓的“合法名称”,例如“学生:
姓名”。
其中第一段是指代特定命名空间的“命名空间前缀”,第二段是元素或属性的名字,两段之间用西文冒号“:
”分隔。
需要注意的是,“学生:
姓名”和“班主任:
姓名”虽然名称都是“姓名”,但却是两个不同的元素名,因为它们分别由“学生”和“班主任”命名空间定义。
命名空间用URI标识,具有唯一性和持久性,所谓命名空间前缀就是命名空间的缩写表示,XML采用下述“命名空间声明"
来绑定命名空间前缀和命名空间:
xmlns:
【命名空间前缀】=【命名空间名】
其中,xmlns就是XML命名空间的缩写。
例如:
学生=
班主任=
分别定义了命名空间前缀“学生”和“班主任”。
其后,XML就可以用命名空间和名的组合,即合法名称来无岐义地表示不同应用中的元素名和/或属性名,给出元素的描述和属性值的描述。
<
?
xmlversion=”1.0”encoding=”GB2312”?
>
学生:
学生xmlns:
姓名>
李明<
/学生:
班级学生:
数字类型=”中文”>
三年级二班<
班级>
住址学生:
数字类型=”阿拉伯”>
135楼210室<
住址>
学生>
上述XML文档描述了关于学生的相关信息,所采用的元素名和属性名均源自“学生”命名空间。
上面的描述使用了“学生”命名空间定义的4个元素名:
学生、姓名、班级和住址,1个属性名:
数字类型,并对于“学生:
班级”元素的“数字类型”属性赋予属性值“中文”,对于“学生:
住址"
元素的“数字类型"
属性赋予属性值”阿拉伯”。
类似地,可以用XML文档描述关于班主任的相关信息,只是需采用“班主任“命名空间定义的名字。
只要不被其他命名空间声明所覆盖,命名空间声明对于它所说明的所有元素以及这些元素包含的所有内容都有效,这就是所谓命名空间的作用域范围。
2.4.2TV设备的设备描述编写
在UPnP协议中,要实现控制点和设备之间的互相通信,设备的描述文件起着很重要的作用。
对于设备的描述文件,是以XML文件形式存在的。
在论文的第五节,我们会讨论TV设备的代码实现,在这我们就对TV设备的设备描述文件编写进行介绍。
一般来说,设备描述都是基于UPnP论坛上己定义的模板,这些标准化的模板提供一系列基本的服务和预定义的设备类型,厂商可以在其中作出自己的扩充。
对于后面开发的TV设备,因为只是为了阐述UPnP协议的实现,所以自行开发其设备模板及其XML文档,以使其最简化。
根据UPnP规范,包括两个主要部分。
第一部分包括根设备类型、特定厂商、制造商信息,如模块名称和编号、序列号、制造商名称、特定厂商网站URL等。
第二部分包括设备所支持服务的信息。
对于第一部分,为了使设备描述文件更简单,为简单计,省略了厂商名、厂商网址等可选元素,这些省略并不会对系统运行产生任何影响。
下面就是TV设备的设备描述文件:
图3TV设备的设备描述
2.4.2.1基本信息编写
●设备类型
设备类型元素的格式如下:
deviceType>
命名空间:
设备类型:
版本号<
/deviceType>
对于基于标准设备模板的设备,描述文件中这一属性为:
...urn:
schemas-upnp-org...>
我们把设备类型叫做tvdevice,版本号定为1,于是我们得到了一个完整的设备类型元素:
<
urn:
schemas-upnp-org:
device:
tvdevice:
1<
●friendlyname
我们为设备取了一个相对简单的用户友好的别名:
UPnPTelevisionEmulator,于是得到了<
friendlyname>
元素:
friendlyName>
UPnPTelevisionEmulator<
/friendlyName>
接下来需设计的是唯一设备名字(UDN),这是该实例的唯一标识符。
为了保持唯一性,采用设备的名字和设备网卡的MAC地址组合而成。
假设MAC地址为1234567890001,就可以把UDN元素写为:
UDN>
uuid:
Upnp-TVEmulator-1_0-1234567890001<
/UDN>
2.4.2.1设备服务编写
设备所含服务是设备描述的主体部分,它们体现为设备的功能。
在设计时,可根据设备的功能映射确定可提供给控制点的服务。
在这里,TV设备只定义一个control服务。
control服务负责处理TV的开关(power),调整音量(volume)及设置频道(channel),其在设备描述文档中的第一个元素是serviceType,其命名原则与deviceType类似,遵从一定的约定,定义为:
serviceType>
service:
tvcontrol:
/serviceType>
类似地,<
serviceId>
元素定义为:
upnp-org:
serviceId:
tvcontrol1<
/serviceId>
另一需要定义的是服务描述文档的地址<
SCPDURL>
元素,这个元素非常重要,控制点就是通过这个地址来获取后续的服务描述文档。
由于本设备服务描述文档与设备描述文档位于同一目录,名为tvcontrolSCPD.xml,因此该元素为:
/tvcontrolSCPD.xml<
/SCPDURL>
TV控制相关服务最后两个子元素是控制URL和事件URL。
这两个URL是控制点发送动作请求和订阅请求的URL。
定义为:
controlURL>
/upnp/control/tvcontrol1<
/controlURL>
eventSubURL>
/upnp/event/tvcontrol1<
/eventSubURL>
3UPnP实现的工作流程
图4UPnP实现的工作流程
稍微了解有哪些通讯协议后,我们来看UPnP是如何运作的。
图4是UPnP的运作流程,我们先介绍各部分在做什么,再做详细介绍:
0.控制点跟设备都先取得IP地址才能做之后的沟通。
1.控制点寻找整个网络上的UPnP设备,而设备同时也要宣告他本身的存在。
2.控制点取得设备的描述,这包括设备提供什么样的服务。
3.控制点发出动作信息(对设备操作的命令信息)给设备。
4.控制点监听设备的状态,当状态改变时做出相应的处理动作。
5.控制点利用HTML界面来控制设备和监看设备状态。
3.1寻址(Addressing)
UPnP网络的基础是TCP/IP协议族,这就决定了每一个UPnP组件(设备和控制点)必须分配一个IP地址。
一个UPnP设备寻址的一般过程是:
首先向DHCP服务器发送DHCPDISCOVER消息,如果在指定的时间内,设备没有收到DHCPOFFERS回应消息,设备必须使用Auto-IP完成IP地址的设置。
在选中一个地址之后,设备测试此地址是否在使用。
为了测试选择的地址是否未被占用,设备必须使用地址分辨协议(ARP)。
使用AutoIP的设备必须定时检测DHCP服务器是否存在,若存在,设备必须释放AutoIP分配的地址,此时设备必须取消所有的广告消息并重新发出新的。
一个设备可
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- UPNP 协议 分析 实现