iOS-DLNA(UPnP概述)

1,129 阅读9分钟

DLNA

DLNADIGITAL LIVING NETWORK ALLIANCE,数字生活网络联盟) 其前身是DHWGDigital Home Working Group,数字家庭工作组),成立于2003年6月24日,是由索尼、英特尔、微软等发起成立的一个非营利性的、合作性质的商业组织。2017年2月20日,DLNA在其官网宣布:本组织的使命已经完成,已于2017年1月5日正式解散,相关的认证将移交给SpireSpark公司,未来不会再更新DLNA标准。 image.png DLNA传输模块(设备的发现,控制和媒体的管理)。这个功能组件其采用了UPnP Device Architecture 1.0UPnP AV 1.0UPnP Printer:1

UPnP

通用即插即用(Universal Plug and Play,简称UPnP)是由通用即插即用论坛(UPnP™ Forum)推广的一套网络协议。该协议的目标是使家庭网络(数据共享、通信和娱乐)和公司网络中的各种设备能够相互无缝连接,并简化相关网络的实现。UPnP通过定义和发布基于开放、因特网通讯网协议标准的UPnP设备控制协议来实现这一目标。

关于UPnP协议栈

UPnP协议栈基于标准IP协议,脱离底层的网络介质。主要由包含:
TCP/IPTransmission Control Protocol/Internet Protocol,传输控制协议/因特网协议)
HTTPHyperText Transfer Protocol,超文本传输协议)
SSDPSimple Service Discovery Protocol,简单服务发现协议)
GENAGeneral Event Notification Architecture,通用事件通知架构)
SOAPSimple Object Access Protocol,简单对象访问协议)
XMLExtensible Markup Language,可扩展标记语言)等协议规范。

计算机网络体系结构知识点

image.png

  • UPnP是一个多层协议构成的框架体系,每一层都以相邻的下层为基础,同时又是相邻上层的基础。直至达到应用层为止。该图中的最下面是就是IPTCP共两层,负责设备的IP地址。
  • 三层是HTTPHTTPUHTTPMU,这一层属于传送协议层。传送的是内容都经过封装后,存放在特定的XML文件中的。对应的SSDPGENASOAP指的是保存在XML文件中的数据格式。
  • 第四层是UPnP设备体系定义,仅仅是一个抽象的、公用的设备模型。任何UPnP设备都必须使用这一层。
  • 第五层是UPnP论坛的各个专业委员会的设备定义层,在这个论坛中,不同电器设备由不同的专业委员会定义,例如:电视委员会只负责定义网络电视设备部分,空调器委员会只负责定义网络空调设备部分……,依此类推。所有的不同类型的设备都被定义成一个专门的架构或者模板,供建立设备的时候使用。可以推知,进入这一层,设备已经被指定了明确用途。当然,这些都必须遵守标准化的规范。从目前看,UPnP已经可以支持大部分的设备:从电脑、电脑外设,移动设备和家用消费类电子设备等等,无所不包,随着这个体系的普及,将可能有更多的厂家承认这一标准,最终,可能演化为公认的行业标准。
  • 最上层,也就是应用层,由UPnP设备制造厂商定义的部分。这一层的信息是由设备制造厂商来填充的,这部分一般有设备厂商提供的、对设备控制和操作的底层代码,然后就是名称序列号、厂商信息之类的东西。

关于UPnP术语

UUID:含义是通用唯一识别码(Universally Unique Identifier),其目的是让分布式系统中的所有元素,都有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。其格式为xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx(8-4-4-16),分别为当前日期和时间,时钟序列,全局唯一的IEEE机器识别号,如果有网卡,从网卡mac地址获得,没有网卡以其他方式获得。

UDN:单一设备名(Unique Device Name)基于UUID,表示一个设备。在不同的时间,对于同一个设备此值应该是唯一的。

URIWeb上可用的每种资源HTML文档、图像、视频片段、程序等。由一个通用资源标志符(Universal Resource Identifier)进行定位。 URI一般由三部分组成:访问资源的命名机制、存放资源的主机名、资源自身的名称路径表示。考虑下面的URI,它表示了当前的HTML4.0规范http://www.webmonkey.com.cn/html/html40/它表示一个可通过HTTP协议访问的资源,位于主机www.webmonkey.com.cn上,通过路径/html/html40访问。

