mDNS原理的简单理解

该文章由 Binkery 发布于 Binkery技术博客, 如转载请注明出处,该文章的链接地址为 https://www.binkery.com/archives/318.html

mDNS multicast DNS , 使用5353端口。

在局域网内,你要通过一台主机和其他主机进行通信,你需要知道对方的ip地址,但是有些时候,你并不知道对方的ip地址,因为一般使用DHCP动态分配ip地址的局域网内,各个主机的IP地址是由DHCP服务器来帮你分配IP地址的。所以在很多情况下,你要知道对方的IP地址是比较麻烦的。

mDNS就是来解决这个问题的。通过一个约定俗成的端口号,5353。(这个端口号应该是由IETF组织约定的。)每个进入局域网的主机,如果开启了mDNS服务的话,都会向局域网内的所有主机组播一个消息,我是谁,和我的IP地址是多少。然后其他也有该服务的主机就会响应,也会告诉你,它是谁,它的IP地址是多少。当然,具体实现要比这个复杂点。

比如,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地址和端口号了。

大概的原理就是这样子,mDNS提供的服务要远远多于这个,当然服务多但并不复杂。

在Apple 的设备上(电脑,笔记本,iphone,ipad等设备)都提供了这个服务。很多Linux设备也提供这个服务。Windows的设备可能没有提供,但是如果安装了iTunes之类的软件的话,也提供了这个服务。

这样就可以利用这个服务开发一些局域网内的自动发现,然后提供一些局域网内交互的应用了。

jmDNS是一个JAVA平台的,提供mDNS服务的第三方库。在这个jar包引入到Android项目里,就可以获得mDNS服务了。

下文是来自http://www.multicastdns.org/ 的说明。

Multicast DNS is a way of using familiar DNS programming interfaces, packet formats and operating semantics, in a small network where no conventional DNS server has been installed.
Multicast DNS is a joint effort by participants of the IETF Zero Configuration Networking (zeroconf) and DNS Extensions (dnsext) working groups. The requirements are driven by the Zeroconf working group; the implementation details are a chartered work item for the DNSEXT group. Most of the people working on mDNS are active participants of both working groups.
While the requirements for Zeroconf name resolution could be met by designing an entirely new protocol, it is better to provide this functionality by making minimal changes to the current standard DNS protocol. This saves application programmers from having to learn new APIs, and saves application programmers from having to write application code two different ways — one way for large configured networks and a different way for small Zeroconf networks. It means that most current applications need no changes at all to work correctly using mDNS in a Zeroconf network. It also means that engineers do not have to learn an entirely new protocol, and current network packet capture tools can already decode and display DNS packets, so they do not have to be updated to understand new packet formats.

本站文章除注明转载外,均为本站原创或翻译
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果
转载请注明:文章转载自:Binkery技术博客
本文地址:https://binkery.com/archives/318.html

Wireshark是一个开放源代码的网络封包分析软件,可用于捕获和分析网络数据包。你可以在本机上使用Wireshark来捕获通过本机的数据流量。引用 MDNS(Multicast DNS)是一种用于在局域网中发现和解析网络设备的服务。它使用特定的网络协议来实现设备之间的通信。如果你想使用Wireshark来捕获和分析MDNS数据包,你可以使用过滤器"mdns"来只捕获与MDNS相关的数据包。这样,你就可以观察局域网中设备之间的MDNS通信。引用 要使用Wireshark来抓取MDNS数据包,你需要按照以下步骤进行操作: 1. 首先,确保你已经安装了最新版本的Wireshark。你可以从官方网站下载安装包并按照指示进行安装。引用 2. 打开Wireshark软件,并选择你想要抓取数据包的网络接口。这可以是你的无线网卡或以太网接口。 3. 在过滤器框中输入"mdns",以只捕获与MDNS相关的数据包。这将过滤掉其他类型的数据包,使你能够更好地分析MDNS通信。引用 4. 点击"Start"按钮开始捕获数据包。Wireshark将开始监听指定的网络接口,并显示捕获到的数据包列表。 5. 当你希望停止捕获数据包时,点击"Stop"按钮。然后,你可以使用Wireshark的分析功能来查看和解析捕获到的MDNS数据包。引用 如果你对Wireshark的使用和MDNS的分析更加详细的了解,可以参考一些提供了相关信息的文章。其中包括提到的《Wireshark的下载安装及简单使用教程》和提到的《WireShark抓包分析》。这些文章将为你提供更多关于Wireshark和MDNS的信息和指导。引用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值