国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于mDNS協(xié)議的LXI網(wǎng)絡發(fā)現(xiàn)功能設計

2012-08-07 07:52:44徐澤君黃建國郭艷輝馬敏
電子測試 2012年2期
關鍵詞:端口號數(shù)據(jù)包儀器

徐澤君,黃建國,郭艷輝,馬敏

(電子科技大學自動化工程學院 四川成都 611731)

0 引言

基于LXI總線的儀器已經(jīng)成為當前電子測試領域研究的熱門方向。LXI(LAN eXtensions for Instrumentiation)是以著名的工業(yè)標準以太網(wǎng)(Ethernet)技術(shù)為基礎,構(gòu)成了一種適用于自動測試系統(tǒng)的新一代模塊化儀器平臺標準[4]。利用成熟的計算機網(wǎng)絡技術(shù),可以很方便地組建基于LXI總線的分布式測試系統(tǒng)。然而由此帶來的問題就是主控制器如何快速簡便地發(fā)現(xiàn)網(wǎng)絡上的儀器設備。

在LXI 1.1標準中,LXI標準要求所有LXI儀器必須支持VXI-11網(wǎng)絡發(fā)現(xiàn)協(xié)議,該協(xié)議以ONC/RPC為基礎,解決了分布式測試系統(tǒng)中儀器的網(wǎng)絡發(fā)現(xiàn)問題[5]。但是隨著測試系統(tǒng)的不斷擴充升級,該協(xié)議的缺點也日益顯現(xiàn)出來。VXI-11協(xié)議屬于一種被動的查詢模式,系統(tǒng)內(nèi)的儀器需要等待主控制器發(fā)來的查詢信息,然后返回應答信息,這樣主控制器才能發(fā)現(xiàn)儀器存在于本系統(tǒng)中,如果中途有新的儀器加入系統(tǒng),主控制器并不能立即感應到新儀器,只有重新查詢才能發(fā)現(xiàn)新的儀器設備[6],而且當系統(tǒng)中儀器較多時,這樣的查詢過程會很慢,會影響測試系統(tǒng)整體的測試效率。

針對以上VXI-11協(xié)議的不足,LXI聯(lián)盟在 1.1之后的版本中提出了新的網(wǎng)絡發(fā)現(xiàn)協(xié)議——基于mDNS的網(wǎng)絡發(fā)現(xiàn)協(xié)議。通過mDNS協(xié)議,LXI設備可以進行更加高效,便捷的發(fā)現(xiàn)操作。

1 mDNS協(xié)議

mDNS是由IETF Zeroconf和DNS 擴展工作組成員共同努力的成果,mDNS對DNS做了最小化的更改,能夠為本地小型網(wǎng)絡提供類似DNS的服務。mDNS協(xié)議使用和DNS協(xié)議一樣的編程接口,運行語義和數(shù)據(jù)包格式[3]。DNS協(xié)議是一種標準的網(wǎng)絡協(xié)議,mDNS協(xié)議只是增加了DNS協(xié)議所沒有的多播模式,因此開發(fā)基于mDNS協(xié)議的程序比較簡單。

在本地組建的小型網(wǎng)絡內(nèi),比如分布式的測試系統(tǒng),如果想要實現(xiàn)域名解析的功能,需要為該網(wǎng)絡配備一臺DNS服務器,這樣做不僅成本昂貴而且需要的技術(shù)復雜,因此mDNS的出現(xiàn)彌補了這一缺陷。使用mDNS技術(shù)使網(wǎng)絡內(nèi)每臺設備都具備DNS服務器的功能,從而不必為網(wǎng)絡單獨配備一臺DNS服務器,大大節(jié)約了成本。

mDNS協(xié)議是一種端到端的名稱服務,當設備加入網(wǎng)絡時,主動向多播地址(224.0.0.251)和端口號(5353)通告自己的主機名和能夠提供的服務[3],這樣使得主控器和其他設備能夠立刻感應到新的設備。

2 DNS-SD協(xié)議

