资源预览内容
第1页 / 共28页
第2页 / 共28页
第3页 / 共28页
第4页 / 共28页
第5页 / 共28页
第6页 / 共28页
第7页 / 共28页
第8页 / 共28页
第9页 / 共28页
第10页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
UPnP 基本原理以及在 NAT 中的应用作者: | 上传时间:2012-06-01 | 关键字:网络大爬虫 5-NAT 专题 1 摘要随着计算机产业以及计算机网络技术的迅猛发展,越来越多嵌入式设备的出现和家庭网络的发展,实现各种设备的互联互通已经成为人们的迫切需求,而实现家庭网络互联互通的关键是家庭网络的中间件技术。业界各大厂商都提出了自己的解决方案,其中以微软提出的 UPnP 最具有发展前途,也获得了最广泛的支持,目前 UPnP 基本是家庭网络设备必须支持的特性之一。UPnP 是通用即插即用( Universal Plug and Play)的缩写,主要用于设备的智能互联互通,使用 UPnP 协议不需要设备驱动程序,它可以运行在目前几乎所有的操作系统平台上,使得在办公室、家庭和其他公共场所方便地构建设备互联互通成为可能。本文介绍了 UPnP 所定义的基本协议(如 SSDP、GENA、SOAP 等),重点分析了 UPnP 实现的基本工作流程,并通过抓包工具捕获数据包,对各种流程传递的协议报文进行详尽分析,最后结合 NAT 技术,重点叙述 UPnP 在 NAT 技术中的应用。2 UPnP 的结构规范UPnP 最大的愿景是希望任何设备一旦连接上网络,所有在网络上的设备马上就能知道有新设备加入,这些设备彼此之间能互相通信,更能直接使用或者控制它,一切都不需要人工设置,完全的即插即用。2.1 UPnP 的基本组件服务、设备和控制点是 UPnP 网络的基本组件,它们之间的关系图如图 1 所示:图 1 UPnP 组件图 设备(Device)UPnP 网络中定义的设备具有很广泛的含义,各种各样的家电、电脑外设、智能设备、无线设备、个人电脑等等都可以称之为设备。一台 UPnP 设备可以是多个服务的载体或多个子设备的嵌套。 服务(Service)在 UPnP 网络中,最小的控制单元就是服务。服务描述的是指设备在不同情况下的动作和设备的状态。例如,时钟服务可以表述为时间变化值、当前的时间值以及设置时间和读取时间两个活动,通过这些动作,就可以控制服务。 控制点(Control Point)在 UPnP 网络中,控制点指的是可以发现并控制其他设备的控制设备。在UPnP 网络中,设备可以和控制点合并,为同一台设备,同时具有设备的功能和控制点的功能,即可以作为设备提供服务,也可以作为控制点发现和控制其他设备。2.2 UPnP 的部分术语 UUIDUUID 含义是通用唯一识别码(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 一般有三部分组成:访问资源的命名机制、存在资源的主机名、资源自身的名称,由路径表示。考虑下面的 URI,它表示了当前的 HTML 4.0 规范;http:/www.webmonkey.com.cn/html/html40/它表示一个可通过 HTTP 协议访问的资源,位于主机 www.webmonkey.com.cn 上,通过路径 “/html/html40”访问 URLURL 是 URI 命名机制的一个子集,URL 是 Uniform Resource Location 的缩写,译为“统一资源定位符”。形象点说,URL 是 Internet 上用来描述信息资源的字符串,主要用在各种 WWW 客户程序和服务器程序上,采用 URL 可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。 URNURN 是 URL 的一种更新形式,统一资源名称(Uniform Resource Name)。唯一标识一个实体的标识符,但是不能给出实体的位置。URN 可以提供一种机制,用于查找和检索定义特定命名空间的架构文件。尽管普通的 URL 可以提供类似的功能,但是 URN 更强大更容易管理,因为它可以引用多个URL。2.3 UPnP 协议栈UPnP 定义了设备之间、设备和控制点、控制点之间通信的协议。完整的UPnP 有设备寻址、设备发现、设备描述、设备控制、事件通知和基于 Html 的描述等几部分构成。UPnP 设备协议栈如图 2 所示:图 2 UPnP 协议栈UPnP 协议结构最底层的 TCP/IP 协议是 UPnP 协议结构的基础。 IP 层用于数据的发送与接收。对于需要可靠传送的信息,使用 TCP 进行传送,反之则使用UDP。 UPnP 对网络的底层没有要求,可以是以太网、WIFI、IEEE1394 等等,只需支持 IP 协议即可。构建在 TCP/IP 协议之上的是 HTTP 协议及其变种,这一部分是 UPnP 的核心,所有 UPnP 消息都被封装在 HTTP 协议及其变种中。 HTTP 协议的变种是 HTTPU和 HTTPMU,这些协议的格式沿袭了 HTTP 协议,只不过与 HTTP 不同的是他们通过 UDP 而非 TCP 来承载的,并且可用于组播进行通信。2.3.1 SSDP 协议简单服务发现协议(Simple Service Discovery Protocol:SSDP),是内建在HTTPU/HTTPMU 里,定义如何让网络上有的服务被发现的协议。具体包括控制点如何发现网络上有哪些服务,以及这些服务的资讯,还有控制点本身宣告他提供哪些服务。该协议运用在 UPnP 工作流程的设备发现部分。2.3.2 SOAP 协议简单对象访问协议(Simple Object Access Protocol:SOAP)定义如何使用XML 与 HTTP 来执行远程过程调用(Remote Procedure Call)。包括控制点如何发送命令消息给设备,设备收到命令消息后如何发送响应消息给控制点。该协议运用在 UPnP 工作流程的设备控制部分。2.3.3 GENA 协议通用事件通知架构(Generic Event Notification Architecture:GENA)定义在控制点想要监听设备的某个服务状态变量的状况时,控制点如何传送订阅信息并如何接收这些信息,该协议运用在 UPnP 工作流程的事件订阅部分。3 UPnP 实现的工作流程图 3 是 UPnP 的运行流程,我们先大概介绍下图 3 UPnP 的运行流程1、 首先控制点和设备都先获取 IP 地址后才能进行下一步的工作;2、 控制点首先要寻找整个网络上的 UPnP 设备,同时网络上的设备也要宣告自身的存在;3、 控制点要取得设备的描述,包括这些设备提供什么样的服务;4、 控制点发出动作信息给设备;5、 控制点监听设备的状态,当状态改变时作出相应的处理动作;3.1 寻址(Addressing)UPnP 网络的基础是 TCP/IP,这就决定了每一个 UPnP 组件必须有 IP 地址。一台 UPnP 设备寻址的一般过程是:首先向 DHCP 服务器发送 DHCP Discover 的消息,如果在指定的时间内,设备没有收到 DHCP Offer 回应消息,设备必须使用AUTO-IP 完成 IP 地址的获取。当然也可以使用静态配置的 IP 地址。3.2 发现(Discovery )连接到网络上的设备确定了 IP 地址之后,就会进入发现操作阶段。设备发现是 UPnP 实现的第一步。设备发现是由简单发现协议 SSDP 来完成的。当一台设备加入到网络中,发现过程允许设备向网络上的控制节点告知它提供的服务,当一个控制点加入到网络中,设备发现过程允许控制点寻找网络上感兴趣的设备。在这两种情况下,基本的交换信息就是发现消息。发现消息包括设备的一些特定信息或者某项服务的信息,例如它的类型、标志符、等等。图 4 是发现流程的框架图:图 4 发现过程框架图3.3 描述(Description)UPnP 的第二步是设备描述。在控制点发现一台设备后,控制点对该设备可能仅仅知道设备或者服务的 UPnP 类型,设备的 UUID 和设备描述的 URL 地址,还需要知道更多的信息。控制点可以从发现消息中得到设备描述的 URL,通过 URL取回设备描述的信息。设备描述的一般过程图如图 5 所示:图 5 设备描述以及服务描述 设备描述UPnP 对某一设备的描述以 XML 形式来表示,设备描述包括制造商信息、模块名称和编号、序列号等等。对于一个物理设备可以包含多个逻辑设备,多个逻辑设备既可以是一个根设备其中嵌入多个设备,也可以是多个根设备的方式存在。设备描述由设备制造商提供,采用 XML 描述,遵循 UPnP 框架协议。 服务描述服务的描述包含一系列内容,具体有服务运行时刻的状态,运行时间等等。服务描述也由设备制造商提供,采用 XML 描述,遵循 UPnP 框架协议。3.4 控制(Control)在接收设备和服务描述之后,控制点可以向这些服务发出动作,同时控制点也可以轮询服务的当前状态。控制点将动作发送到设备服务,在动作完成或者失败后,服务返回相应的结果或者错误信息。其基本过程如图 6 所示:图 6 控制过程示意图为了控制一台设备,控制点向设备服务发出一动作,这一般是由控制点向服务的控制 URL 地址发送一个适当的控制消息。而服务则会对此动作出响应,返回相关的结果或错误。3.5 事件(Even ting)如上文的描述部分所述,一个即插即用服务描述包括服务响应的动作列表和运行时描述服务状态的变量列表。如果一个或多个状态被事件触发,服务将会在这些状态发生变化时发布更新,控制点可以订阅以获得此信息。在事件机制中,发布者指事件的来源(通常为设备服务),订阅者指事件目的地(通常为控制点)。要订阅事件,订阅者可发送一条请求订阅消息。它将以这个订阅到持续时间作为响应。要保持订阅,订阅者必须在订阅过期之前进行续订。当订阅者不再需要发布者发送的事件时,订阅者应当取消其订阅。发布者通过发送事件消息提醒订阅者状态改变。在订阅者第一次订阅时,需要发送一个专门的初始化事件消息。该事件消息包含所有事件的名称和值,并且允许订阅者初始化其服务状态。为了支持多个控制点,在动作生效后所有订阅者均会收到通知。由此,将向所有订阅者发送全部事件消息。事件消息使用 HTTP 协议传送,事件详细定义在通用事件通知结构(GENA)协议中。3.6 展示(Presentation)在控制点发现设备和取得设备描述之后,展示也就开始了。如果设备拥有进行展示的 URL,那么控制点就可以通过此 URL 取得一个页面,在浏览器中加载该页面,并根据页面功能,支持用户控制设备或浏览设备状态。每一项完成的程度取决于展示页面和设备的具体功能。设备展示包含在设备描述的 Presentation URL 字段。设备展示可以完全由设备制造商提供,它采用 HTML 页的形式,使用 HTTP 进行发布。图 7 是展示的流程示意图:图 7 展示示意图4 UPnP 在 NAT 中的应用4.1 应用场景如果用户是通过 NAT 接入 Internet 的,同时需要使用 BC、电骡 eMule 等P2P 这样的软件,这时 UPnP 功能就会带来很大的便利。利用 UPnP 能自动的把BC、电骡 eMule 等侦听的端口号映射到公网上,以便公网上的用户也能对 NAT私网侧发起连接。4.2 实现 UPnP 所需条件必须同时满足三个条件: NAT 网关设备必须支持 UPn
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号