局域网设备发现之Bonjour协议

群晖隐藏局域网设备发现:彻底关闭媒体服务器与Bonjour协议指南 操作路径解决的问题难度套件中心卸载媒体服务器关闭DLNA/UPnP协议,电视无法发现NAS多媒体⭐控制面板关闭设备发现关闭DSM自带的简易网络发现播报⭐⭐防火墙拦截5353端口关闭底层Bonjour/mDNS协议,实现彻底网络隐身⭐⭐⭐对于将NAS作为纯私有云盘、代码仓库或下载机的极客玩家来说,关闭局域网发现是一个很好的安全习惯(减少攻击面)。但如果你经常需要给家人投屏视频,或者习惯在电脑左下角直接点击NAS图标进入,建议保持默认开启,权衡好“便捷性”与“隐私性”即可。 阅读详情

在WIFI物联网解决方案中,通常我们需要对设备进行绑定,需要通过某种方法先对设备进行发现,比如微信硬件采用广播的方式,定时向外发送上线消息或者采用一问一答的方式进行发现,Bonjour是由苹果公司实现的一种零配置网络(Zeroconf)协议,它是一种基于服务的设备发现协议,不仅能够自动获取有效IP地址,还可以通过查询服务的方式来找到设备地址,只要双方约定好服务(service)的名称,设备的IP地址和端口都是可以变化的!

一、mDNS协议和DNS-SD协议

Bonjour协议是基于mDNS(Multicast DNS)协议和DNS-SD(DNS Service Discovery)协议开发实现,因此有必要先在这里给大家介绍一下这两个协议。

1.1 mDNS协议介绍

mDNS协议适用于局域网内没有DNS服务器时的域名解析,设备通过组播的方式交互DNS记录来完成域名解析,约定的组播地址是:224.0.0.251,端口号是5353,mdns协议使用DNS协议一样的数据包,由头部和数据段两部分(大家可以自行去了解DNS数据包的格式啦,在这里不展开介绍了):

局域网设备发现之Bonjour协议

mDNS的一个使用情景是这样的:

局域网设备发现之Bonjour协议

设备d通过组播(224.0.0.251:5353),询问a.local地址是?

局域网设备发现之Bonjour协议

设备a知道有人查询它后,也是通过同样的组播组回复它的地址信息(通过回复用于IPv4的A类型DNS记录(A Record)或者用于IPv6的AAA类型的DNS记录,A记录和AAA记录分别用于将域名转换成IP地址),这里组播内的所有人b, c, d都会收到,它们会将a.local的ip地址等信息(如TTL值)刷新到mDNS缓冲区中。

mDNS协议和DNS协议还有些不同,mDNS只能用于局域网内部,并且它只接受解析主机名前缀为.local的域名,因此mDNS也是可以和DNS在同一台设备上共存的,以及它们存储记录的区域是分开的。

除此之外,mDNS还有其它的作用,例如在零配置网络中给自己分配域名,设备给自身选择一个域名后,然后通过发送记录类型为”any”的mDNS包来查询局域网内是否有同名,如果没有设备就会把这个名字作为自己的域名。

1.2 DNS-SD协议介绍

接下来再介绍一下DNS-SD协议,即DNS based Service Discovery,基于DNS的服务发现主要用到DNS现有的三种类型记录(Record Type):PTR记录、SRV记录、TXT记录,其中:

1)服务发现:设备会先发送一个查询PTR记录的数据包到组播组,所查询服务格式为:

<service>.<transport>.<domain>

service表示的是要查询的服务,transport表示的是传输的协议:TCP还是UDP,domain表示查询的域,在mDNS中为.local,接着具有对应服务的设备会响应一系列本设备上所具有的服务实例:

<instance>.<service>.<transport>.<domain>

instance表示服务的实例名,虽然收到<instance>.<service>.<transport>.<domain>,但是只有instance才会显示给用户看,比如:要查询一个_easylink._tcp.local的服务,具有这个服务对应实例的设备会响应一条PTR记录:EMW3031 Module#500A3F._easylink._tcp.local,即表示EMW3031 Module#500A3F为_easylink._tcp.local的一个实例,设备收到后只会显示EMW3031 Module#500A3F供用户看,它是UTF-8编码的。

可以看出,DNS-SD的PTR记录所代表的意思是区别于传统DNS的PTR记录的含义的,并且DNS-SD下的PTR记录用于记录服务到服务实例的映射。

2)获取服务实例的主机名和端口号:上述多个服务实例instance显示供用户选择确定一个后,就需要查询记录服务实例的主机名和端口号,即查询SRV记录。

设备会发送一个mDNS请求,然后具有所请求中服务实例的设备会响应SRV记录,SRV记录记录了这个服务实例对应的主机名和端口号以及TTL信息,一条SRV记录的例子是:

EMW3031 Module#500A3F._easylink._tcp.local. 3 IN SRV 0 0 8002 EMW3031 Module#500A3F.local.

DNS下的SRV记录的格式为:

_service._proto.name. TTL class SRV priority weight port target.

在DNS-SD中,priority和weight无效,一般置为00 00,port和target即为端口号和主机名。

因此SRV记录用于记录服务实例到端口号和主机名的映射,即便端口号可变也没有关系。

3)服务实例更详细的信息:有时候,一个服务实例除了所在设备的端口号和主机名这些信息以外,还可以提供更多的附加参数信息,服务实例的附加信息记录在TXT记录中,以”key = value”的格式记录,如提供设备的MAC地址:

MAC=D0:BA:E4:50:0A:3F

二、Bonjour协议原理

前面介绍了mDNS协议以及DNS-SD协议,其实基本上就已经展开介绍了Bonjour协议的细节,接下来再来理解Bonjour就相当轻松了。Bonjour协议可以理解为mDNS协议和DNS-SD协议的结合,其实大家在继续往下看之前可以自己想一下如何将两个协议结合起来呢?DNS-SD已经找到了提供服务的端口号和主机好了,最后再做进一步的主机名到IP地址的解析就完成了Bonjour协议的整个过程,当然结合的时候DNS-SD所发送的三种记录都是通过mDNS规定的组播组和端口号(224.0.0.254:5353)发送出去的,但是DNS-SD是不依赖mDNS协议而存在的。

Bonjour协议提供三部分功能:通告服务、发现服务、解析服务,这是三个动宾词组哈。在物联网中,设备在本地记录一个服务往往需要提供服务相关的SRV记录、PTR记录以及TXT记录相关的信息,用于最后组装mDNS数据包发送出去。

在没有DHCP分配IP地址和没有设置静态IP地址情况下,通过Bonjour协议还可以自己在局域网内获取有效的IP地址以及主机名,但是需要我们配置好路由的信息如子网掩码等,它会生成一个IP,然后询问局域网内是否有冲突,如果没有冲突就将这个IP占为己有,如果有冲突,就会更换一个IP,继续查询,主机名也是利用同样的方法获得。

通告服务用于设备告之局域网内其他人本设备的服务信息,一般包括发送SRV记录和PTR记录,这些记录被其它mDNS设备记录在本地的存储区中。

局域网设备发现之Bonjour协议

发现服务用于查询一个指定的服务,然后具有该服务的设备会响应PTR记录,告诉查询的设备有这样的服务并且服务实例的名称是什么。

局域网设备发现之Bonjour协议

局域网设备发现之Bonjour协议

解析服务发生在完成服务发现之后,获得了服务实例后供用户选择,再下一步就要进行解析,首先根据服务实例获得该设备的主机名以及端口,最后再根据主机名来获取IP地址。

局域网设备发现之Bonjour协议

局域网设备发现之Bonjour协议

局域网设备发现之Bonjour协议

局域网设备发现之Bonjour协议

经过以上一步步交互就可以获得了目标设备的IP地址和端口号了,然后就可以根据选择的传输协议TCP或者UDP进行通信。

三、mDNS数据包

庆科物联的设备端已经实现了Bonjour协议的主要功能,以下是基于其设备端发现过程用Wireshark抓的包,其中IP地址为192.168.191.2表示的是手机端,192.168.191.3表示的是完成配网后的设备端,它们在同一个局域网内。

服务发现:由手机APP发送查询_easylink._tcp.local服务

局域网设备发现之Bonjour协议

服务解析:设备端一次性响应了PTR记录、SRV记录、TXT记录以及A记录:

局域网设备发现之Bonjour协议

每条记录展开为:

局域网设备发现之Bonjour协议

局域网设备发现之Bonjour协议

mDNS 介绍及代码示例 mDNS(Multicast DNS)是一种通过使用多播协议在本地网络中进行主机名解析的协议。它的设计使设备可以在没有中央DNS服务器的环境中自动发现和解析设备的主机名。以下是详细的工作原理和代码示例。值得一提的是,通过查询而非直接广播,mDNS 设计能够有效减少网络负载、节约资源、提高通信效率、增强安全性、管理冲突和干扰,同时更适应动态网络环境。使得 mDNS 成为小型网络和物联网环境中自动发现和解析主机名的理想解决方案。 阅读详情

相关推荐

bonjour简单使用心得

前段时间因为项目需要,开始研究Bonjour,下面先来介绍下Bonjour吧。 1.什么是Bonjour? Bonjour这个词来源于法语,是“你好”的意思。在这里它是指由Apple推出的零配置网络协议,遵从这个协议的设备可以在局域网内发现彼此,设备之间就可以像人一样打招呼发现对方。 2.bonjour简单工作流程 1)发布服务 在同一局域网中,服务端通过DNSServi

