mDNS原理的简单理解——每个进入局域网的主机,如果开启了mDNS服务的话,都会向局域网内的所有主机组播一个消息,我是谁,和我的IP地址是多少。然后其他也有该服务的主机就会响应,也会告诉你,它是谁,它的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 第三方库就能实现了。















本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/bonelee/p/7567029.html,如需转载请自行联系原作者



相关文章
|
30天前
获取请求的主机的系统以及Ip地址
获取请求的主机的系统以及Ip地址
13 1
|
网络协议 网络架构
内网IP 外网IP 网卡 路由器通信过程(全)
       这几天上了计算机网络的课,对于老师讲的内容也是懵懵懂懂,一个慌神就没跟上,啥ip 啥NAT一脸蒙蔽。课后oogle补了点东西算是大致有了点了解,不过网上的总结都是零零散散而且点到即止。
4883 0
|
8天前
|
域名解析 网络协议 Linux
TCP/IP协议及配置、IP地址、子网掩码、网关地址、DNS与DHCP介绍
TCP/IP协议及配置、IP地址、子网掩码、网关地址、DNS与DHCP介绍
|
19天前
|
负载均衡 网络架构
IP地址:是给主机配置的,还是给网卡配置的?🤔
在探索网络的奥秘时,我们经常会遇到一个看似简单但又复杂的问题:IP地址到底是配置在主机上,还是配置在网卡上?为什么我们通常说的是“主机IP地址”呢?让我们一起深入探讨。
IP地址:是给主机配置的,还是给网卡配置的?🤔
|
8月前
|
存储 缓存 网络协议
交换机、IP地址、ARP协议
划分洪泛范围—隔离广播域(收到所有洪泛信息的设备集合) 每一个接口都是一个广播域 转发数据 路由表
82 0
|
11月前
|
Linux 数据安全/隐私保护
知道一个服务器IP应该怎么进入
首先我是国内,访问国外的网站比如谷歌等,访问特别慢,有时候甚至登录不进去。 现在知道了一个台湾或者国外的服务器应该怎么登录进去呢? 知道服务器IP之后,你还需要知道服务器的远程端口+帐号+密码才能登录的。 知道上面信息之后,大家可以在本地电脑试试。
238 0
知道一个服务器IP应该怎么进入
|
存储 网络协议 安全
IPv6 的无状态动态主机配置协议 (DHCP) 服务
节点使用基于IPv6的无状态动态主机配置协议服务 (Dynamic Host Configuration Protocol for IPv6,DHCPv6) 来获取配置信息,例如 DNS 递归名称服务器的地址,这不需要为单个客户端维护任何动态状态。使用无状态 DHCP 的节点必须通过其他机制(通常是无状态地址自动配置)获得其 IPv6 地址。本文档解释了 RFC 3315 的哪些部分必须在每种不同类型的 DHCP 代理中实现,以便代理可以支持无状态 DHCP。
140 0
IPv6 的无状态动态主机配置协议 (DHCP) 服务
|
存储 缓存 编解码
DHCP:动态主机配置协议详解
除非系统管理员明确配置,否则主机不应充当 DHCP 服务器。如果允许随机主机响应 DHCP 请求,则 Internet 中硬件和协议实现的多样性将妨碍可靠操作。例如,IP 需要在协议实现软件中设置许多参数。由于 IP 可用于许多不同类型的网络硬件,因此无法猜测或假定这些参数的值具有正确的默认值。此外,分布式地址分配方案依赖于用于发现已在使用的地址的轮询/防御机制。IP 主机可能无法始终保护自己的网络地址,因此这种分布式地址分配方案无法保证避免分配重复的网络地址。
515 0
DHCP:动态主机配置协议详解
|
运维 监控 网络协议
动态主机配置协议DHCP协议
动态主机配置协议DHCP协议
118 0
|
缓存 网络协议