西南石油大学 黄从富 曾一芳 冷 静
基于Bonjour的网络设备自动发现研究
西南石油大学 黄从富 曾一芳 冷 静
苹果公司给以mDNS为基础的开放性零配置网络起了一个名字叫做Bonjour,它能自己搜索IP网络上的设备。Bonjour协议是基于mDNS和DNS_SD协议开发实现的。文章论述了Bonjour技术的原理和应用以及Bonjour协议所提供的三部分功能。Bonjour不需要人为地去配置IP地址,为特定场合的联网降低了成本。
Bonjour;服务发现;组播域名服务
近年来,计算机网络的应用范围越来越广,几乎所有计算机平台都在采纳TCP/IP协议.TCP/IP协议为不同种编程语言提供了统一的被业界认可的通信平台,但是采用TCP/IP协议在某些场合也有力所不及的地方。因为IP地址是一串较长的数字,使用太过于复杂,但是实现域名与IP地址之间的映射又必要有专业技能与知识的专业人员来实现。在一些使用网络通信的特定场合,如临时会议、临时文件传输等对网络应用频繁、时间跨度短、成本耗费低的场合,TCP/IP协议对用户来说太不方便了。而Bonjour 技术的出现很好地处理了这些疑难的问题。
苹果公司给以mDNS为基础的开放性零配置网络起了一个名字叫做Bonjour,它能自己搜索IP网络上的设备。Bonjour应用IEEE规范的IP协议来让IP网络上的设备在网络中传播自己的讯号,所以人们就不需要自己手工地去配置IP地址。一旦本地局域网上的设备应用了Bonjour服务,就可以在此网络中自动传播自己的讯号被其他设备发现,从而进行链接。
mNDS和DNS_SD两个网络协议是Bonjour技术的基石,在Bonjour技术中应用了这两个技术的精髓,因此有必要先对mDNS和DNS_SD协议作简要阐明。
当本地网络上不存在域名解析服务器时适合使用mDNS协议来解决联网问题,设备经过组播的形式交换DNS记载来实现解析请求中的域名。假设一个场景,有A,B,C,D四台设备要进行通信,而D设备处于服务器端。设备D使用某个IP地址,A.local的地址发送查询信息。设备A收到设备D的查询信息后,同样通过相同IP地址向设备D发送设备a的信息,此时,存在于此局域网内的所有设备,如B、C、D都会收到设备A发出的信息,设备B、C、D收到设备A的信息后会将A的信息包括IP地址、端口号等刷新存储到自己的缓冲区内。
下面对DNS_SD协议作简单介绍。DNS_SD使用了以DNS为基础的三种服务发现记载类型:SRV记载、TXT记载、PTR记载,其中:
(1)服务发现:类型为PTR记载包会被应用DNS_SD的网络设备会发送到本地局域网,所询问服务规式为:service.transport.domain。service代表设备需要查询的服务,transport代表依次查询所用的协议,domain表示此次询问的域名,使用对应服务的设备在收到询问信息后会激活本设备上的相应的实例。
(2)获取服务实例的端口号与主机名:当网络设备选择一个实例后,对实例的主机名和端口号的记载是必须的,这就是 SRV记载。用户设备在选择一个实例后会发送一个mDNS请求,设备在收到请求后,若存在请求消息中相应的实例,则会激活SRV记载,其中存储了这个实例所相对的端口号与主机名。所以SRV记载中存储了主机到服务与端口之间的映射关系,无论端口号是否发生变化。
(3)service实例的信息:在某种特定场合下,一个实例不仅保存了网络设备的主机名等基础信息外,还包括很多了附加信息,在TXT记录中存有附加记录,记录格式为键值对。
在其中其实已经包含了许多 Bonjour协议的基本原理。我们可以把Bonjour技术当成以上两个协议的组合。DNS_SD协议获取提供某个服务的网络设备的主机名和端口号,然后在对主机名和端口号进行解析找到相对应的IP地址,这样就实现了Bonjour技术的基本原理。
在一些特定的场合如没有DHCP服务配置和只能人为手动设置IP地址时,使用Bonjour技术的网络设备可以获得在本地网络中的域名和IP地址进行通信,但是路由的配置是我们必须的操作。
在一般的网络环境中,一台网络设备想要在互联网中获得IP地址有两种方式。一种是动态分配,即路由器自动地为网络设备分配IP地址,这种方式获得的IP地址是会变化的,另一种是静态分配,即由开发人员人为手动地为设备配置,此方式获得的IP地址不会发生变化,但可能会与互联网中已经存在的IP地址发生冲突。在没有DNS核心域名解析服务器的网络中,路由器无法动态为网络设备分配IP地址,开发人员只有手动为网络设备分配IP地址,但是这种方式不方便也存在许多缺点。如何使网络设备能够自动获取生效的IP地址正是Bonjour解决的主要问题。
在IPV4环境中,Bonjour技术实现了IP地址rand获取的功能,Bonjour技术自动生成一个IP地址,然后询问此本地网络中有没有存在相同的IP地址,如果存在相同的IP地址,则再次生成一个IP地址,一直持续到局域网内没有相同的IP地址,此时设备则把这个IP地址作为自己的IP地址。
使用了Bonjour技术的网络设备虽然有了自动获取IP地址和有效域名,但是也有无法符合人们的某些需要的场合。比如用户需要的是打印服务,此时并不需要关注提供服务的设备的IP地址和域名。而Bonjour技术所提供的服务发现能力就能让网络设备很轻易地发现本地局域网中的所有可访问服务。
当然Bonjour技术所提供的这些能力也有自己的一个的使用规则,当一台网络设备需要访问http服务时,使用Bonjour技术的设备会自动查询本地局域网中http的服务,然后将会向发起查询的网络设备返送请求下消息。此时用户就不需要关注服务在那一台网络设备上,也有不需要查询域名和IP地址了。
Bonjour技术虽然免去了DNS服务器解析域名的寻址操作,但是频繁地发送网络请求会产生较为庞大的网络流量。针对这种情况Bonjour技术采用了以下绩点措施来使网络流量的花费不至于太大。
为了避免主机发送重复的已经请求过的信息,Bonjour技术采用了缓存机制。例如,当一台网络设备访问局域网中某个复印服务时,网络设备在收到请求后就会将这个请求缓存下来。当再有网络设备要访问复印服务时,就不必再向本地网络发送请求消息了,本地网络中已经缓存了这个列表。系统会自动对这个列表进行维护,用户就不需要进行维护操作了。
Bonjour技术的请求中会包含一个已经访问过的服务的列表来阻止重复呼应相同的请求。例如,一台网络设备正在访问复印机的服务,头一个请求没有已访问的复印服务。当这台设备再次访问打印服务时,由于请求列表里存在已访问的打印服务 ,此时Bonjour不会再次发起呼应请求。
[1]陈冠升,胥布工.基于无线网络技术的馈线终端设计[J].低压电器,2010(21).
[2]耿建平,姚英.关于Bonjour技术的研究[J].国外电子测量技术,2011(04).
[3]徐成云.几种主要传输网络技术应用的探讨[J].中国新技术新产品,2010(19).