URL:是URI命名机制的一个子集,URLUniform Resource Location的缩写,译为统一资源定位符。通俗地说,URLInternet上用来描述信息资源的字符串,主要用在各种www客户程序和服务器程序上。采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。

URNURL的一种更新形式,统一资源名称(Uniform Resource Name)。唯一标识一个实体的标识符,但是不能给出实体的位置。标识持久性Internet资源。URN可以提供一种机制,用于查找和检索定义特定命名空间的架构文件。尽管普通的URL可以提供类似的功能,但是在这方面URN更加强大并且更容易管理,因为URN可以引用多个URL

关于UPnP组件

完整的UPnP服务系统由支持UPnP的网络和符合UPnP规范的设备共同构成的。 整个系统是由DeviceService、和Control Point三部分所构成。 image.png 设备(Device) 这里是指符合UPnP规范的设备。设备是提供服务的网路实体,是一个逻辑概念,一个屋里设备可以包含一个或者多个逻辑设备。例如一台PC可以有两个逻辑设备———视频播放器和图片浏览器。

服务(Service) 服务是UPnP中最小的可控单元,它包括一系列可控制而动作和一组记录该服务目前情况的状态。服务是依赖于设备存在的。

控制点(Control Point) 控制UPnP设备工作的网络终端,主要功能包括获取设备描述和相关服务列表;获取感兴趣的服务描述;发出控制消息控制设备动作;向感兴趣的服务发出订阅消息,以便当服务状态改变时,自动获得时间通知。

关于UPnP工作原理

UPnP设备的发现和控制分为6个步骤:寻址、发现、描述、控制、事件及展现。

寻址(Addressing) UPnP技术是架构在IP网络之上。因此拥有一个网络中唯一的IP地址是UPnP设备正常工作的基础。UPnP设备首先查看网络中是否有DHCP服务器,如果有那么使用DHCP分配的IP即可;如果没有则需要使用LLA技术来为自己找适合的IP地址。
另外,在UPnP运行过程中,UPnP设备都需要周期性检测网络中是否有DHCP服务器存在,一旦发现有DHCP服务器,就必须终止使用LLA技术获取的IP地址,改用DHCP分配的IP地址。

发现(Discovery) 可分成两种情况,一种是在有控制请求之后,在当前的网络中查找有无对应的可用设备;另一种情况是某一设备接入网络、取得IP地址之后,就开始向网络广播自己已经进入网络,即寻找控制请求。

描述(Description) 简单说,这是声明自己是什么样的设备,例如名称、制造厂商、序列号码等等。刚开始发现设备后,控制点对这个设备的了解还很少,需要依据ULR找到该设备的描述文件,从这些文件中读取更多的描述信息。描述信息的范围很广,一般都是由设备的制造厂商提供的。主要的描述项目有:控制的模式名称和模式号码、设备序列号、制造厂商名称、厂商的WEBULR等等。这些一般都存放在特定的XML文件中。

控制(Control) 控制点找到设备描述之后,会从描述中提炼出要进行的操作并获悉所有的服务;对每个UPnP设备来说,这些描述必须是很确切、很详细的,描述中可能包含有命令或行为列表、服务响应信息、用到的参数等等。对于服务的每个行为,也伴有描述信息:主要是整个服务进行期间的变量、变量的数据类型、可用的取值范围和事件的特征。
要控制某个设备,控制点必须先发送一个控制行为请求,要求设备开始服务,然后再按设备的ULR发送相应的控制消息,控制消息就是放置在XML文件中的那些SOAP格式的信息。最后,服务会返回响应信息,指出服务是成功或是失败。

事件(Eveting) 在服务进行的整个时间内,只要变量值发生了变化或者模式的状态发生了改变,就产生了一个事件,系统将修改上述提到的事件列表的内容。随之,事件服务器把事件向整个网络进行广播。另一方面,控制点也可以事先向事件服务器预约事件信息,保证将该控制点感兴趣的事件及时准确地传送过来。
广播或预约事件,传送的都是事件消息,事件消息也放在XML文件中,使用的格式是GENA。设备投入工作之前的准备―――初始化过程,也是一个事件,初始化需要的各种信息也是用事件消息传送的。包括的内容主要是:变量初始值,模式的初始状态等等。

展示(Presentation) 只要得到了设备的ULR,就可以取得该设备表达页面的ULR,然后可以将此表达纳入用户的本地浏览器上。这部分还包括与用户对话的界面,以及与用户进行会话的处理。 UPnP工作机制