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

news2025/3/1 8:34:45

Bonjour 零配置网络架构支持在局域网或广域网上发布和发现基于 TCP/IP 的服务。本文档概括介绍了 Bonjour 架构,并简要介绍了可用的 Bonjour API。

Bonjour 是 Apple 对一套零配置网络协议的实现。 Bonjour 旨在让用户更轻松地进行网络配置。

例如,Bonjour 可让您将打印机连接到您的网络,而无需为其分配特定的 IP 地址或将该地址手动输入到每台计算机中。通过零配置网络,附近的计算机可以发现它的存在并自动确定打印机的 IP 地址。如果该地址是一个动态分配的地址,并且会发生变化,他们可以在未来自动发现新地址。

应用程序还可以利用 Bonjour 自动检测网络上应用程序(或其他服务)的其他实例。例如,两个运行 iOS 照片共享应用程序的用户可以通过蓝牙个人区域网络共享照片,而无需在任一设备上手动配置 IP 地址。

提供高效的服务发现

Bonjour 协议使用多播 DNS (mDNS) 并在需要时使用链路本地寻址,以高效且稳健的方式支持广告和发现服务。

Bonjour 为 mDNS 广告服务保留 .local 域

Bonjour 主机名和服务名是使用一组特定的规则构建的。

Bonjour 使用 SRV、TXT 和 PTR 记录来查找服务

Bonjour 使用特定于服务的记录来宣传服务的存在。 PTR 记录让您发现域中的所有服务;SRV 记录将服务实例名称、类型和域转换为主机名和端口; A 和 AAAA 记录将主机名转换为 IP 地址,TXT 记录提供有关服务的附加信息。

Bonjour 在 OS X 和 iOS 中提供多层 API

在 OS X 和 iOS 中,Bonjour 提供了使用 Foundation、Core Foundation 和 C API 发布和发现服务的能力。在 OS X 中,Bonjour 还提供了一个 Java API。在 Windows 和 Linux 等其他平台上,Bonjour 提供了 C API。


域名命名约定

服务实例和服务类型的 Bonjour 名称与域名系统 (DNS) 域名相关。本节介绍 DNS 域名、Bonjour 本地“域”以及 Bonjour 服务实例和服务类型的命名规则。

域名和 DNS

DNS 使用特定到通用的域名命名方案。最通用的域是 . (“点”),称为根域,类似于UNIX文件系统中的根目录/。每个其他域都位于根域之下的层次结构中。例如,名称 www.apple.com。位于二级域 apple.com. 内,它位于顶级域 com. 内,而 com. 又是 . (“点”),根域。

图 2-1 显示了此层次结构的简化版本。图 2-1 互联网域名系统的一部分,为 Bonjour扩充

在这里插入图片描述
倒置树的顶部是根域。下面是一些顶级域:com.、edu. 和 org.,以及本地 Bonjour“域”local.,在 Bonjour 和本地链接中进一步讨论。顶级以下是几个二级域,apple、darwin 和 zeroconf。树可以无限向下延伸,例如,在第三层的 www。

您可能已经注意到,大多数域名都没有尾随点。然而,尾随的点确实有意义。以尾部点结尾的域名,例如 www.apple.com.,被称为完全限定域名,很像 UNIX 文件系统中的绝对路径(例如 /usr/bin)。

如果您在 Web 浏览器中键入 wibble.apple.com(没有尾随点),系统会将其视为非限定(部分)名称并附加来自您的搜索域列表的名称,例如 example.com.,example。教育等等。系统首先尝试附加 . (“点”,根域),但如果名称为 wibble.apple.com。不存在,它将继续沿着列表向下并尝试 wibble.apple.com.example.com.、wibble.apple.com.example.edu. 等等。尽管此搜索域功能通常很有用,但在这种情况下它可能不是您想要的。

Bonjour 和本地链接

Bonjour 协议在很大程度上处理称为本地链路的网络部分。主机的本地链路,或链路本地网络,包括它自己和所有其他可以在不修改 IP 报头数据的情况下交换数据包的主机。实际上,这包括所有未被路由器分隔的主机。

在 Bonjour 系统上,本地。用于指示应在本地 IP 网络上使用 IP 多播查询查找的名称。

