【问题标题】:iOS Bonjour Over the Internet互联网上的 iOS Bonjour
【发布时间】:2011-06-05 07:49:11
【问题描述】:

我知道 iOS 的 Bonjour 实现(NSNetService、NSNetServiceBrowser)在本地网络上开箱即用。

文档说可以设置 Bonjour DNS 服务器以允许通过 Internet 连接用户,所以我的问题是:

  1. 什么是 Bonjour DNS 服务器接口?有没有我可以开始的样本?
  2. 负责对等方初始握手\连接和其余部分(发送\接收数据)的 DNS 服务器是否直接在对等方之间进行?
  3. DNS 服务器是否提供 NAT 打孔机制?

谢谢!

【问题讨论】:

    标签: ios networking bonjour


    【解决方案1】:

    Bonjour 本地服务发现基于“多播 DNS”。每当某个客户端想要了解有关网络或网络上服务的任何信息时,它都会使用多播地址224.0.0.251,这意味着只有该多播组中的客户端才能一起使用 bonjour。 244.0.0/24 IP 地址空间被 RFC5771 定义为“本地网络控制块”,不会被转发到本地网络之外。

    但是真的,Bonjour 只是一种基于 DNS 的方法 - 您可以告诉 NSServiceBrowser 在非本地域中搜索,这只需要 DNS 服务器响应特定请求(如在Manually Adding DNS-SD Service Discovery Records to an Existing Name Server) 如果您让 DNS 更新工作 (Setting up a Bonjour Name Server),这允许通过 Internet 进行服务发现甚至服务注册,但仅此而已 - 您必须自己关心打孔。

    所以给自己一个 BIND-server 并开始尝试 ;)

    【讨论】:

    • 感谢您的回复!请问有没有针对iOS的互联网点对点框架?
    • 至少我什么都不知道。如果你想自己编写代码,你必须深入框架。如果您要连接的设备彼此靠近,您可以使用凹凸的API 连接设备并通过任何网络传输数据,“只是凹凸”..
    • 关于打孔的评论不正确。 Bonjour 将仅在机器具有公共地址或可以通过 NAT-PMP 或 uPNP 协商端口转发的情况下在广域区域注册服务。
    • 我刚刚做了一个快速测试:使用 C DNS 服务发现 API 在我的 OS X 系统上未配置的域中注册导致 Bonjour 设置端口转发并尝试在其中添加记录领域。这失败了,因为有问题的区域需要更新才能拥有 TSIG。因此,我想说,只要您可以允许开放更新(因为无法在 iOS 上设置 TSIG 凭据),它应该可以正常工作。如果您有任何问题,请随时给我发电子邮件。
    猜你喜欢
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-07
    • 2018-08-05
    • 2015-08-05
    • 2011-11-30
    • 2011-12-18
    相关资源
    最近更新 更多