1. 程式人生 > >ESP32:mdns協議

ESP32:mdns協議

mdns(即多播dnsMulticast DNS)主要實現了在沒有傳統DNS伺服器的情況下使區域網內的主機實現相互發現和通訊,使用的埠為5353,遵從dns協議,使用現有的DNS資訊結構、語法和資源記錄型別,並且沒有指定新的操作程式碼或響應程式碼。

在區域網中,裝置和裝置之前相互通訊需要知道對方的ip地址等資訊,大多數情況,裝置的ip不是靜態的,而是通過dhcp協議動態分配的,如何發現裝置彼此間的服務呢?現在物聯網裝置和app之間的通訊,要麼通過廣播,要麼通過組播,發一些特定資訊,感興趣的裝置應答,實現區域網裝置的發現,當然mdns比這強大的多。

mdns使用組播地址為224.0.0.251

ipv6FF02::FB),埠為5353mdns是用於區域網內部的,並且主機的域名以.local結尾,每個進入區域網的主機,如果開啟了mDNS服務的話,都會向區域網內的所有主機組播一個訊息——我是誰(域名)和IP地址是多少。然後其它有mdns服務的主機就會響應,也會告訴你——它是誰(域名)和IP地址是多少。當然裝置需要服務時,就是使用mdns查詢域名對對應的ip地址,對應的裝置收到該報文後同樣通過組播方式應答,此時其它主機裝置也是可以收到該應答報文,其它主機也會記錄域名和ip以及ttl等,更新快取。

比如,A主機進入區域網,開啟了mDNS服務,並向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地址和埠號了。