免费微网站建设,如保做网站赢利,字母logo在线设计,青岛今天发生的重大新闻从Airplay开始#xff0c;接触到BCT#xff0c;这是什么#xff1f;被迫从安卓变成ios用户和开发。。。开始我的学习之旅#xff0c;记录成长过程#xff0c;不定时更新 Bonjour 下面是苹果官网关于bonjour的解释 Bonjour, also known as zero-configuration networking, … 从Airplay开始接触到BCT这是什么被迫从安卓变成ios用户和开发。。。开始我的学习之旅记录成长过程不定时更新 Bonjour 下面是苹果官网关于bonjour的解释 Bonjour, also known as zero-configuration networking, enables automatic discovery of devices and services on a local network using industry standard IP protocols. Bonjour makes it easy to discover, publish, and resolve network services with a sophisticated, easy-to-use programming interface that is accessible from Cocoa, Ruby, Python, and other languages. Bonjour也称为零配置网络使用行业标准IP协议实现本地网络上设备和服务的自动发现。Bonjour通过一个复杂、易于使用的编程界面可以从Cocoa、Ruby、Python和其他语言访问从而轻松发现、发布和解析网络服务。 大概就是说bonjour是苹果的一个连接网络从一开始的网络连接到现在的专用bonjour连接实现IOT物联网的
Apple 的一些产品比如 homtkit、smart home 最初是通过无线有线网络连接的而Bonjour 是他们之间的连接协议只有满足Bonjour 的条件才能正常的通过网络进行控制操作。
Bonjour 作为一种协议包含了现在大火的 IOT 概念。 Apply的每一款产品只有通过了BCT的测试验证后才可以证明每个产品设备间可以自由连接和控制。
诸如手机可以操控TV、灯、音响之类他们背后的原理都是通过Bonjour 来控制的。 如果开发Apply的产品都是需要涉及到BCT验证的。 在这里简单介绍下homtkit、smart home
HomeKit Homekit 是苹果公司出品的智能家居系统设置好后能在任何地方设置和控制家里所有智能家居设备。现在很多家电都加入了智能功能但经常一个家电就是一个 app例如空调有自己的 app、指纹锁有自己的 app、各种灯也有自己的 app。
而成套的智能家居方案就解决了这个问题以 HomeKit 来说在购买决策阶段就可以在支持 Homekit 的产品里挑选例如 LG 的电视、米家的指纹锁、Aqara 的智能开关这样以后不用打开乱七八糟的 app直接点亮 iPhone 下拉菜单栏就能操控常用设备了或者直接喊一句 Siri 来操控特别方便。
其它的苹果产品如 Apple Watch、Apple Tv 和 Homepods 也都可以控制家里的智能设备所以如果你有若干苹果产品选择 Homekit 是不错的选择。 Smart Home 下面是来自Investopedia的解释 A smart home refers to a convenient home setup where appliances and devices can be automatically controlled remotely from anywhere with an internet connection using a mobile or other networked device. Devices in a smart home are interconnected through the internet, allowing the user to control functions such as security access to the home, temperature, lighting, and a home theater remotely. 智能家居是指一种方便的家庭设置其中可以使用移动或其他联网设备通过互联网连接从任何地方远程自动控制电器和设备。智能家居中的设备通过互联网相互连接允许用户远程控制家庭安全访问、温度、照明和家庭影院等功能。
smart home的功能和homekit类似小伙伴们感兴趣可以自己自行深入学习这里仅做介绍 Bonjour零配置网络架构支持在局域网或广域网上发布和发现基于TCP/IP的服务。本文档从较高的层次描述了Bonjour架构并简要描述了可用的Bonjour API。 Tips:有关API级别的更详细内容包括代码片段请阅读《DNS服务发现编程指南》或《NSNetServices和CFNetServices编程指南》。
Bonjour是苹果实现的一套零配置网络协议。Bonjour旨在让用户更容易进行网络配置。
例如Bonjour允许您将打印机连接到网络而无需为其分配特定的IP地址或手动将该地址输入每台计算机。通过零配置网络附近的计算机可以发现其存在并自动确定打印机的IP地址。如果该地址是一个动态分配的地址并且发生了变化那么他们可以在将来自动发现新地址。
应用程序还可以利用Bonjour自动检测网络上应用程序或其他服务的其他实例。例如两个运行iOS照片共享应用程序的用户可以通过蓝牙个人区域网络共享照片而无需在任一设备上手动配置IP地址。
Bonjour提供高效的服务发现
Bonjour协议支持使用多播DNSmDNS以及在需要时链接本地寻址以高效和稳健的方式发布和发现服务。 关于Bonjour的更多概念link
Bonjour概念
Bonjour是苹果提交给IETF的一套IP零配置网络协议作为正在进行的标准创建过程的一部分。本节介绍Bonjour解决的问题及其解决方法。
为什么是Bonjour
在过去的二十年中计算机逐渐从AppleTalk、IPX和NetBIOS等特定于平台的协议过渡到互联网协议IP。大多数计算机和其他网络设备都使用TCP/IP进行通信。然而在这一过渡过程中一部分功能丧失了将设备添加到本地网络然后从计算机和网络上的其他设备连接到这些设备的能力所有这些都几乎没有配置。
为了使IP正常工作每个设备都需要一个唯一的地址无论是静态分配还是由DHCP服务器动态分配。动态分配的地址可以更改因此如果没有Bonjour打印机和其他设备必须手动配置静态地址以便网络上的计算机可以访问它们。然后网络管理员必须配置DNS服务器以便计算机用户不必通过IP地址连接到打印机。因此看似次要的任务需要大量的配置。因为不适合传统网络管理员角色的人通常会建立网络家庭通过共享路由器将他们的笔记本电脑连接到互联网例如这种配置级别并不实用。
即使在IT专业人员运行的托管网络中也没有必要为打印机等设备手动配置。人们希望能够插入打印机将两台笔记本电脑连接在一起或者在本地网络上查找文件服务器或游戏服务器而不必浪费时间尝试正确配置。
为了支持这一点人们需要一种简单可靠的方式来配置和浏览IP网络上的服务。他们希望发现可用的服务并从列表中选择一个而不必事先知道每个服务的名称或IP地址。IP拥有这种能力符合每个人的利益。这正是Bonjour提供的功能。 示例:零配置
零配置IP网络具有很大的潜力。考虑一下打印的日常任务。在计算机或iOS设备上配置打印机后只需选择应用程序的“打印”命令即可。
把你的笔记本电脑带到客户的公司或邻居家试着打印一些东西。如果他们有一台支持Bonjour协议的打印机打印就像在本地网络上一样简单。要打印请将笔记本电脑连接到客户端的Wi-Fi接入点然后启动笔记本电脑。或者启动你的笔记本电脑它会立即找到邻居的家庭无线网络。无论哪种方式您的笔记本电脑都会自动发现任何可用的打印机。打开文档选择“打印”命令“打印”对话框中将显示所有可用的打印机。选择打印机单击“打印”文档将打印。
或者说你想和朋友玩网络游戏。你打开游戏你朋友的游戏副本立即在网络上看到你的副本。或者如果你在两台电脑上有一个音乐共享应用程序这些程序本身可以发现彼此并立即交换歌曲列表。类似地如果您有共享文件夹或打开了个人Web共享您的共享文件和网页将立即可供其他人使用。
该场景如图1-1所示。在步骤1中打开邻居家中的笔记本电脑笔记本电脑要么从路由器中的DHCP服务器获取地址要么在没有DHCP服务器的情况下为自己分配一个可用的本地地址。在步骤2中将查询网络中的可用打印机以便在打开“打印”对话框时列出邻居的打印机。最后在步骤3中您打开计算机上的音乐共享邻居的计算机会看到并连接。
这些只是可以从零配置IP网络中受益的现有应用程序中的一小部分。零配置IP网络具有增强移动游戏、家庭网络、分布式计算和许多其他网络应用的潜力。此外零配置IP网络为一类全新的支持IP的数字设备打开了大门。 什么是Bonjour
Bonjour是苹果提出的IP零配置网络方案。Bonjour来自ZEROCONF工作组的工作该工作组是互联网工程任务组IETF的一部分。ZEROCONF工作组对IP零配置网络的要求和建议解决方案主要涵盖三个方面
寻址为主机分配IP地址命名使用名称来指代主机而不是IP地址服务发现自动查找网络上的服务
Bonjour为所有这三个领域提供了零配置解决方案如下四节所述。
Bonjour允许服务提供商、硬件制造商和应用程序程序员支持单一网络协议IP同时在易用性方面开辟新天地。
网络用户不再需要分配IP地址、分配主机名或甚至键入名称来访问网络上的服务。用户只需询问可用的网络服务然后从列表中选择。
在许多方面这种浏览对应用程序来说甚至比对用户来说更强大。应用程序可以自动检测他们需要的服务或他们可以与之交互的其他应用程序允许自动连接、通信和数据交换而无需用户干预。 寻址
寻址问题通过自分配链路本地寻址来解决。链路本地寻址使用为本地网络保留的一系列地址通常是小型LAN或单个LAN段。为此IPv6规范将自分配链路本地寻址作为协议的一部分。零配置网络的主要解决挑战是将此功能升级为IPv4。 注意IPv6链路本地寻址比IPv4链路本地寻址更简单因此更可靠。因此您的应用程序支持IPv6非常重要。 在IPv4中自分配寻址通过在链路本地范围中选择一个随机IP地址并对其进行测试来实现。如果该地址未被使用它将成为您的本地地址。如果它已经在使用计算机或其他设备会随机选择另一个地址并重试。 注意如果一个主机向另一个主机发送数据包时整个链路层有效负载物理网络中表示的数据包内容如以太网未经修改就到达则两个主机被视为位于同一本地链路上。实际上在以太网网络上这意味着没有IP路由器触及两个主机之间的数据包。 大多数主要操作系统都支持IPv4和IPv6中的链路本地寻址。硬件制造商应在其设备上实现链路本地寻址以获得Bonjour的全部好处。
计算机或iOS设备上支持链接本地寻址的任何用户或服务都会自动受益于此功能。当您的主机遇到本地网络时它会找到一个未使用的本地地址并采用它。无需执行任何操作 命名
所提出的本地网络上的名称到地址转换解决方案使用多播DNSmDNS其中DNS格式查询使用IP多播在本地网络上发送。因为这些DNS查询被发送到多播地址所以不需要具有全局知识的单个DNS服务器来回答这些查询。当每个服务或设备看到对其自身名称的查询时它可以提供自己的DNS功能并提供具有自己地址的DNS响应。
Bonjour走得更远。它包括一个响应器用于处理主机或iOS设备上任何网络服务的mDNS查询。这使您的应用程序无需解释和响应mDNS消息。通过注册您的服务Bonjour mDNSResponder守护程序会自动通告您的服务可用性以便对您的姓名的任何查询都会自动指向正确的IP地址和端口号。 注意注册是使用Bonjour API之一执行的。此功能仅适用于在主机或iOS设备上运行的服务。在其他设备如打印机上运行的服务需要实现一个简单的mDNSResponder守护进程该守护进程处理对该设备提供的服务的查询。 Bonjour还为NAT端口映射协议NAT-PMP提供内置支持。如果上游路由器支持此协议OS X和iOS应用程序可以创建和销毁端口映射以允许防火墙另一侧的主机连接到提供的服务。NAT端口映射将在“网络概述”中的“防火墙和网络地址转换”中进一步描述。
要使名称到地址的转换正常工作必须在本地网络上使用唯一的名称。与传统的DNS主机名不同本地名称仅在本地网络或LAN段上有意义。您可以像自行分配本地地址一样自行分配本地名称选择一个如果它还没有使用需要做下面的两步
1.硬件制造商通过让他们的设备发送一个mDNS查询来确定他们选择的名称是否已经在使用并查找任何响应。如果有响应设备应选择另一个名称。没有用户界面的设备会将一个递增的更大数字附加到默认名称直到该名称唯一。例如如果默认名称为XYZ-LaserPrinter.local的打印机连接到已安装其他两台相同打印机的本地网络则会测试XYZ-LaserPrinter.local、XYZ-LaserPrinter-2.local和XYZ-LaserPrint er-3.local未使用并成为其名称。
2.软件服务在Bonjour注册时提供名称。如果提供的名称已在使用中Bonjour将默认自动为您重命名服务。
在OS X中用户可以通过“系统首选项”的“共享”窗格中的“本地主机名”设置为其计算机设置主机名。在iOS中主机名是自动生成的不可配置。在使用Web浏览器、命令行工具等常规DNS主机名的任何地方都可以使用此主机名。若要向系统指示名称是本地主机名请附加一个点.和本地。主机名Steven.local.是本地主机名的一个示例。 重要提示第一个点用作分隔符。为了防止应用程序使用搜索域查找服务请通过在本地添加最后一个点来完全枚举主机名。。 例如如果用户在Web浏览器中键入steve.local.这将告诉系统在本地网络上对steve的请求进行多播而不是将其发送到传统的DNS服务器。如果本地网络上有一台名为steve的启用Bonjour的计算机则会向用户的浏览器发送正确的IP地址。这允许用户在没有常规DNS服务器的情况下访问本地主机和服务。 注意用户可以避免在Bonjour主机名后键入.local.方法是在“系统首选项”的“网络”窗格的“搜索域”部分输入local以及任何其他DNS域如apple.com或earthlink.net。在“网络”面板的“搜索域名”部分列出的连续域中搜索不合格的名称如steve在本例中为steve.apple.comsteve.eearthlink.net和steve.local。 可以了解下域命名惯例 服务发现
Bonjour的最后一个元素是服务发现。服务发现允许应用程序查找特定类型服务的所有可用实例并维护命名服务和端口号的列表。然后应用程序可以将服务主机名解析为IPv4和IPv6地址列表如命名中所述。
命名服务列表提供了服务与其当前DNS名称和端口号之间的间接层。Indirection允许应用程序保留可用服务的持久列表并在使用服务之前解析实际的网络地址。该列表允许动态重新定位服务而无需生成大量网络流量来宣布更改。
Bonjour中的服务发现是通过“浏览”完成的。针对给定的服务类型和域发出mDNS查询任何匹配的服务都会回复其名称。结果是可供选择的可用服务列表。
这与传统的以设备为中心的网络服务理念非常不同。对于处理服务器、网络设备和网络编程的人来说很容易养成从物理硬件角度考虑服务的习惯。在这种以设备为中心的视图中网络由多个设备或主机组成每个设备或主机都有一组服务。例如网络可能由一台服务器机器和几个客户端机器组成。在以设备为中心的浏览方案中客户端向服务器查询其正在运行的服务获取列表FTP、HTTP等并决定使用哪个服务。界面反映了物理系统的组织方式。但这不一定是用户逻辑上想要或需要的。
用户通常希望完成某项任务而不是查询设备列表以了解正在运行的服务。客户只问一个问题“有哪些打印服务可用”比问每个可用的设备“您正在运行哪些服务”并筛选结果以查找打印机更有意义。以设备为中心的方法不仅耗时而且会产生大量的网络流量其中大部分都是无用的。以服务为中心的方法发送一个查询只生成相关的回复。
此外服务不与特定的IP地址甚至主机名绑定。例如网站可以由具有不同地址的多个服务器托管。在一个组织内网络管理员可能需要将服务从一个服务器移动到另一个服务器以帮助平衡负载。如果客户机存储主机名在大多数情况下他们现在这样做那么如果服务移动到其他主机他们将无法连接。
Bonjour采用面向服务的观点。查询是根据所需服务的类型而不是提供服务的主机进行的。应用程序存储服务实例名称而不是地址因此如果IP地址、端口号甚至主机名发生了更改应用程序仍然可以连接。通过专注于服务而不是设备用户的浏览体验变得更加有用和无故障 Bonjour如何减少开销
无服务器寻址、命名和服务发现有可能产生大量的网络流量但Bonjour采取了许多步骤将流量降至最低。这使得Bonjour可以获得AppleTalk的易用性同时避免任何不必要的“闲聊” Bonjour使用了几种机制来减少零配置开销包括缓存、抑制重复响应、指数回退和服务通告如以下部分所述。
缓存
Bonjour使用多播DNS记录缓存来防止主机请求已请求的信息。例如当一个主机请求LPR后台打印程序列表时打印机列表通过多播返回因此所有本地主机都会看到它。下次主机需要后台打印程序的列表时它的缓存中已经有了该列表不需要重新发出查询。多播DNS响应者负责维护缓存应用程序开发人员不需要做任何事情来维护它。
抑制重复响应
为了防止对同一查询重复回答Bonjour服务查询包括一个已知答案列表。例如如果主机正在浏览打印机则第一个查询不包括打印服务并从可用的打印服务器获得12个答复。下次主机查询打印服务时查询将包括已知服务器的列表。列表中已存在的打印服务器没有响应。 Bonjour以另一种方式抑制重复反应。如果一个主机即将响应并且注意到另一个主机已经使用相同的信息进行了响应则该主机将抑制其响应。 应用程序开发人员不需要采取任何措施来抑制重复响应。Bonjour处理重复响应抑制。
指数后退和服务公告
当主机浏览服务时它不会连续发送查询以查看是否有新服务可用。相反主机发出初始查询并以指数方式减少后续查询的频率例如1秒后、3秒后、9秒后、27秒后等最多间隔一小时。 这并不意味着浏览器需要一个多小时才能看到新服务。当一个服务在网络上启动时它会使用类似的指数后退算法几次宣布其存在。这样服务通告和发现的网络流量保持在最小但新服务很快就会出现。 在配备Bonjour的主机上运行的服务在向mDNSResponder守护程序注册时自动宣布。在其他硬件如打印机上运行的服务应该以指数级回退的方式实现服务公告以充分利用Bonjour。