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