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
等,更新緩存。app
好比,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
地址和端口號了。code