注意是本地的。不是真正的域。你可以想到本地。作为伪域。它在根本上不同于传统的 DNS 域:其他域中的名称是全球唯一的;链接本地域名​​不是。世界上只有一个名为 www.apple.com. 的逻辑 DNS 条目,并且由于 DNS 的工作方式,只能有一个。另一方面,以 local. 结尾的主机名由本地网络上的一组多播 DNS 响应器管理,因此命名范围就是:local。可以很容易地有两个名为 meow.local 的主机。在世界上,甚至在同一栋楼里,只是不在同一个本地网络上。

全球唯一的名称很重要也很有用——事实上,它们是互联网的重要成就之一——但它们需要一定程度的管理工作才能建立和维护。本地名称仅在本地网络上有用,但在足够的情况下,它们提供了一种使用名称而不是 IP 号来引用网络设备的方法,当然,与全球唯一名称相比,它们需要更少的协调工作和费用。

本地唯一名称在没有连接到全球 Internet 的网络(无论是设计原因还是因为中断)以及小型临时网络(例如通过交叉电缆连接的一对计算机,或几个人玩网络)上特别有用在家庭或咖啡馆的无线网络上使用笔记本电脑玩游戏。

如果在本地网络上发生名称冲突,Bonjour 主机会自动找到一个新名称(对于 iOS 或任何没有屏幕的设备)或询问用户(对于个人计算机)。

Bonjour 和单播 DNS

除了多播 DNS 之外,Bonjour 还支持使用广域 Bonjour 通过传统单播 DNS 广告和发现服务。单播 DNS 不在本文档的讨论范围之内。要了解有关配置单播域名服务器以用于 Bonjour 的更多信息,请参阅 DNS-SD 网站。

现有服务类型的 Bonjour 名称

Bonjour 服务根据 IP 服务的现有 Internet 标准命名(在 RFC 2782 中描述)。 Bonjour 服务名称结合了服务类型和传输协议以形成注册类型。注册类型用于注册服务并为其创建 DNS 资源记录。为了在 DNS 资源记录中区分注册类型和域名,注册类型使用下划线前缀来分隔构成注册类型的组件。格式是

_ServiceType._TransportProtocolName.

服务类型是服务的官方 IANA 注册名称,例如 ftp、http 或打印机。传输协议名称是 tcp 或 udp,具体取决于服务使用的传输协议。在 TCP 上运行的 FTP 服务的注册类型为 _ftp._tcp。并将注册一个名为 _ftp._tcp.local 的 DNS PTR 记录。与其主机的多播 DNS 响应器。

新服务的 Bonjour 名称

如果您正在设计一个新协议来作为 Bonjour 网络服务进行宣传,您应该向 IANA 注册它。

IANA 目前要求每个注册服务都与一个“知名端口”或一系列知名端口相关联。例如,为 http 分配了 80 端口,因此无论何时您在 Web 浏览器中访问网站,应用程序都假定 HTTP 服务在端口 80 上运行,除非您另有说明。这样,如果网站以非标准方式配置,则只需记住网站的端口号。

但是,使用 Bonjour,您不必知道端口号。因为客户端应用程序可以通过对服务类型的简单查询来发现您的服务,所以不需要众所周知的端口。

服务实例的 Bonjour 名称

服务实例名称旨在成为人类可读的字符串。因此,您应该描述性地命名它们,并让用户覆盖您提供的任何默认名称。因为它们是为了浏览而不是键入,所以服务实例名称可以是任何使用 UTF-8 编码的 Unicode 字符串,长度最多为 63 个八位字节(字节)。

例如,用于通过网络共享音乐的应用程序可能默认使用本地用户的名称进行音乐共享服务,例如 Émille 的音乐库。用户可以覆盖默认值并将服务命名为 Zealous Lizard’s Tune Studio,应用程序将注册一个名为 Zealous Lizard’s Tune Studio._music._tcp.local. 的 DNS SRV 记录,假设应用程序的音乐共享协议与名称 music 相关联。

