2010-01-15 33 views
2

我正在使用Microchip的TCP/IP協議棧,並且我的設備的主機名未被廣播,儘管我可以使用其分配的IP來訪問它。如何在子網中廣播主機名

所以問題是,網絡設備使用什麼協議來廣播它的主機名,以便當我看到網絡中的設備列表時,我可以通過名稱來識別它?

是NetBIOS名稱服務還是別的?提前致謝。

+0

嗨。我的意思是這個問題在低級別的環境中,這意味着我需要逐字節地構建UDP數據包,所以我需要知道如何在本地子網中廣播我的主機名,或者如何響應以及如何響應知道主機名。謝謝。 – apalopohapa 2010-01-15 19:20:33

回答

6

爲網絡上的主機指定主機名的最不依賴於網絡的方式是通過DNS,您的設備本身無法控制,但全部不會丟失。

在大多數環境中,DHCP和DNS服務器是綁在一起的(Windows中的AD網絡,Linux上的DNSMasq等),所以你最好的選擇是依靠這種行爲。當您使用DHCP請求IP時,DHCP協議允許您指定您要使用的主機名,並且如果網絡設置爲允許DNS服務器創建和維護DNS條目,則您在您的過程中發送的主機名通常會使用DHCP請求。

DHCP參數被稱爲'主機名'。此參數的網絡協議文檔位於RFC 2132中,並解釋爲here

+0

+1很好的答案 – Madbreaks 2014-04-02 16:36:49

0

有支持此功能的WINS(基於NetBIOS)。

有ZeroConf/Bonjour提供「服務廣告」協議,但我猜這不是你在這裏後。

在「正常的」基於IP的網絡中,名稱解析將通過DNS層:DNS服務器傳播他們的數據庫(當然,如果指示的話),但在此層沒有「廣播」的概念。

0

我想你現在已經解決了這個問題,但我修改了Microchip堆棧中的dchp.c文件,並將以下內容添加到_DHCPSend()的選項部分。

// host name 
i = strlen(AppConfig.NetBIOSName); 
UDPPut(12);  //host name code 
UDPPut(i);  //length 
UDPPutString(AppConfig.NetBIOSName); 

這對我有效。

相關問題