



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品论文zeroconf 与 upnp 技术研究李志鹏1 曹艺坪2 温向明11北京邮电大学信息与通信工程学院,北京 (100876)2信息产业部电信研究院,北京 (100083)e-mail:摘 要:网络设备的大量出现在带给我们很大方便的同时也带来了网络终端配置复杂的问题,zeroconf 技术与 upnp 技术的出现正是为了解决这个问题,通过使用 zeroconf 或 upnp 技术可 以实现终端在不需要人工干预的情况下接入网络并自动进行诸如 ip 地址配置、相关服务的发现 等操作,从而达到网络终端设备的零配置目的。本文将对二者的协议结构、工作过程等方面做 以详细研究及对比,并在此基础上给出结论。关键字:zeroconfupnp零配置服务发现 中图分类号:tp3931.引言随着网络技术的发展,越来越多的网络设备大量出现,但是网络设备普遍存在的配置复杂 的问题却在一定程度上限制了设备更大范围的应用。那么一台网络设备能否像台灯那样,接上 电源,打开开关后就能够正常工作呢?这就需要有一种自动配置或者是零配置技术的出现。2.零配置技术介绍当前终端的零配置技术主要有ietf零配置工作组提出的zeroconf技术1、sun公司提出的java智能网络基础设施(jini)技术2以及upnp论坛提出的通用即插即用(upnp)技术3等。ietf 为实现网络的零配置目标而于 1999 年 9 月成立了零配置工作组,并于当年 11 月份召 开了第一次工作组官方会议,zeroconf 技术正是由该工作组提出的, 其目标是在网络设备不需要进行任何手工操作以及其它服务(dhcp、dns)等的支持下,通过自动配置自动组网并正常工作。upnp 技术是由 upnp 论坛制定,该论坛是由微软、英特尔等公司于 1999 年 10 月份发 起创建,upnp 技术是针对局域网范围内的对等设备互联而设计的一种技术,其目的与 zeroconf技术类似,是为家庭、小型企业、公共场所提供基于 ip 技术、易于使用的网络服务自动发现机 制,同时提供互连设备的远程操作控制和信息共享。jini 技术基本思想是将 java 应用环境从单一主机的虚拟机向网络化发展,通过由 java 语言定义的接口来实现编程,其更接近于一种分布 式的应用程序接口及对象应用环境,这里不再对其进行详细分析。接下来,本文将会对 zeroconf和 upnp 技术的做进一步的研究,并在此基础上对二者做以比较在最后给出结论。3.zeroconf技术3.1 结构zeroconf技术是ietf zeroconf工作组专门提出的用于终端零配置的技术,从功能上来讲, 它可以被划分为三个部分,即本地ip地址的自动获得、多播dns技术(mdns)4、基于dns 的服务发现技术(dns-sd)56等。其中,mdns和dns-sd被用于实现服务发现与定位。3.2 工作过程简单来讲,zeroconf 技术通过两个过程就可以实现零配置组网的目标:本地 ip 地址的自动 获得、服务的发现与定位,其中服务发现与定位过程使用了 dns-sd 来完成服务的发现,使用了 mdns 来完成域名到 ip 地址的转换即服务的定位。第一步:本地 ip 地址的自动获取。为了自动获取 ip 地址,zeroconf 并不要求网络中有 dhcp 服务器。在没有 dhcp 服务器的情况下,设备可以使用链路-本地 ip 地址,首先设备会使用一 定的算法选择一个 到 55 范围内的 ip 地址,选定 ip 地址之后,设备通5精品论文过发送一个 arp 探测消息来检查该 ip 地址是否已经有人使用。这个 arp 探测消息是一个 arp 请求,在这个请求中源 mac 地址使用该设备的 mac 地址,把源 ip 地址和目标 mac 置为空, 把目标 ip 置为这个刚刚选中的 ip 地址,之后设备开始侦听是否有别的设备已经使用了该 ip 地 址。如果设备侦听到一个源 ip 地址是该所选择地址,但是源 mac 地址与自己的 mac 地址不 同时,这意味着已经有别的设备使用了该地址。这时该设备可以通过:1,立即换用别的本地链路 ip;2,如果此时设备已经建立 tcp 连接或由于其他原因需要继续使用这个 ip 地址,那么它就 需要在收到 ip 冲突的 arp 消息一段时间后通过广播一个源 mac 是自己 mac 地址,源 ip 是自己想保留的 ip 地址的 arp 消息来尝试保留这个 ip 地址。如果设备在这之后又收到了 ip 冲突 的 arp,则该设备必须立即更换一个新的本地链路 ip 地址。在选定使用某个 ip 地址后,设备再通过发送源 ip 地址和目标 ip 地址都是这个已选定的 ip 的 arp 消息来告知其他设备不要再尝 试使用这个地址,并且这样做也可以告知其他设备来更新他们的 arp 表。第二步:服务发现与定位。zeroconf使用mdns4来实现域名到ip地址的转换。首先,在局 域网内的设备具有了本地链路ip地址之后,设备就可以使用一个以.local.为前缀的本地域名,这个本地域名只是在设备所在的局域网内有效,而且只是在当前时刻有效。如果在其他lan内或 者在本lan内的不同时间见到同样一个本地域名,这都不代表这个设备与之前见到的设备有任何关系。本地链路上的每一台设备在多播dns端口 53537侦听,而需要查询本地域名的设备则向多 播dns地址 51(ipv4)7/ff02:fb(ipv6)8发送mdns查询包,如果所查询的本地域名与正 在侦听的某台设备一致,则这台设备就会回应。由于本地域名可能会改变,在某一时刻得到的 查询结果可能已经不是最新的了,所以查询设备时还需要通过不断的发送mdns查询包来实时 更新查询结果。为了防止发送大量的mdns查询包引起网络的拥塞,要求mdns查询包发送时间 间隔要长,比如一个小时发送一次。但是这样的话,如果有了新的设备在本次查询刚刚结束时 增加进来,下一次查询将会是在一小时之后,这样这台新加入的设备必须在一小时之后才能被 发现,这样做肯定不行。所以每台新加入网络的设备需要在加入网络后通过多播一个mdns响 应消息来宣告自己进入网络。另外,mdns查询及响应都使用的是多播,这样看似增加网络的 流量,但实际上对于多播回应,网络中其他设备都会收到,并且记录结果,在以后需要的时候 就不必再进行查询了。zeroconf 使用了 dns-sd 来实现服务的发现。dns-sd 并不是一个专门的协议,它的消息 结构与普通 dns 消息一样,只是 dns-sd 查询消息中并不是使用的“type=a”这样的查询类 型,而是使用了 srv 与 ptr 的查询类型。dns-sd 通过查询某一服务类型来获取所有关于该类 服务的信息,服务类型使用的是 ietf rfc2782 中所定义的 srv 类型,设备通过发送查询请求 类型为 ptr 的 dns 查询请求,来得到关于某个服务类型的所有 ptr,每个 ptr 指向一个提供 某项服务的 dns 记录。通过使用该 dns 消息就可以实现查询某个服务类型的目的。首先dns-sd 客户端发出 ptr 查询消息来查询某种服务类型,例如:_http._tcp.local 或_http._如果网络上有所查询的服务,则会返回一条或多条 ptr 记录,例如:032zeroconf._http._dns-sd 中服务类型可以有子类型,比如可以通过使用查询:_news._sub ._http._来更精确的查找一个符合更多条件的服务。另外,zeroconf还利用了动态dns-ul、dns-llq以及nat-pmp等1技术来支持wan范围 内的零配置机制。4.upnp技术4.1 结构upnp(universal plug and play)39技术扩展了应用于计算机外设中plug and play(pnp)技术, 它将网络中的设备包括了进来。支持upnp技术的网络设备可以实现动态地加入一个网络并自动 获得ip地址、告知别的设备自己的能力和服务并且获知网络上其他设备的能力和服务等。upnp 技术是建立在tcp/ip协议之上的,使用了ip、udp、tcp、http、xml、soap、gena等网 络协议与技术,使用upnp建立起来的网络不需要设备驱动,不使用特定的api,与介质无关。 upnp 结构中包括了控制点、服务和设备,服务和控制点属于逻辑上的概念,一台设备可能会包含有零或多个服务,也可以包括控制点,它的协议栈如下表所示:表 1 upnp 协议栈upnp 设备商自己的定义upnp 论坛专业委员会的设备定义upnp 设备体系定义ssdpsoapgenahttpmuhttpuhttphttpudptcpip 层其中,第一层是 ip 层,所有的消息都是基于 ip 传送的,第二层和第三层属于传送层,传送的内容经过 xml 封装后使用 udp 之上的 httpu/httpmu 协议或 tcp 之上的 http 协议传送, 而第四层中的 ssdp、soap、gena 正是所传送内容的数据格式;再上一层则是 upnp 论坛专业委员会定义的厂商相关信息;设备体系定义是一个抽象的公用模型,所有的设备都要使用到 这一层;最上层则是 upnp 设备制造商的自己进行的一些定义,包括特定的厂商信息等。下面一节中将会对 upnp 的详细工作过程做以说明。4.2 工作过程upnp整个工作过程分为六个阶段9,包括设备ip寻址、服务发现、设备和服务的描述、设 备控制、事件和服务呈现。第一步,获取 ip 地址。ip 地址是 upnp 的基础,一台网络设备可以通过 dhcp 来获取一个ip 地址,设备进入网络后,首先尝试使用 dhcp 方式获取 ip 地址,如果 dhcp 获取方式失败, 设备就开始使用 auto-ip 技术来获取一个链路-本地 ip 地址。auto-ip 技术与上述的 zeroconf 中链路-本地 ip 地址自动获得过程是一样的,这里就不再赘述。第二步,服务发现。获取 ip 地址之后就开始发现过程,upnp 使用 ssdp 来进行服务发现,ssdp 是 upnp 提出的专门用于服务发现的一个协议。ssdp 使用了两种方法:m-search 和notify,在 http 请求中,m-search 被用来发现设备或者控制点,notify 方法被用来告 知设备或控制点的加入网络或离开网络。当有设备加入网络或离开网络时,设备的 ssdp 服务通过向网络多播发送一个 nts 值为ssdp:alive 或 ssdp:byebye 的 notify 消息来告知网络中其他设备。当有控制点进入网络时,控 制点可以通过发送消息类型为 m-search 设备搜索消息来得到他感兴趣的设备的信息。这个搜索消息包括了值为 ssdp:discover 的头域和搜索目标类型以及延迟时长 mx;如果需要搜索网络上的所有设备,控制点可以发出一个 st 值为 ssdp:all 的 m-search 消息。 当网络中有设备收到 m-search 消息后,如果这个 m-search 消息的 st 头域值为 ssdp:all、ssdp:rootdevice,或者与自己的 uuid 相同的 uuid 值时,该设备就需要对这个 m-search 消 息进行回应了。回应消息除了消息头为 http/1.1 200 ok,以及除了 notify 宣告消息中头域nt 在这里是 st 以外,其他的头域如 cache-control、location、usn 等都与 notify宣告消息一致。 第三步,设备和服务描述。当一个控制点发现了网络中的一台设备后,控制点对这台设备的信息知道的还不是很多,这就需要控制点通过使用发现阶段得到的这台设备的 url 来和这台设备进行交互并尝试获得更多的该设备及该设备所提供的服务的详细描述。upnp 关于一台设备 的描述分为两个部分:设备描述和服务及能力的描述。upnp 设备描述包含了厂商信息、序列号等,包括了该设备提供的所有服务列表、每个服务 的服务描述、控制 url、事件 url 等。设备描述是由每个设备厂商来写的,厂商在写这些设 备描述的时候应当使用 xml 语言并按照 upnp 论坛专业委员会定义好的设备描述模板来写。服务描述包括了命令列表、动作列表、每个命令的参数等,它包括了一系列的变量,通过 使用这些变量以及这些变量的数据类型、范围等定义了在服务运行过程中的状态。服务描述也是由设备制造商使用 xml 语言并按照 upnp 论坛专业委员会定义的服务描述模板来写的。控制点可以通过发送一个请求 url 为发现过程中得到的设备或服务描述 url 的 http get 请求来获取设备的设备描述或服务描述。第四步,设备控制。当控制点知道了设备及其服务描述后,控制点就可以调用一些控制动 作并接收这些动作的结果。调用服务的动作是一个远程调用过程,控制点通过向某一服务的控制 url 发送一个控制请求来调用服务,并让服务进行特定的动作,这些控制 url 是在设备描 述中关于服务的控制 url 子集中提供给控制点的。控制请求是通过使用 http post 请求或者http m-post 请求及回应来传送以 soap 格式封包的动作或结果。upnp 论坛专业委员会和设 备厂商已经定义了一些控制来使得控制点可以很明确的知道当前服务的状态。第五步,事件。当服务的状态发生改变时就产生一个事件,如果某个控制点订阅了这个事 件,则服务就会将该状态改变上报给控制点。为了订阅某个事件,控制点需要首先向服务发送一个订阅消息,订阅消息使用了 subscribe 请求头,如果订阅请求被接受,则事件产生方(一 般是设备)会回应一个订阅超时时长以及一个 sid(订阅 id)。如果订阅者不再需要这些事件时,它可以发送一个取消订阅的消息给事件提供者,取消订阅消息使用unsubscribe 请求头, 并带上需要取消的 sid。事件消息使用 notify 请求头告知事件订阅者,每一个事件消息的消息体中包含了一个或多个状态变量的名字以及当前这些状态变量的值,这些名字和值也是用 xml 语言描述的。第一次订阅成功时,事件提供者会发送一个初始事件消息,这个初始事件消 息中包含了所有变量的名字以及变量值,订阅者就可以通过它来初始化该服务的状态模型了。第六步,服务呈现。呈现属于 upnp 的可选功能,当设备加入网络并获取地址、对它感兴 趣的控制点发现了该设备并获取了该设备的服务描述和设备描述以及获取设备所能提供的能力后,就可以将其展示给用户了。当一个设备提供了描述 url,控制点就可以通过这个 url 获 取一个页面,并将这个页面载入到浏览器中提供给用户,用户就可以通过该页面来控制设备或者读取设备的状态信息等。5.zeroconf与upnp对比通过上述对二者结构、工作过程等的分析,我们可以看到,在 ip 地址的获取上,zeroconf 和 upnp 技术是完全一样的;在域名到 ip 地址的转换上,zeroconf 使用的是 mdns 技术,而 upnp 没有与之对应的技术,一般情况下,如果需要直接访问某台设备时,zeroconf 可以通过访 问设备的本地域名来访问这台设备或者服务,而 upnp 就需要使用 ip 地址,而这个所使用的 ip 地址可能是从设备描述中得来的,也可能是由专门的域名转换系统(比如 dns)得来,但由于 这个地址可能会变化,所以有时候 upnp 这么做就行不通;服务发现与定位过程中,zeroconf 使用的是 mdns/dns-sd 来进行服务发现的,使用了统一的 srv 定义,upnp 使用的是 ssdp 协议来进行服务发现,在 upnp 采用 ssdp 作为服务发现协议的时候,该协议还没有完成,并 且后来由于该协议自身的复杂性使得在网络条件差(比如 802.11 无线网络环境中丢包率过大) 时不能保证其可靠性以及其它方面的原因,ssdp 并没有公开发表而是被取消了,而由于 mdns/dns-sd 的有效性以及使用了重复查询压缩等功能,zeroconf 就不存在这方面的问题。 在应用层,zeroconf 并不关心用户使用什么样的应用层协议,它只是通过使用 ip 自动获得、 mdns/dns-sd 的服务发现来提供一个可靠的、自动配置的网络,对于这一层面 zeroconf 并没 有做任何规定与说明,用户可以根据自己的需要使用自己的应用层协议;而这一层恰恰正是 upnp 所最关心的,它定义了大量的设备类型、服务类型,定义了如何去描述一个服务、如何去 调用一个服务等。6.结论从上述分析可以看出,单纯说 zeroconf 与 upnp 是两种互相竞争的技术是不全面的。首先, zeroconf 与 upnp 在某些层面上是相同或相似的,比如二者都使用了相同的链路-本地 ip 地址获 得方式;在某些层面上又存在不同或竞争的一方面的,比如在服务发现上前者使用的是 mdns/dns-sd 方式,而后者使用的是 ssdp 方式;其次二者的侧重点不同,前者的侧重点是 为了解决普遍性的问题,即不管设备类型与应用层协议,通过 zeroconf 技术可以提供一个零配 置后就能使用的可靠的网络,后者侧重点是为了解决特定的问题,除了解决网络零配置中提到 的 ip 地址获得、服务发现定位等,还重点规定了针对具体设备类型的具体操作与控制。zeroconf 给出了一个如何在不需要人工干预或其它服务的协助下网络实现自动配置的方法,利用这个方 法用户可以开展自己的应用,使用自己的应用层协议等,zeroconf 给出的是一个水平意义上的 零配置技术;而 upnp 更像是一套完整的工业标准,它指出了用户开展自己 upnp 应用的具体 途径,它给出的是一个垂直层面上自上而下的解决方法。参考文献1 stuart cheshire, daniel h. steinberg, zero configuration networking, the definitive guide, oreilly, 2005 2 sun microsystems, inc. jini network technology, 20013 upnp forum, upnp device architecture v1.0, 2006.74 ietf draft, draft-cheshire-dnsext-multicastdns-06.txt, 2006.8 5 ietf draft, draft-cheshire-dnsext-dns-sd.txt, 2006.86 ietf rfc 2782, a dns rr for specifying the location of services (dns srv), 2000.2 7 /assignments/multicast-addresses8 /assignments/ipv6-multicast-addresses9 /download/upnp_vendor_implementation_guide_jan2001.htmresearch of zeroconf and upnpli zhipeng1, cao yiping2, wen xiangm
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 矿山智能调度中心与决策支持系统创新创业项目商业计划书
- 卫星智能监测系统创新创业项目商业计划书
- 卫星通信设备制造创新创业项目商业计划书
- 现场急救救护知识培训课件
- 辐射基础知识培训课件
- 2025年家庭教育指导服务市场供需关系演变及策略建议报告001
- 2025年城市污水处理厂深度处理新型微生物菌剂研发报告
- 2025年环保产业技术创新与产业升级生态修复技术发展报告
- 现代灯培训知识课件
- 营养师考试备考 2025年营养师职业资格考试专项训练
- 2023年杭州市中小学教师教学能力水平考核
- 卫星通信与卫星网络PPT完整全套教学课件
- 转岗申请表(标准样本)
- 中医病证诊断疗效标准
- 施工总平面布置图及说明及施工现场平面布置图
- 数独课件完整版
- GA 568-2022警服夏执勤短袖衬衣
- 淮扬菜-淮安淮扬菜名单大全
- 2021年秋期新人教版部编本六年级语文上册教材解读
- 标准化考核办法
- 高处吊篮使用审批表
评论
0/150
提交评论