图 2-2 说明了 Bonjour 服务实例名称的组织。树的顶层是域,例如本地域。对于本地网络。域下面是注册类型,它由前面有下划线 (_music) 的服务类型和前面也有下划线 (_tcp) 的传输协议组成。树的底部是人类可读的服务实例名称,例如 Zealous Lizard 的 Tune Studio。完整名称是沿着树从底部到顶部的路径,每个组件由点分隔。图 2-2 Bonjour 服务名称的组织

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/347019.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ChatGPT一路狂飙,NVMe SSD能否应对性能挑战?

近日,ChatGPT持续火爆,用户在短短两个月内迅速破亿,大量用户涌入导致ChatGPT访问和数据规模指数级增加。与数月前发布的版本相比,新的ChatGPT“智能”了许多,不仅可以像人类一样聊天交流,甚至能够完成一定程…

70. with open( ) as 以自动关闭文件的方式打开文件

70. with open( ) as 以自动关闭文件的方式打开文件 文章目录70. with open( ) as 以自动关闭文件的方式打开文件1. 知识回顾1. open函数语法参考2. 准备工作3. mode模式知识回顾2. with open 语句的作用3. with open 语句语法4. with open 语句实操5. 总结1. 代码总结2. 重点知…

Pandas学习2

Pandas学习2 None 两种缺失数据:None、np.nan(NaN) None是python自带的,不能参与计算。类型是object np.nan 浮点类型,说明能参与计算,但是结果是nan pandas中的None和np.nan pandas中的None和np.nan都视为np.nan 如果列…

ArkUI新能力,助力应用开发更便捷

ArkUI是一套构建分布式应用的声明式UI开发框架。它具备简洁自然的UI信息语法、丰富的UI组件、多维的状态管理,以及实时界面预览等相关能力,帮助您提升应用开发效率,并能在多种设备上实现生动而流畅的用户体验。随着HarmonyOS 3.1版本的发布&a…

签收后再补录物流信息单号要如何分析

随着网络时代电商平台掘起,购物平台也是越来越多,呈现出快递也是越来越多,电商平台和快递两者是密不可分,有下单就需要快递物流,所以快递公司也是很重要一个环节,最近有朋友向咨询如何分析出比如单号过已签…

Springboot扩展点之SmartInitializingSingleton

前言这篇文章会重点分析一下SmartInitializingSingleton扩展点的功能 特性、实现方式 、工作原理。SmartInitializingSingleton扩展点内只有一个扩展方法,且执行时机在Spring Bean的生命周期里比较靠后,很重要,但是也很简单。功能特性1、Smar…

0基础入行Java开发—详解Java泛型之详解通配符

今天我们来继续讲解泛型中另一个非常重要的概念&#xff0c;就是那个“小问号”——通配符! 通配符概念 泛型中除了用 表示泛型外&#xff0c;还有 <?>这种形式。&#xff1f; 被称为通配符。那么引入通配符的原因又是什么呢&#xff1f;看下面这段代码&#xff1a; …

格兰杰因果检验_Python实现

原理部分 代码实现 步骤 #mermaid-svg-kEtkcqkpRzxjdoOv {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-kEtkcqkpRzxjdoOv .error-icon{fill:#552222;}#mermaid-svg-kEtkcqkpRzxjdoOv .error-text{fill:#552222;s…

前端框架LayUI

Bootstrap框架 Bootstrap让前端开发更快速、简单。所有开发者都能快速上手、所有设备都可以适配、所有项目都适 用。 可以直接使用Bootstrap提供的 CSS 样式表&#xff0c;Bootstrap的源码是采用最流行的CSS预处理工具Less和Sass开发的。可以直接采用预编译的CSS文件快速开发…

2023面试题

目录 http部分 2、tcp 三次握手&#xff0c;一句话概括 3、tcp四次挥手 4、什么是跨域&#xff0c;跨越的解决办法 5、TCP 和 UDP 的区别 6、websocket 7、HTTP 请求的方式&#xff0c;HEAD 方式 8、几个很实用的 BOM 属性对象方法&#xff08;什么是 Bom? Bom 是浏览器对象&a…

重生之我是赏金猎人(三)-SRC漏洞挖掘-强行多次FUZZ发现某厂商SSRF到redis密码喷洒批量反弹Shell

