首页 > 其他分享 >mDNS原理的简单理解——每个进入局域网的主机,如果开启了mDNS服务的话,都会向局域网内的所有主机组播一个消息

mDNS原理的简单理解——每个进入局域网的主机,如果开启了mDNS服务的话,都会向局域网内的所有主机组播一个消息

时间:2023-05-31 12:02:43浏览次数:43  
标签:mDNS 所有主 服务 主机 局域网 地址 IP

MDNS协议介绍

mDNS multicast DNS , 使用5353端口,组播地址 224.0.0.251。在一个没有常规DNS服务器的小型网络内,可以使用mDNS来实现类似DNS的编程接口、包格式和操作语义。MDNS协议的报文与DNS的报文结构相同,但有些字段对于MDNS来说有新的含义。

每个进入局域网的主机,如果开启了mDNS服务的话,都会向局域网内的所有主机组播一个消息,我是谁,和我的IP地址是多少。然后其他也有该服务的主机就会响应,也会告诉你,它是谁,它的IP地址是多少。mDNS的域名与普通DNS的域名是通过后缀.local区分开来的。如果一台终端需要访问一个mDNS域名,他就会向局域网内发送组播,询问该域名的IP是多少。

例如: 

一个设备接入网络,首先查询名称是否冲突,并通告当前服务器信息

冲突检测结束后,发送MDNS通告,通知其它设备更新DNS缓存

其它设备对该域名访问时,会发起MDNS查询

 

mDNS原理的简单理解

转载自:http://www.binkery.com/

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

鉴于发现这篇文章最近的浏览量比较多,晚上也有不少转载,特别声明一下,文章水平可能不大够,只是我当时的一些理解,所以希望大家以批判的角度来看,然后又什么问题欢迎讨论。真心不希望误导大家^_^

mDNS 的工作原理

首先,在 IP 协议里规定了一些保留地址,其中有一个是 224.0.0.251,对应的 IPv6 地址是 [FF02::FB]。

mDNS 协议规定了一个端口,5353。

mDNS 基于 UDP 协议。

每个进入局域网的主机,如果开启了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 服务了。Android 在 3.x 还是 4.x 之后已经提供局域网内自动发现的 API 了,所以不需要使用 jmDNS 第三方库就能实现了。

标签:mDNS,所有主,服务,主机,局域网,地址,IP
From: https://blog.51cto.com/u_11908275/6385871

相关文章

  • CentOS使用系统镜像搭建局域网Yum源
     一、防火墙配置CentOS7.x8.x默认使用的是firewall作为防火墙,这里改为iptables防火墙。1、关闭firewall:systemctlstopfirewalld.service#停止firewallsystemctldisablefirewalld.service#禁止firewall开机启动systemctlmaskfirewalldsystemctlstopfirew......
  • 局域网 Windows 系统克隆方案有很多,以下是一些较为常见的
    局域网Windows系统克隆方案有很多,以下是一些较为常见的:Windows原生工具:Windows系统自带了众所周知的“系统备份和恢复”工具。您可以使用这个工具创建一个系统备份,并在需要的时候将备份还原到其他计算机中。这种方法的缺点是需要手动完成,不够自动化和高效。SymantecGho......
  • Windows 局域网批量安装可以帮助您快速在局域网内的多台计算机上部署 Windows 操作系
    Windows局域网批量安装可以帮助您快速在局域网内的多台计算机上部署Windows操作系统,提高部署效率。以下是基于WindowsServer环境下常用的局域网批量安装方法:基于Windows部署服务(WDS)的批量安装Windows部署服务(WDS)是用于集中式部署Windows操作系统的一种Windows......
  • 小白局域网搭建
    1. 实训目的路由交换机组网技术课程是信息安全专业的必修课,其课程实训作为课程实践环节之一,是学习过程中必不可少的重要内容。本次实训,综合所学路由交换课程需要掌握的技能点和知识点,力求通过本次实训训练,使我们更好地理解并掌握网络路由交换相关技能。通过中型综合园区网络组网的......
  • go检查所有主机的时间同步
    funccheckTimeSync(sssh.Interface,ipList[]string)error{logger.Info("checker:timeSync%v",ipList)for_,ip:=rangeipList{timeStamp,err:=s.CmdToString(ip,"date+%s","")iferr!=nil{ret......
  • 局域网通讯app有哪些?企业在选择的时候需要考虑哪些因素?
    随着科技的不断发展,人们的通讯方式也在不断地更新换代。在现今社会中,人们无论是工作还是生活,都需要经常进行通讯。而对于一些公司或者团队内部来说,局域网通讯app成为了他们不可或缺的工具。那么,局域网通讯app有哪些呢?  飞鸽传书 飞鸽传书是一款专门为局域网通讯设计的软......
  • 测试局域网两台机器的之间的最大带宽
    工具下载:https://iperf.fr/iperf-download.php 测试环境:服务端(CentOS7):1、快速安装wget-O/usr/lib/libiperf.so.0https://iperf.fr/download/ubuntu/libiperf.so.0_3.1.3wget-O/usr/bin/iperf3https://iperf.fr/download/ubuntu/iperf3_3.1.3chmod+x/usr/bin/iperf32......
  • 同一局域网下,远程连接另一台电脑的Mysql数据库
    博客地址:https://www.cnblogs.com/zylyehuo/参考链接同一局域网,远程连接别人的Mysql数据库用电脑A去远程电脑B的数据库,那我们要先在电脑B上设置一下:step1:打开电脑B的数据库电脑B打开cmd,输入mysql-uroot-p,回车,输入mysql的密码,回车step2:为电脑A创建账号依次......
  • C# 获取局域网下的设备IP范围
    我们连接的WIFI,属性设置里有自动分配IP的选项。我们通过控制台输入ipconfig,看到当前IP是10.214.18.178 那自动分配IP范围是多少?路由器对IP是怎么分配的。下面是我整理的code,有需要的可以直接CopyIP范围获取:1privatevoidRefreshButton_OnClick(objectsender,RoutedEventAr......
  • esp8266,arduino,网页显示dht11温湿度,控制继电器开关,局域网智能家居
    不说了,上代码,用arduino实现esp8266代码#include<ESP8266WiFi.h>#include<WiFiClient.h>#include<ESP8266WebServer.h>#include<SimpleDHT.h>//定义DHT11引脚//VCC:5Vor3V//GND:GND//DATA:2intpinDHT11=D4;SimpleDHT11......