为什么 Google Cast Chrome 扩展只能通过 mDNS 搜索 link-local 设备?
Why does Google Cast Chrome extension only search for link-local devices via mDNS?
Chromecast v2 设备使用 mDNS 宣布它们的存在,并且在对 _googlecast._tcp.
执行 mDNS 查询时可以发现它们
DNS-SD / Bonjour 还支持 "wide-area discovery" 的概念,它使用标准的单播 DNS 查询来查找设备。这对于更复杂的网络场景很有用 - 即您的 Chromecast 设备可能在一个 VLAN 中,但您的发送方设备在另一个 VLAN 中。
然而,当拖网 Chromium 源时,我发现 this code in mdns_api.cc 这似乎表明 Chrome 扩展只会搜索 _googlecast._tcp.local
- 完全阻止其他 [= 的广域 DNS 发现=26=]投射装置。根据轶事测试,似乎 Chromecast iOS 应用程序和 SDK 也有此行为。
为什么 Chromecast Chrome 扩展的官方发现机制明确地只发现 link-local Chromecast 设备?
他们可能没有这样做 "wide-area discovery" 因为在实施过程中有很多陷阱并且没有太多收获。
假设他们确实实现了它(从规范来看,它在技术上似乎并不困难;似乎主要是一个边缘案例问题)。
你需要:
- 您控制的域。可以是仅限本地的域。
- 没有多少人这样做。
- 您要使用的多个 VLAN。
- 大多数家庭只有一个 VLAN。
- 支持广域发现的 DNS-SD 服务器。
- 这可能是最容易拥有的东西。即使那样,大多数人也不会这样做。
- 用于输入要为设备 ping 的各种 WAD 服务器的 UX 流程。
- 这是 Google 的困难部分,因为它需要在所有 SDK 中保持一致,并且使用 WAD 发现的 Chromecast 会导致所有本地媒体服务器应用程序无法运行(例如 Plex)。
(1) - (3) 是 Google 不会将其作为优先事项的原因。毕竟,Chromecast 是一种消费类设备,而且消费者的联网情况往往比较简单。 (4) 这就是为什么它不是唾手可得的果实。
您还需要解决几个问题:
- 如果您在单独的 VLAN 上连接到 Chromecast,然后移除它的 WAD 服务器,会发生什么情况?
- WAD服务器掉线怎么办?
- 当您有多个同名的 Chromecast 时会发生什么情况?
- 如果它们也有相同的 IP 地址怎么办(可能是因为 VLAN 可以有重叠的 IP 空间)?
- 如果可以使用 WAD 发现 Chromecast 但无法访问,会发生什么情况?
- 他们是否应该尝试连接到您发现的每一个 Chromecast 以测试它是否可以访问?
- 您将如何扩展它以在可能 "far" 远离的 VLAN 中使用 100 个 Chromecast?
我认为正是这些问题会阻止 Google 实施 WAD,即使他们愿意。
Chromecast v2 设备使用 mDNS 宣布它们的存在,并且在对 _googlecast._tcp.
执行 mDNS 查询时可以发现它们DNS-SD / Bonjour 还支持 "wide-area discovery" 的概念,它使用标准的单播 DNS 查询来查找设备。这对于更复杂的网络场景很有用 - 即您的 Chromecast 设备可能在一个 VLAN 中,但您的发送方设备在另一个 VLAN 中。
然而,当拖网 Chromium 源时,我发现 this code in mdns_api.cc 这似乎表明 Chrome 扩展只会搜索 _googlecast._tcp.local
- 完全阻止其他 [= 的广域 DNS 发现=26=]投射装置。根据轶事测试,似乎 Chromecast iOS 应用程序和 SDK 也有此行为。
为什么 Chromecast Chrome 扩展的官方发现机制明确地只发现 link-local Chromecast 设备?
他们可能没有这样做 "wide-area discovery" 因为在实施过程中有很多陷阱并且没有太多收获。
假设他们确实实现了它(从规范来看,它在技术上似乎并不困难;似乎主要是一个边缘案例问题)。
你需要:
- 您控制的域。可以是仅限本地的域。
- 没有多少人这样做。
- 您要使用的多个 VLAN。
- 大多数家庭只有一个 VLAN。
- 支持广域发现的 DNS-SD 服务器。
- 这可能是最容易拥有的东西。即使那样,大多数人也不会这样做。
- 用于输入要为设备 ping 的各种 WAD 服务器的 UX 流程。
- 这是 Google 的困难部分,因为它需要在所有 SDK 中保持一致,并且使用 WAD 发现的 Chromecast 会导致所有本地媒体服务器应用程序无法运行(例如 Plex)。
(1) - (3) 是 Google 不会将其作为优先事项的原因。毕竟,Chromecast 是一种消费类设备,而且消费者的联网情况往往比较简单。 (4) 这就是为什么它不是唾手可得的果实。
您还需要解决几个问题:
- 如果您在单独的 VLAN 上连接到 Chromecast,然后移除它的 WAD 服务器,会发生什么情况?
- WAD服务器掉线怎么办?
- 当您有多个同名的 Chromecast 时会发生什么情况?
- 如果它们也有相同的 IP 地址怎么办(可能是因为 VLAN 可以有重叠的 IP 空间)?
- 如果可以使用 WAD 发现 Chromecast 但无法访问,会发生什么情况?
- 他们是否应该尝试连接到您发现的每一个 Chromecast 以测试它是否可以访问?
- 您将如何扩展它以在可能 "far" 远离的 VLAN 中使用 100 个 Chromecast?
- 他们是否应该尝试连接到您发现的每一个 Chromecast 以测试它是否可以访问?
我认为正是这些问题会阻止 Google 实施 WAD,即使他们愿意。