0x00 前言 https://github.com/J0o1ey/BountyHunterInChina 欢迎大佬们点个star 最近BugBounty挖了不少&#xff0c;但大多数都是有手就行的漏洞&#xff0c;需要动脑子的实属罕见 而今天就遇到了一个非常好的案例&#xff0c;故作此文 0x01 对目录批量FUZZ&#xff0c;发…

数字孪生智慧机场:透视数字化时代下的航空运营

在《智慧民航建设路线图》文件中&#xff0c;民航局明确指出&#xff0c;智慧机场是实现智慧民航的四个核心抓手之一。这一战略性举措旨在推进数字化技术与航空产业的深度融合&#xff0c;为旅客提供更加智能化、便捷化、安全化的出行服务&#xff0c;进一步提升我国民航发展的…

示波器详解

&#x1f44d;&#x1f44d;&#x1f44d;本文是介绍和总结了示波器的一些内容&#xff0c;有助于大学生学习以及复习&#x1f447;&#x1f447;&#x1f447;&#x1f447;&#x1f447;&#x1f447;&#x1f447;&#x1f447;&#x1f447;&#x1f447;&#x1f447;&…

RTT IO设备模型

1. I/O 设备介绍 RT-Thread 提供了一套简单的 I/O 设备模型框架&#xff0c;如下图所示&#xff0c;它位于硬件和应用程序之间&#xff0c;共分成三层&#xff0c;从上到下分别是 I/O 设备管理层、设备驱动框架层、设备驱动层。 应用程序通过 I/O 设备管理接口获得正确的设备驱…

纷享销客百思特 | 数字化营销赋能企业新增长沙龙圆满落幕

为进一步帮助企业客户实现数字化转型&#xff0c;纷享销客联合百思特管理咨询集团&#xff0c;于2月10日举办 “数字化营销赋能企业新增长”主题沙龙。本次活动以“新变革新增长”为主题&#xff0c;现场30余位制造企业高管齐聚一堂&#xff0c;共同探讨企业如何在当前复杂的宏…

都2023年了,如果不会Stream流、函数式编程?你确定能看懂公司代码?

&#x1f473;我亲爱的各位大佬们好&#x1f618;&#x1f618;&#x1f618; ♨️本篇文章记录的为 Stream流、函数式编程 相关内容&#xff0c;适合在学Java的小白,帮助新手快速上手,也适合复习中&#xff0c;面试中的大佬&#x1f649;&#x1f649;&#x1f649;。 ♨️如果…

【靶机】vulnhub靶机pylington

靶机下载地址 Pylington: 1 ~ VulnHub kali ip&#xff1a;192.168.174.128 靶机ip&#xff1a;192.168.174.146 arp-scan -l发现靶机ip是192.168.174.146 进行靶机的端口扫描&#xff0c;这里使用的是nmap的gui 可以发现开放了21和80端口&#xff0c;80端口扫描到了robot…

Spring6之HTTP Interface分析

文章目录1 HTTP Interface1.1 引言1.2 示例1.2.1 创建服务端1.2.2 SpringBoot工程1.3 深入分析1.3.1 GetExchange&#xff08;HttpExchange&#xff09;1.3.2 UserApiService 实例创建1.4 其他特性1 HTTP Interface 1.1 引言 近期&#xff0c;Spring 6 的第一个 GA 版本发布了…

【SSM】篇一:初试Spring--Ioc、Bean与容器

文章目录1、Spring2、SpringFramework系统架构3、BeanBean的配置Bean的实例化Bean的生命周期4、依赖注入DIsetter注入和构造器注入依赖自动装配集合注入案例--数据源对象管理加载properties文件5、容器创建容器的两种方式获取bean的三种方式容器类层次结构图1、Spring Spring地…

算法思想 - 搜索算法

本文主要介绍算法中搜索算法的思想&#xff0c;主要包含BFS&#xff0c;DFS。搜索相关题目深度优先搜索和广度优先搜索广泛运用于树和图中&#xff0c;但是它们的应用远远不止如此。BFS广度优先搜索的搜索过程有点像一层一层地进行遍历&#xff0c;每层遍历都以上一层遍历的结果…