ESP32:mdns協議


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

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

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

比如,A主機進入局域網,開啟了mDNS服務,並向mDNS服務注冊以下信息:提供FTP服務,IP192.168.1.101,端口是21。當B主機進入局域網,並向B主機的mDNS服務請求,要找局域網內FTP服務器,B主機的mDNS就會去局域網內向其它的mDNS詢問,並且最終告訴你,有一個IP地址為192.168.1.101,端口號是21的主機,也就是A主機提供 FTP服務,所以B主機就知道了A主機的IP地址和端口號了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM