ESP32:mdns協議
阿新 • • 發佈:2018-11-23
mdns
(即多播dns
,Multicast DNS
)主要實現了在沒有傳統DNS
伺服器的情況下使區域網內的主機實現相互發現和通訊,使用的埠為5353
,遵從dns
協議,使用現有的DNS
資訊結構、語法和資源記錄型別,並且沒有指定新的操作程式碼或響應程式碼。
在區域網中,裝置和裝置之前相互通訊需要知道對方的ip
地址等資訊,大多數情況,裝置的ip
不是靜態的,而是通過dhcp
協議動態分配的,如何發現裝置彼此間的服務呢?現在物聯網裝置和app
之間的通訊,要麼通過廣播,要麼通過組播,發一些特定資訊,感興趣的裝置應答,實現區域網裝置的發現,當然mdns
比這強大的多。
mdns
使用組播地址為224.0.0.251
ipv6
:FF02::FB
),埠為5353
。mdns
是用於區域網內部的,並且主機的域名以.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
地址和埠號了。