UPnP基本原理以及在NAT中的应用_第1页
UPnP基本原理以及在NAT中的应用_第2页
UPnP基本原理以及在NAT中的应用_第3页
UPnP基本原理以及在NAT中的应用_第4页
UPnP基本原理以及在NAT中的应用_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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 的部分术语的部分术语 UUID UUID 含义是通用唯一识别码 Universally Unique Identifier 其目的是让 分布式系统中的所有元素都有唯一的标识 其格式为 xxxxxxxx xxxx xxxx xxxxxxxxxxxxxxxx 8 4 4 16 分别表示当前的日期 时间 始终序列 全 局唯一的 IEEE 机器标识 如果有网卡 则从网络的 MAC 地址获取 没有网 卡则以其他方式获得 UDN 单一设备名字 Unique Device Name 基于 UUID 表示一个设备 在不 同的时间 对于同一台设备此值应该是唯一的 URI Web 上可用的每种资源 包括 HTML 文档 图像 视频片段 程序等 由一 个通用资源标志符 Universal Resource Identifier 简称 URI 进行定位 URI 一般有三部分组成 访问资源的命名机制 存在资源的主机名 资源自 身的名称 由路径表示 考虑下面的 URI 它表示了当前的 HTML 4 0 规范 HTTP 协议访 问的资源 位于主机 上 通过路径 html html40 访 问 URL URL 是 URI 命名机制的一个子集 URL 是 Uniform Resource Location 的缩 写 译为 统一资源定位符 形象点说 URL 是 Internet 上用来描述信息资 源的字符串 主要用在各种 WWW 客户程序和服务器程序上 采用 URL 可 以用一种统一的格式来描述各种信息资源 包括文件 服务器的地址和目录 等 URN URN 是 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 网关设备必须支持 UPnP 功能 操作系统必须支持 UPnP 功能 我们常见的 Windows XP 是支持 UPnP 的 应用软件必须支持 UPnP 功能 比如 BC 电骡 eMule MSN 软件都是支持 的 以上三个条件必须同时满足 缺一不可 4 2 1 NAT 网关设备的设置网关设备的设置 NAT 网关设备的 UPnP 功能 不同的型号设置界面略有不同 有的设备是默 认使能 UPnP 功能的 有的设备是需要手工使能 不同的设备界面和方法可能略 有不同 某款设备的设置具体如下 图 8 网关设备上的 UPnP 使能 4 2 2 操作系统的操作系统的 UPnP 功能设置功能设置 重点描述下 Windows XP 的 UPnP 功能如何启用 如果使用的是 Windows XP SP2 版本的系统 首先进入 控制面板 添加或删除程序 添加 删除 Windows 组件中 在 网络服务 中勾选 UPnP 用户界面 如图 9 图 9 UPnP 安装截图 确定后 系统会自动安装相应的组件 可能会提示你插入安装光盘 按照提示 完成即可 接着打开 Windows 自带的防火墙 在 例外 选项中勾选 UPnP 框 架 如图 10 图 10 UPnP 中防火墙的设置 接下来 在 Windows 中打开相应的 UPnP 服务 进入 控制面板 管理工具 服务 找到 SSDP Discovery Service 和 Universal Plug and Play Device Host 两项服务 选择启动即可 设置完以上后 就可以在 网络连接 中看到多了 Internet 网关 这表明添加 UPnP 已经成功了 如图 10 所示 图 11 UPnP 成功后的网络接口 在应用层的设置就简单了 以 BitComet v1 02 版本为例来说明下 在选项 高级设置中 把 允许使用 UPnP 自动端口映射 前沟上 如图 12 所示 图 12 BT 软件中的端口映射 在 全局统计 页签中可以看到 NAT 端口映射已添加 这样在进行 P2P 下载 时 在公网侧的其他用户也可以向处于私网中的用户发起连接 可以大大的提高下 载效率与速度 如图 13 所示 图 13 BT 软件中侦听的端口号 点击 Internet 连接 右键属性 再点设置 可以看到 BitComet 所侦听的 TCP 和 UDP 端口已经被映射出来了 如图 14 所示 图 14 成功映射的端口号 接下来我们来抓包分析 NAT 的端口映射如何通过 UPnP 来自动完成的 4 3 发现阶段的报文交互发现阶段的报文交互 设备发现是 UPnP 网络实现的第一步 设备发现是由简单发现协议 SSDP Simple Service Discovery Protocol 来定义的 设备发现分两种情况 4 3 1 主动告知主动告知 设备加入到网络中 设备发现过程允许设备向网络上的控制点告知它提供的服 务 并且定期发送 NOTIFY HTTP 1 1 HOST 239 255 255 250 1900 CACHE CONTROL max age seconds until advertisement expires LOCATION URL for UPnP description for root device NT search target 服务类型 NTS ssdp alive USN advertisement UUID 不同服务的统一服务名 标示相同类型服务能力 通过 Ethereal 抓包可以发现 支持 UPnP 的网关设备启动后会发出一系列 SSDP 的 alive 消息 用于向外通告自己 图 15 是设备发出的一系列 SSDP 消息 图 16 是其中一条消息的详情 图 15 SSDP 消息截图一 图 16 SSDP 消息截图二 注意 上图 location 字段是网关向外通告了自己的 IP 地址以及 UpnP 监听的端口 号 后续由设备向端口号 2800 发起 TCP 连接 利用 XML 来进行后续的描述 表示 控制等操作 4 3 2 利用查询来发现利用查询来发现 控制点加入到网络中时 设备发现过程允许控制点寻找网络上感兴趣的设备 并使得控制点获得设备能力的描述 同时控制点也可以向设备发送命令 侦听设备 状态的改变 并将设备展示给用户 查询消息查询消息 M SEARCH HTTP 1 1 HOST 239 255 255 250 1900 MAN ssdp discover MX seconds to delay response ST search target 各个参数所表达的含义 MX 设置设备响应最长等待时间 设备响应在 0 和这个值之间随机选择响应延迟的值 ST 设置服务查询的目标 它必须是下面的类型 ssdp all 搜索所有设备和服务 upnp rootdevice 仅搜索网络中的根设备 uuid device UUID 查询 UUID 标识的设备 urn schemas upnp org device device type version查询 device Type 字段指定的设备类型 设备类型和版本由 UPNP 组织定义 urn schemas upnp org service service type version 查询 service Type 字段指定的服务类型 服务类型和版本由 UPNP 组织定义 图 17 是 PC 向外发送的查询报文 图 17 PC 向外发送的查询报文截图 响应消息响应消息 HTTP 1 1 200 OK CACHE CONTROL max age seconds until advertisement expires DATE when reponse was generated EXT LOCATION URL for UPnP description for root device SERVER OS Version UPNP 1 0 product version ST search target USN advertisement UUID 各参数的意义 max age 指定通知消息存活时间 如果超过此时间间隔 控制点可以认为设备不 存在 DATE 指定响应生成的时间 EXT 向控制点确认 MAN 头域已经被设备理解 LOCATION 包含根设备描述得 URL 地址 SERVER 包含操作系统名 版本 产品名和产品版本信息 ST 内容和意义与查询请求的相应字段相同 USN 表示不同服务的统一服务名 它提供了一种标识出相同类型服务的能力 通过 Ethereal 抓包得到的响应消息 如图 18 所示 图 18 响应消息截图 当在网关设备上去使能 UpnP 功能时 设备会向外发送 SSDP 的 byebye 消息 SSDP byebye 消息 NOTIFY HTTP 1 1 HOST 239 255 255 250 1900 NT search target NTS ssdp byebye USN advertisement UUID 发出的 SSDP 的 byebye 利用 Ethereal 抓包解析 具体如图 19 所示 图 19 SSDP 的 byebye 消息截图 4 4 描述阶段的报文交互描述阶段的报文交互 UPnP 网络结构的第二步是设备描述 在控制点发现了一个设备之后 控制点 仍然对设备知之甚少 控制点可能仅仅知道设备或服务的 UPnP 类型 设备的 UUID 和设备描述的 URL 地址 为了让控制点更多的了解设备和它的功能或者与 设备交互 控制点必须从发现消息中得到设备描述的 URL 通过 URL 取回设备描 述 设备描述是由设备制造商提供的 采用 XML 表述 并且遵循 UPnP 设备模版 此模版是由 UPnP 工作委员会生成的 设备描述包括制造商信息 包括模块名称 和编号 序列号 制造商名称 制造商网站的 URL 等 对于一个物理设备可以包 含多个逻辑设备 多个逻辑设备既可以是一个根设备其中嵌入多个设备 也可以是 多个根设备的方式实现 其中一个描述所建立的 TCP 连接如图 20 所示 图 20 建立的 TCP 连接截图 用 Ethereal 的 Follow TCP Stream 来解析上面的报文 GET InternetGatewayDevice xml HTTP 1 1 Accept text xml application xml User Agent Mozilla 4 0 compatible UPnP 1 0 Windows NT 5 1 Host 192 168 1 1 2800 Connection Keep Alive Cache Control no cache Pragma no cache HTTP 1 1 200 OK Server Unknown 0 0 UPnP 1 0 Conexant EmWeb R6 1 0 Connection close Content Type text xml Expires Thu 01 Jan 1970 00 00 00 GMT Cache Control no cache Pragma no cache 1 0 http 192 168 1 1 2800 urn schemas upnp org device InternetGatewayDevice 1 Huawei 3Com IGD Huawei 3Com http aolynk huawei Huawei 3Com UPnP IGD in ISOS 9 0 8 9 IGD 9 0 8 9 Prototype uuid ab270226 590c 8539 3c7d 8ee91a399470 Universal Product Code 4 5 控制阶段的报文交互控制阶段的报文交互 设备控制是 UPnP 网络的第三步 控制点先发送一个控制行为请求 要求设备 开始服务 然后再按设备的 URL 发送相应的控制消息 控制消息是放置在 XML 文件中的那些 SOAP 格式的信息 最后 服务返回响应信息 指出服务是成功或 是失败 对其中一个控制阶段所建立的 TCP 连接的如图 21 所示 图 21 控制阶段所建立的 TCP 连接截图 用 Ethereal 的 Follow TCP Stream 来解析上面的报文 POST EmWeb UPnP Control 4 HTTP 1 1 Content Type text xml charset utf 8 SOAPAction urn sc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论