supperwc的专栏 5483

mDNS 协议服务

最近有机会要学习一下mDNS 协议,查阅了几天相关的资料,并且带着一些问题进行学习理解,分享一下自己的总结理解,可能有诸多不足之处,还请谅解。 1.什么是mDNS mdns 即多播(组播)dns(Multicast DNS),mDNS主要实现了在没有传统DNS服务器的情况下使局域网内的主机实现相互发现和通信,使用的端口为5353,遵从dns协议,使用现有的DNS信息结构、名语法和资源记录类型。并且没有指定新的操作代码或响应代码。在局域网中,设备和设备之前相互通信需要知道对方的ip地址的,大多数情况,设备

weixin_48430195的博客 7603

【Airplay_BCT】Bonjour 和本地链接、域名和 DNS

Bonjour 零配置网络架构支持在局域网或广域网上发布和发现基于 TCP/IP 的服务。本文档概括介绍了 Bonjour 架构,并简要介绍了可用的 Bonjour API。Bonjour 是 Apple 对一套零配置网络协议的实现。Bonjour 旨在让用户更轻松地进行网络配置。例如,Bonjour 可让您将打印机连接到您的网络,而无需为其分配特定的 IP 地址或将该地址手动输入到每台计算机中。通过零配置网络,附近的计算机可以发现它的存在并自动确定打印机的 IP 地址。

天天的博客 752

iOS开发:什么是Bonjour

这两天抽空做了几个Bonjour的测试,将我的理解整理了一下和大家分享,希望对大家的工作有帮助,同时,有理解错误的地方也请大家校正。 1. Bonjour简介 Bonjour是Apple推出的零配置网络协议,主要的目的是在缺少中心服务器的情况下解决网络设备的IP获取,名称解析和服务发现等关键问题。 Bonjour这个词来源于法语,是“你好”的意思,应该是指遵从这个协议的设备可以通...

ithome 1044

深入理解iOS中的Bonjour网络服务发现技术

Bonjour,也称为零配置网络(Zeroconf),是一种网络协议,它允许计算机和设备通过IP网络彼此发现而无需复杂的配置或管理。它是由苹果公司开发的一种实现,作为其操作系统的一部分,并且其协议在IETF标准下公开可用。

weixin_42502089的博客 1273

数电发票“乐企直连”服务平台建设方案

数字化电子发票“乐企直连”服务平台建设方案

m0_73174802的博客 4851

Bonjour

利用Bonjour 来进获取行IP、 获取名称和解析搜索服务

小桥流水哗啦啦,iOS Coder 哒哒哒 1657

保姆级教程:用Seurat 5.0.1搞定单细胞测序数据从质控到细胞注释的全流程

本文提供了一份详细的Seurat 5.0.1单细胞测序数据分析教程,涵盖从数据质控到细胞注释的全流程。通过R代码示例和可视化分析,帮助用户掌握单细胞RNA测序数据处理的核心技术,包括数据标准化、降维聚类和细胞类型注释,适用于生物信息学研究和临床数据分析。

weixin_29067143的博客 195

终极指南:如何快速掌握Bonjour协议实现零配置网络发现

想要在局域网中快速发现设备和服务,却不想配置复杂的网络设置?🤔 Bonjour协议就是你的完美解决方案!这是一种零配置网络服务发现技术,让你无需手动设置就能自动发现网络中的设备和服务。 本文将为你详细介绍如何在JavaScript项目中快速上手Bonjour协议,实现高效的零配置网络发现功能。🚀 ## 什么是Bonjour协议? Bonjour协议是苹果公司开发的零配置网络技术,基于mD

gitblog_00799的博客 445

【高低温试验】试验报告模板

高低温循环试验,验证被测设备(DUT)在极端高温、低温环境下的性能稳定性、功能可靠性及安全性,确保其符合设计规范和相关标准(如GB/T 2423.1、GB/T 2423.2)。:验证设备在剧烈温度变化下的耐受能力(如-40℃↔+85℃,温变速率≥10℃/min)。低温测试标准:GB/T 2423.2-2008(温度-40℃,保持时间4小时):模拟高温高湿环境(如温度+60℃,湿度95%RH),测试防潮性能。

电路巫师把一切不可能变成不可能 1565

Halcon深度学习实战:基于异常值检测的工业缺陷精准识别方案

本文详细介绍了Halcon深度学习中的异常值检测技术在工业缺陷识别中的应用。该方法仅需少量正常样本即可训练,能有效应对未知、多变的缺陷类型,显著降低项目启动门槛。文章提供了从数据准备、模型训练、参数调优到产线部署的完整实战指南,并分享了关键的性能优化与避坑经验。