DNS-SD協(xié)議是一種以mDNS協(xié)議為基礎的服務發(fā)現(xiàn)協(xié)議,通過該協(xié)議LXI設備可以向本地網(wǎng)絡通告自身所能提供的服務名稱。DNS-SD協(xié)議利用DNS協(xié)議中的PTR、SRV和TXT記錄來聲明所能提供的服務,它工作在單播和多播兩種模式下[1]。SRV記錄通告發(fā)現(xiàn)的主機名和端口號,PTR記錄保存LXI設備的服務名稱。通過PTR記錄查找一個具體的服務類型列表來實現(xiàn)服務發(fā)現(xiàn)的功能,所以僅通過查找?guī)в蟹疹愋蜆撕灥腜TR記錄就可以找到相應的服務。PTR記錄僅包含一條信息,那就是服務名稱,和SRV記錄的命名方式類似。SRV資源記錄把服務名字映射為提供服務的服務器名字,其中包含了服務器的域名和端口號[2]。

在某些情況下網(wǎng)絡發(fā)現(xiàn)需要獲得除了IP地址和端口號之外的更多信息,TXT記錄就是用來保存域名的附加文本信息,其內(nèi)容要按照一定的格式編寫。TXT記錄里名稱和值成對出現(xiàn),最大長度不超過255個字節(jié),并且任何服務名稱都有一個“txtvers”記錄,該記錄指明版本號,總是放在首位,例如“txtvers=1”。TXT記錄的結(jié)尾沒有結(jié)束符,包含的字節(jié)總數(shù)要少于1300,以適應網(wǎng)絡單幀所能發(fā)送的字節(jié)數(shù)。特別的是主機名和端口號必須保存在SRV記錄中,不能“key=value”的形式存在于TXT記錄中。圖1是TXT記錄的一種組成形式[3]:

圖1 TXT記錄的組成形式

其中附加信息之前的數(shù)字表示的是附加信息的字符串長度。

LXI協(xié)議要求支持DNS-SD協(xié)議的設備至少可以通告如圖2所示的服務信息。

其中針對HTTP服務,TXT關鍵字部分的內(nèi)容是:

_http._tcp txtvers=1 path=/

針對LXI服務,TXT關鍵字部分的內(nèi)容是:

LXI服務的TXT記錄中保存的信息有生產(chǎn)廠商,型號,串號,固件版本號,這與向儀器發(fā)送*IDN?命令之后返回的信息是一致的。

圖2 LXI基本服務

3 mDNS協(xié)議程序設計

mDNS實現(xiàn)由兩部分組成,一部分是上位機mDNS客戶端,另一部分是儀器內(nèi)部mDNS 服務器端。

3.1 上位機mDNS客戶端

上位機mDNS客戶端的作用是實現(xiàn)發(fā)現(xiàn)網(wǎng)絡上的儀器和進行資源管理,功能類似于Agilent公司提供的IO Libraries。APPLE公司在mDNS協(xié)議的實現(xiàn)應用上已經(jīng)比較成熟,其mDNS協(xié)議的實現(xiàn)被稱為Bonjour。支持Bonjour的設備在網(wǎng)絡中自動傳播它們自己的服務信息并聆聽其它設備的服務信息,Bonjour使局域網(wǎng)中的系統(tǒng)和服務在沒有網(wǎng)絡管理員的情況下很容易被找到。

Bonjour顯示局域網(wǎng)內(nèi)支持組播域名協(xié)議的設備和應用的名稱,采用multicast DNS來解決區(qū)域網(wǎng)內(nèi)設備命名沖突。目前Bonjour可以支持多種系統(tǒng)平臺,包括Windows、MAC OS X、Linux和VxWorks等。Linux中廣泛使用的mDNS協(xié)議實現(xiàn)是Avahi,同樣是一種zeroconf協(xié)議的實現(xiàn)。

在這里使用APPLE公司的軟件Bonjour(Windows版本)作為上位機mDNS客戶端,該軟件不僅能夠?qū)崿F(xiàn)網(wǎng)絡發(fā)現(xiàn)主機名和服務名,而且會在IE瀏覽器下安裝一個Bonjour插件,該插件可以自動顯示網(wǎng)絡中支持mDNS協(xié)議的并提供WEB服務的設備主機名。

瀏覽器左邊的列表框用來顯示網(wǎng)絡中儀器的主機名。當支持mDNS協(xié)議的儀器加入到網(wǎng)絡中時,列表中就會自動顯示儀器的主機名。

