西南石油大學(xué) 黃從富 曾一芳 冷 靜
基于Bonjour的網(wǎng)絡(luò)設(shè)備自動(dòng)發(fā)現(xiàn)研究
西南石油大學(xué) 黃從富 曾一芳 冷 靜
蘋果公司給以mDNS為基礎(chǔ)的開放性零配置網(wǎng)絡(luò)起了一個(gè)名字叫做Bonjour,它能自己搜索IP網(wǎng)絡(luò)上的設(shè)備。Bonjour協(xié)議是基于mDNS和DNS_SD協(xié)議開發(fā)實(shí)現(xiàn)的。文章論述了Bonjour技術(shù)的原理和應(yīng)用以及Bonjour協(xié)議所提供的三部分功能。Bonjour不需要人為地去配置IP地址,為特定場合的聯(lián)網(wǎng)降低了成本。
Bonjour;服務(wù)發(fā)現(xiàn);組播域名服務(wù)
近年來,計(jì)算機(jī)網(wǎng)絡(luò)的應(yīng)用范圍越來越廣,幾乎所有計(jì)算機(jī)平臺都在采納TCP/IP協(xié)議.TCP/IP協(xié)議為不同種編程語言提供了統(tǒng)一的被業(yè)界認(rèn)可的通信平臺,但是采用TCP/IP協(xié)議在某些場合也有力所不及的地方。因?yàn)镮P地址是一串較長的數(shù)字,使用太過于復(fù)雜,但是實(shí)現(xiàn)域名與IP地址之間的映射又必要有專業(yè)技能與知識的專業(yè)人員來實(shí)現(xiàn)。在一些使用網(wǎng)絡(luò)通信的特定場合,如臨時(shí)會(huì)議、臨時(shí)文件傳輸?shù)葘W(wǎng)絡(luò)應(yīng)用頻繁、時(shí)間跨度短、成本耗費(fèi)低的場合,TCP/IP協(xié)議對用戶來說太不方便了。而Bonjour 技術(shù)的出現(xiàn)很好地處理了這些疑難的問題。
蘋果公司給以mDNS為基礎(chǔ)的開放性零配置網(wǎng)絡(luò)起了一個(gè)名字叫做Bonjour,它能自己搜索IP網(wǎng)絡(luò)上的設(shè)備。Bonjour應(yīng)用IEEE規(guī)范的IP協(xié)議來讓IP網(wǎng)絡(luò)上的設(shè)備在網(wǎng)絡(luò)中傳播自己的訊號,所以人們就不需要自己手工地去配置IP地址。一旦本地局域網(wǎng)上的設(shè)備應(yīng)用了Bonjour服務(wù),就可以在此網(wǎng)絡(luò)中自動(dòng)傳播自己的訊號被其他設(shè)備發(fā)現(xiàn),從而進(jìn)行鏈接。
mNDS和DNS_SD兩個(gè)網(wǎng)絡(luò)協(xié)議是Bonjour技術(shù)的基石,在Bonjour技術(shù)中應(yīng)用了這兩個(gè)技術(shù)的精髓,因此有必要先對mDNS和DNS_SD協(xié)議作簡要闡明。
當(dāng)本地網(wǎng)絡(luò)上不存在域名解析服務(wù)器時(shí)適合使用mDNS協(xié)議來解決聯(lián)網(wǎng)問題,設(shè)備經(jīng)過組播的形式交換DNS記載來實(shí)現(xiàn)解析請求中的域名。假設(shè)一個(gè)場景,有A,B,C,D四臺設(shè)備要進(jìn)行通信,而D設(shè)備處于服務(wù)器端。設(shè)備D使用某個(gè)IP地址,A.local的地址發(fā)送查詢信息。設(shè)備A收到設(shè)備D的查詢信息后,同樣通過相同IP地址向設(shè)備D發(fā)送設(shè)備a的信息,此時(shí),存在于此局域網(wǎng)內(nèi)的所有設(shè)備,如B、C、D都會(huì)收到設(shè)備A發(fā)出的信息,設(shè)備B、C、D收到設(shè)備A的信息后會(huì)將A的信息包括IP地址、端口號等刷新存儲(chǔ)到自己的緩沖區(qū)內(nèi)。
下面對DNS_SD協(xié)議作簡單介紹。DNS_SD使用了以DNS為基礎(chǔ)的三種服務(wù)發(fā)現(xiàn)記載類型:SRV記載、TXT記載、PTR記載,其中:
(1)服務(wù)發(fā)現(xiàn):類型為PTR記載包會(huì)被應(yīng)用DNS_SD的網(wǎng)絡(luò)設(shè)備會(huì)發(fā)送到本地局域網(wǎng),所詢問服務(wù)規(guī)式為:service.transport.domain。service代表設(shè)備需要查詢的服務(wù),transport代表依次查詢所用的協(xié)議,domain表示此次詢問的域名,使用對應(yīng)服務(wù)的設(shè)備在收到詢問信息后會(huì)激活本設(shè)備上的相應(yīng)的實(shí)例。
(2)獲取服務(wù)實(shí)例的端口號與主機(jī)名:當(dāng)網(wǎng)絡(luò)設(shè)備選擇一個(gè)實(shí)例后,對實(shí)例的主機(jī)名和端口號的記載是必須的,這就是 SRV記載。用戶設(shè)備在選擇一個(gè)實(shí)例后會(huì)發(fā)送一個(gè)mDNS請求,設(shè)備在收到請求后,若存在請求消息中相應(yīng)的實(shí)例,則會(huì)激活SRV記載,其中存儲(chǔ)了這個(gè)實(shí)例所相對的端口號與主機(jī)名。所以SRV記載中存儲(chǔ)了主機(jī)到服務(wù)與端口之間的映射關(guān)系,無論端口號是否發(fā)生變化。
(3)service實(shí)例的信息:在某種特定場合下,一個(gè)實(shí)例不僅保存了網(wǎng)絡(luò)設(shè)備的主機(jī)名等基礎(chǔ)信息外,還包括很多了附加信息,在TXT記錄中存有附加記錄,記錄格式為鍵值對。
在其中其實(shí)已經(jīng)包含了許多 Bonjour協(xié)議的基本原理。我們可以把Bonjour技術(shù)當(dāng)成以上兩個(gè)協(xié)議的組合。DNS_SD協(xié)議獲取提供某個(gè)服務(wù)的網(wǎng)絡(luò)設(shè)備的主機(jī)名和端口號,然后在對主機(jī)名和端口號進(jìn)行解析找到相對應(yīng)的IP地址,這樣就實(shí)現(xiàn)了Bonjour技術(shù)的基本原理。
在一些特定的場合如沒有DHCP服務(wù)配置和只能人為手動(dòng)設(shè)置IP地址時(shí),使用Bonjour技術(shù)的網(wǎng)絡(luò)設(shè)備可以獲得在本地網(wǎng)絡(luò)中的域名和IP地址進(jìn)行通信,但是路由的配置是我們必須的操作。
在一般的網(wǎng)絡(luò)環(huán)境中,一臺網(wǎng)絡(luò)設(shè)備想要在互聯(lián)網(wǎng)中獲得IP地址有兩種方式。一種是動(dòng)態(tài)分配,即路由器自動(dòng)地為網(wǎng)絡(luò)設(shè)備分配IP地址,這種方式獲得的IP地址是會(huì)變化的,另一種是靜態(tài)分配,即由開發(fā)人員人為手動(dòng)地為設(shè)備配置,此方式獲得的IP地址不會(huì)發(fā)生變化,但可能會(huì)與互聯(lián)網(wǎng)中已經(jīng)存在的IP地址發(fā)生沖突。在沒有DNS核心域名解析服務(wù)器的網(wǎng)絡(luò)中,路由器無法動(dòng)態(tài)為網(wǎng)絡(luò)設(shè)備分配IP地址,開發(fā)人員只有手動(dòng)為網(wǎng)絡(luò)設(shè)備分配IP地址,但是這種方式不方便也存在許多缺點(diǎn)。如何使網(wǎng)絡(luò)設(shè)備能夠自動(dòng)獲取生效的IP地址正是Bonjour解決的主要問題。
在IPV4環(huán)境中,Bonjour技術(shù)實(shí)現(xiàn)了IP地址rand獲取的功能,Bonjour技術(shù)自動(dòng)生成一個(gè)IP地址,然后詢問此本地網(wǎng)絡(luò)中有沒有存在相同的IP地址,如果存在相同的IP地址,則再次生成一個(gè)IP地址,一直持續(xù)到局域網(wǎng)內(nèi)沒有相同的IP地址,此時(shí)設(shè)備則把這個(gè)IP地址作為自己的IP地址。
使用了Bonjour技術(shù)的網(wǎng)絡(luò)設(shè)備雖然有了自動(dòng)獲取IP地址和有效域名,但是也有無法符合人們的某些需要的場合。比如用戶需要的是打印服務(wù),此時(shí)并不需要關(guān)注提供服務(wù)的設(shè)備的IP地址和域名。而Bonjour技術(shù)所提供的服務(wù)發(fā)現(xiàn)能力就能讓網(wǎng)絡(luò)設(shè)備很輕易地發(fā)現(xiàn)本地局域網(wǎng)中的所有可訪問服務(wù)。
當(dāng)然Bonjour技術(shù)所提供的這些能力也有自己的一個(gè)的使用規(guī)則,當(dāng)一臺網(wǎng)絡(luò)設(shè)備需要訪問http服務(wù)時(shí),使用Bonjour技術(shù)的設(shè)備會(huì)自動(dòng)查詢本地局域網(wǎng)中http的服務(wù),然后將會(huì)向發(fā)起查詢的網(wǎng)絡(luò)設(shè)備返送請求下消息。此時(shí)用戶就不需要關(guān)注服務(wù)在那一臺網(wǎng)絡(luò)設(shè)備上,也有不需要查詢域名和IP地址了。
Bonjour技術(shù)雖然免去了DNS服務(wù)器解析域名的尋址操作,但是頻繁地發(fā)送網(wǎng)絡(luò)請求會(huì)產(chǎn)生較為龐大的網(wǎng)絡(luò)流量。針對這種情況Bonjour技術(shù)采用了以下績點(diǎn)措施來使網(wǎng)絡(luò)流量的花費(fèi)不至于太大。
為了避免主機(jī)發(fā)送重復(fù)的已經(jīng)請求過的信息,Bonjour技術(shù)采用了緩存機(jī)制。例如,當(dāng)一臺網(wǎng)絡(luò)設(shè)備訪問局域網(wǎng)中某個(gè)復(fù)印服務(wù)時(shí),網(wǎng)絡(luò)設(shè)備在收到請求后就會(huì)將這個(gè)請求緩存下來。當(dāng)再有網(wǎng)絡(luò)設(shè)備要訪問復(fù)印服務(wù)時(shí),就不必再向本地網(wǎng)絡(luò)發(fā)送請求消息了,本地網(wǎng)絡(luò)中已經(jīng)緩存了這個(gè)列表。系統(tǒng)會(huì)自動(dòng)對這個(gè)列表進(jìn)行維護(hù),用戶就不需要進(jìn)行維護(hù)操作了。
Bonjour技術(shù)的請求中會(huì)包含一個(gè)已經(jīng)訪問過的服務(wù)的列表來阻止重復(fù)呼應(yīng)相同的請求。例如,一臺網(wǎng)絡(luò)設(shè)備正在訪問復(fù)印機(jī)的服務(wù),頭一個(gè)請求沒有已訪問的復(fù)印服務(wù)。當(dāng)這臺設(shè)備再次訪問打印服務(wù)時(shí),由于請求列表里存在已訪問的打印服務(wù) ,此時(shí)Bonjour不會(huì)再次發(fā)起呼應(yīng)請求。
[1]陳冠升,胥布工.基于無線網(wǎng)絡(luò)技術(shù)的饋線終端設(shè)計(jì)[J].低壓電器,2010(21).
[2]耿建平,姚英.關(guān)于Bonjour技術(shù)的研究[J].國外電子測量技術(shù),2011(04).
[3]徐成云.幾種主要傳輸網(wǎng)絡(luò)技術(shù)應(yīng)用的探討[J].中國新技術(shù)新產(chǎn)品,2010(19).