weixin_29042035的博客 242

Zeroconf/Bonjour

 技术交流有兴趣请加:  音视频技术交流群:308601278  无线投屏技术交流群:582349005    详情可访问我司官网 必捷网络|因必捷而简单  商务合作请至邮件marketing@bijienetworks.com Zeroconf苹果设备中也叫Bonjour是一种自发现协议,可以自动搜索发现同一局域网中的设备及服务。 使用前需要安装或者移植avahi-daemon,avahi-d...

wirelessdisplay的博客 3183

语义分割系列7-Attention Unet(pytorch实现)

本文介绍了AttentionUnet模型和其主要中心思想,并在pytorch框架上构建了Attention Unet模型,构建了Attention gate模块,在数据集Camvid上进行复现。

yumaomi的博客 2万+

Bonjour 零配置网络服务发现完整指南:轻松实现设备自动发现 [特殊字符]

在当今物联网和智能家居时代,设备间的自动发现和通信变得尤为重要。Bonjour 零配置网络协议正是解决这一问题的完美方案!本文将为您详细介绍如何使用 JavaScript 实现的 Bonjour 协议,让您的设备能够自动发现彼此,无需复杂配置。 ## 什么是 Bonjour 零配置网络? Bonjour 是苹果公司开发的零配置网络协议,它允许设备在局域网内自动发现服务,无需任何手动配置。想象一

gitblog_00640的博客 476

2025年普通人转向人工智能运维(AIOps)学习建议(附最新技术实践与资源)

AIOps不仅是技术的叠加,更是运维流程的重构。建议通过“学习-实践-反馈”循环,逐步从工具使用者成长为解决方案设计者。如需完整资源链接,可访问上述推荐的优快云博客及GitHub仓库。

资深全栈架构师,乐于在 优快云 分享技术见解,与大家携手共进,共攀技术巅峰! 3094

实验十一 ——————二层交换基础

实验内容实验网络拓扑图如上所示SW1以及SW2都创建VLAN10和VLAN20,按照上图所示,将接口添加到特定的VLAN;测试PC之间的连通性,要求相同VLAN内的PC能够相互通信要求设置两台交换机名称以及进行特权模式的密码,并允许通过Telnet方式管理交换机实验目的了解二层交换机工作原理掌握交换机基本配置命令理解VLAN的概念,掌握VLAN的配置理解trunk的概念,掌握trunk的配置实验步...

Fly_鹏程万里 1489

chatgpt赋能Python-python_bonjour

本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。🧡AI职场汇报智能办公文案写作效率提升教程 🧡专注于AI+职场+办公方向。下图是课程的整体大纲下图是AI职场汇报智能办公文案写作效率提升教程中用到的ai工具。

www_xuhss_com的博客 233

华为OD新系统机试真题-勇攀数字高峰(Java/Py/C/C++/Js/Go)

新系统 华为OD机试新系统【勇登数字高峰】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD新系统机试真题【勇登数字高峰】

qq_45776114的博客 1544

Bonjour协议实现设备即插即用

Bonjour协议通过mDNS和DNS-SD技术,实现局域网内设备的自动发现与服务识别,无需手动配置IP或密码。设备上电后利用IPv4LL获取地址,通过多播DNS广播服务信息,客户端可自动发现并连接。该机制广泛应用于AirPlay、HomeKit等场景,也是Matter协议的基础组件。

weixin_31860973的博客 933

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

苹果设备是如何互相打招呼的——趣谈Bonjour协议

Labs 导读使用苹果全家桶的同学们,肯定有过在多个设备之间无缝衔接的体验,比如隔空投送照片、文件,AirPlay电视投屏,还有自动共享热点密码,Apple Watch解锁Mac和iPhone,连续互通的相机/速绘/标记等等。它们的基本原理是通过Wi-Fi或蓝牙,在登录同一iCloud的设备之间快速同步数据。问题来了,在局域网中设备之间要想通信,得知道对方的IP地址。以AirPlay投屏为例,第一...

边缘计算社区 830

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

dns-sd 命令行指令

原文地址::https://blog.youkuaiyun.com/henry_wu001/article/details/44038175 相关文章 1、DNSSD官方文档翻译----https://blog.youkuaiyun.com/weixin_42182191/article/details/83375134 2、局域网设备发现之Bonjour协议----https://blog.youkuaiyun.com/yu...

xqhrs232的专栏 2832

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

MDNS协议在ubuntu和windows上的应用

1、https://blog.beanbang.cn/2019/08/07/locate-hosts-using-mdns/ 2、https://blog.youkuaiyun.com/yueqian_scut/article/details/52694411

yudelian的博客 3130
上一篇: 理解RESTful架构
下一篇: MQTT入门篇
evilcode
博客等级 码龄20年 307粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值