3.2 儀器內(nèi)部mDNS服務器端

儀器內(nèi)部mDNS服務器的主要功能是向多播地址224.0.0.251和端口號5353發(fā)送數(shù)據(jù)包聲明本地的主機名和服務名,并且解決主機名和服務器名沖突的問題。程序流程圖如圖3所示。

圖3 服務器端程序設計流程圖

在儀器啟動時,mDNS服務器端程序?qū)@取本地主機名、服務器名、IP地址和端口號等信息,建立本地DNS數(shù)據(jù)庫,然后組建mDNS數(shù)據(jù)包,主機名和端口號包含在SRV記錄中,服務名稱包含在PTR記錄中,TXT記錄包含生產(chǎn)廠商等附加信息。組建完數(shù)據(jù)包之后向多播地址224.0.0.251和5353端口發(fā)送該數(shù)據(jù)包,本機的儀器信息將會在本地局域網(wǎng)內(nèi)傳播,凡是加入到該多播組的設備都能收到該數(shù)據(jù)包。主控制器收到儀器發(fā)送過來的數(shù)據(jù)包之后就能夠提取出儀器的主機名和IP地址等信息,進而通過這些信息獲取儀器信息。

為了避免網(wǎng)絡中的主機名發(fā)生沖突,引起設備混淆。在聲明本地信息的同時,儀器還在監(jiān)聽5353端口,看是否收到其他設備發(fā)來的具有相同格式信息的數(shù)據(jù)包。如果收到其他設備發(fā)來的數(shù)據(jù)包,那將數(shù)據(jù)包內(nèi)的儀器的主機名提取出來,與本地的主機名進行比較,假如一樣,那就發(fā)生了名字沖突,本地的設備將會修改本機的名稱,修改的方法是在原來名稱的后面加上數(shù)字來加以區(qū)別,例如本地主機名為“mydevice”,那將會修改為“mydevice_1”,這樣就避免了主機名沖突。

如果本地主機名因為名稱沖突而改變,那么該主機名將不會輕易再改變,即使在儀器重啟之后,本地主機名仍然是修改后的名稱。除非用戶重新設置主機名,或者啟動LAN配置重啟機制,那么主機名將會恢復到出廠設置的主機名。如果服務名稱也由于名稱沖突而改變,其處理方法與處理主機名沖突的方法一致。

如果監(jiān)聽端口沒有收到其它儀器發(fā)送過來的mDNS數(shù)據(jù)包,那么該儀器將繼續(xù)組建包含本機信息的mDNS數(shù)據(jù)包并且持續(xù)向多播地址發(fā)送。用戶需要停止mDNS功能時候,可以讓儀器在停止之前發(fā)送停止數(shù)據(jù)包,告知網(wǎng)絡上的其他設備本機將停止提供mDNS服務功能,這樣主控器收到停止數(shù)據(jù)包后將會把列表中的儀器主機名刪除。如果用戶重新啟用儀器的mDNS服務,主控制器的列表中就會重新出現(xiàn)儀器的主機名。

4 測試結(jié)果

為了與DNS名稱解析域相區(qū)分,運行mDNS協(xié)議的設備都位于“.local”域中,表明要訪問的設備在本地網(wǎng)絡中。如果用戶想要使用主機名來訪問設備主頁,那么用戶可以在瀏覽器的地址欄輸入主機名加“.local”的方式來訪問。假如設備主機名為“mydevice”,那么就可以在IE瀏覽器地址欄輸入“mydevice.local”,然后瀏覽器同樣會向多播地址224.0.0.251和端口號5353發(fā)送DNS請求數(shù)據(jù)包,然后儀器端的mDNS服務器程序就會解析該請求,并且將儀器的IP地址和端口號返回給瀏覽器,這樣瀏覽器就可以訪問設備主頁了。

打開主控電腦的IE瀏覽器,將主控電腦與LXI設備同時連接到交換機上,打開設備,IE瀏覽器內(nèi)的Bonjour插件的窗口上就會自動顯示網(wǎng)絡中支持mDNS協(xié)議并且提供WEB服務的設備名。如圖4所示。

