文章目錄
- 1 mDNS簡介
-
- 1.1 什麼是DNS
- 1.2 什麼是mDNS
- 2 應用舉例
1 mDNS簡介
參考資料:
- 樂鑫官網mDNS服務
- 百度百科
- 樂鑫官方例程
1.1 什麼是DNS
域名系統DNS(Domain Name System) 是網際網路使用的命名系統,用來把便于人們使用的機器名字轉換為IP位址。使用者與網際網路上某台主機通信時, 必須要知道對方的IP位址。 但在應用層為了便于使用者記憶各種網絡應用, 連接配接在網際網路上的主機不僅有IP位址, 而且還有便于使用者記憶的主機名字。 域名系統DNS能夠把網際網路上的主機名字轉換為IP位址。域名命名方式如下:

參考資料:《計算機網絡(第7版)-謝希仁》
1.2 什麼是mDNS
- mDNS 是一種多點傳播 UDP 服務,用來提供本地網絡服務和主機發現。
-
mdns 即多點傳播dns(Multicast DNS),mDNS主要實作了在沒有傳統DNS伺服器的情況下使區域網路内的主機實作互相發現和通信,使用的端口為5353,遵從dns協定,使用現有的DNS資訊結構、名文法和資源記錄類型。
工作原理舉例:
比如,A 主機進入區域網路,開啟了 mDNS 服務,并向A主機的 mDNS 服務注冊以下資訊:我提供 FTP 服務,我的 IP 是192.168.1.101,端口是 21。當 B 主機進入區域網路,并向 B 主機的 mDNS 服務請求,我要找區域網路内 FTP 伺服器,B主機的 mDNS 就會去區域網路内向其他主機的 mDNS 詢問(即多點傳播),并且最終告訴你,有一個IP位址為 192.168.1.101,端口号是 21 的主機,也就是 A 主機提供 FTP 服務,是以 B 主機就知道了 A 主機的 IP 位址和端口号了。
2 應用舉例
參考官方例程:mDNS example
根據官方例程,修改相應的參數,燒錄高開發闆,序列槽列印資料入下,部分截圖
mDNS 屬性
- hostname:裝置會去響應的主機名,如果沒有設定,會根據裝置的網絡接口名定義 hostname 。例如,my-esp32 會被解析為 my-esp32.local。
- default_instance:預設執行個體名(即易記的裝置名),例如 Jhon’s ESP32 Thing。如果沒有設定,将會使用 hostname。
mDNS 服務
mDNS 可以廣播裝置能夠提供的網絡服務的相關資訊,每個服務會由以下屬性構成。
- instance_name:執行個體名(即易記的服務名),例如 Jhon’s ESP32 Web Server。如果沒有定義,會使用 default_instance。
- service_type:(必需)服務類型,以下劃線為字首,這裡 列出了常見的類型。
- proto:(必需)服務運作所依賴的協定,以下劃線為字首,例如 _tcp 或者 _udp。
- port:(必需)服務運作所用的端口号。
- txt:形如 {var, val} 的字元串數組,用于定義服務的屬性。