mDNS 协议服务

时间: 2023-08-18 admin IT培训

mDNS 协议服务

mDNS 协议服务

最近有机会要学习一下mDNS 协议,查阅了几天相关的资料,并且带着一些问题进行学习理解,分享一下自己的总结理解,可能有诸多不足之处,还请谅解。

1.什么是mDNS

mdns 即多播(组播)dns(Multicast DNS),mDNS主要实现了在没有传统DNS服务器的情况下使局域网内的主机实现相互发现和通信,使用的端口为5353,遵从dns协议,使用现有的DNS信息结构、名语法和资源记录类型。并且没有指定新的操作代码或响应代码。在局域网中,设备和设备之前相互通信需要知道对方的ip地址的,大多数情况,设备的ip不是静态ip地址,而是通过dhcp协议动态分配的ip 地址,如何设备发现呢,就是要mdns大显身手,例如:现在物联网设备和app之间的通信,要么app通过广播,要么通过组播,发一些特定信息,感兴趣设备应答,实现局域网设备的发现。当然,mDNS的功能要不这强大的多,这只不过是最常用简单的使用。

2.mdns 工作原理简单描述:

mdns 使用组播地址为: 224.0.0.251 (ipv6: FF02::FB) 端口为5353,mdns 是用于局域网内部的,并且主机的域名为.local 结尾,每个进入局域网的主机,如果开启了mDNS服务的话,都会向局域网内的所有主机组播一个消息,我是谁(域名),和我的IP地址是多少。然后其他有mdns服务的主机就会响应,也会告诉你,它是谁(域名),它的IP地址是多少。 当然设备需要服务时,就是使用mdns 查询域名对对应的ip地址,对应的设备收到该报文后同样通过组播方式应答,此时其他主机设备也是可以收到该应答报文,其他主机也会记录域名和ip 以及ttl 等,更新缓存。例如:A主机设备进入局域网,开启了mDNS 服务,并向mDNS服务注册以下信息:我提供音响服务,我的IP是 192.168.1.101,端口是 21。B主机设备进入局域网,B 主机会向他自己的 mDNS 服务请求,我要找局域网内 的音响 服务器,B主机的 mDNS 就会去局域网内向其他的 mDNS 询问,A主机mDNS收到后会反馈给你一个信息,最终告诉你,有一个IP地址为 192.168.1.101,端口号是 21 的主机,也就是 A 主机提供 音响 服务,所以 B 主机就知道了 A 主机的 IP 地址和端口号了。原理就是这样子,mDNS提供的服务要远远多于这个,当然服务多但并不复杂。

3.mDNS Responder与Bonjour的关系:

我们首先要理解两者的意思,Bonjour是法语中的Hello之意。它是Apple公司为基于组播域名服务(multicast DNS)的开放性零配置网络标准所起的名字。使用Bonjour的设备在网络中自动组播它们自己的服务信息并监听其它设备的服务信息。设备之间就像在打招呼,这也是该技术命名为Bonjour的原因。Bonjour使得局域网中的系统和服务即使在没有网络管理员的情况下也很容易被找到。Bonjour就是一个基于mDNS的产品。Responder 意味响应器,当有mDNS向我发送请求时,我自己的mDNS要做出响应,反馈给他我的信息。例子可同上。

4.mDNS 同 UDP的关系

mDNS 是基于 UDP实现的。

5.思考

a.mDNS 能适配的网络拓扑结构, 是否支持多层网关?
b.设备多网络接口是否需要绑定,还是lib 自己处理?
c.IP 支持变化是否需要重新rebind, 还是 lib 自己处理?
d.IPV4/IPV6, linklocal 支持方式有哪些?

思考题有知道的同僚可以写在评论区。