圖4 Bonjour列表

在上圖中,雙擊Bonjour列表里的設備名“UESTC_LXI”,則瀏覽器自動去訪問“uestc_lxi.local”,并且打開設備的主頁。

實現(xiàn)HTTP服務發(fā)現(xiàn)功能還可以通過另外一種形式,那就是可以在命令行提示符下輸入命令[7]:

dns-sd-Z _http._tcp local

通過此命令可以看到mDNS數(shù)據(jù)包中各種記錄的詳細內(nèi)容,如圖5所示。

圖5 HTTP服務發(fā)現(xiàn)結(jié)果

同樣的方法,在命令行下輸入命令:

dns-sd-Z _lxi._tcp local

通過此命令來發(fā)現(xiàn)LXI服務,返回的儀器信息與向儀器發(fā)送*IDN?命令所返回的信息是一致的。如圖6所示。

圖6 LXI服務發(fā)現(xiàn)結(jié)果

5 小結(jié)

VXI-11協(xié)議是LXI儀器的基本的網(wǎng)絡發(fā)現(xiàn)協(xié)議,mDNS協(xié)議的出現(xiàn)彌補了VXI-11協(xié)議速度慢,更新不及時的缺點,實現(xiàn)了快速簡潔的網(wǎng)絡發(fā)現(xiàn)功能。本文基于LXI 1.3版本對mDNS協(xié)議的規(guī)定,實現(xiàn)了HTTP服務和LXI服務名的發(fā)現(xiàn)功能,并且解決了名稱沖突問題。在組建復雜的LXI測試系統(tǒng)中,mDNS協(xié)議將會在網(wǎng)絡發(fā)現(xiàn)方面發(fā)揮很好的作用。

[1]王巖,王雄,曾鵬.零配置網(wǎng)絡協(xié)議的研究[J].計廣東通信技術(shù),20075,3(12):1685-1687.

[2]王彪. LXI關鍵技術(shù)研究[D].哈爾濱:哈爾濱工業(yè)大學,2009.

[3]Ashley Butterworth,Matthew Xavier Mora.Device Discovery with mDNS and DNS-SD [P].Apple Inc,2009.

[4]馬敏,陳光礻禹.一種基于以太網(wǎng)的新型儀器平臺——LXI[J].電測與儀表,2006,43(1):57-59.

[5]LXI Standard Rev.1.3[S]. LXI Consortium, Inc.,October30.2008.

[6]鐘世春,馬敏,王厚軍. LXI儀器中VXI-11協(xié)議的研究與實現(xiàn)[J].電子科技大學學報,2010,39(4):65-66.

[7]趙濤,于月芬,李建剛. LXI總線網(wǎng)絡發(fā)現(xiàn)機制研究[J].電測與儀表,2008,45(510):31-34.

猜你喜歡
端口號數(shù)據(jù)包儀器
《現(xiàn)代儀器與醫(yī)療》2022年征訂回執(zhí)
《現(xiàn)代儀器與醫(yī)療》2022年征訂回執(zhí)
在Docker容器中安裝應用程序
SmartSniff
我國古代的天文儀器
淺談以java為基礎的Socket通信簡介及實現(xiàn)
青春歲月(2017年5期)2017-04-20 18:34:23
基于Libpcap的網(wǎng)絡數(shù)據(jù)包捕獲器的設計與實現(xiàn)
Winsock編程在《計算機網(wǎng)絡基礎》教學中的應用
基于Android系統(tǒng)的互動展示APP的研究與設計
視覺注意的數(shù)據(jù)包優(yōu)先級排序策略研究
双鸭山市| 宁武县| 孝义市| 镇宁| 万州区| 庄河市| 永州市| 房山区| 南京市| 高青县| 蒲江县| 南华县| 巨鹿县| 西藏| 英吉沙县| 洪洞县| 平谷区| 新闻| 阿勒泰市| 哈密市| 石棉县| 富阳市| 白河县| 安徽省| 乌鲁木齐市| 哈巴河县| 沁阳市| 介休市| 廉江市| 科尔| 灌云县| 镇远县| 白城市| 禄丰县| 鸡泽县| 江西省| 仪陇县| 津市市| 舒城县| 高平市| 伽师县|