【问题标题】:Remote resource discovery using coap使用 coap 进行远程资源发现
【发布时间】:2016-05-15 22:58:56
【问题描述】:

我正在尝试在家庭自动化领域创建一个小型学术项目。我探索了物联网领域的各种协议和标准,发现 COAP 符合我的要求。

目的很简单:在家中安装一个外围设备(如灯泡、温度传感器等),充当 COAP 服务器并公开某些资源和服务。由于 COAP 使用类似于 web 的寻址方案,因此任何具有此服务器地址的客户端都应能够与此 COAP 服务器(即外围设备)通信并控制其属性。

我对不存在于与服务器相同的局域网中的客户端如何发现该服务器及其暴露的资源有一些疑问。我知道 COAP 使用 CoRE 链接格式促进资源发现,但似乎它主要使用只能在 LAN 内工作的多播。我不想把资源目录服务器放在家里,各种 COAP 服务器向它注册,然后这个目录服务器与云中的服务器通信。我希望能够在家中安装一个外围设备,该外围设备可以使用 wifi 家庭网络与远程客户端(如 COPPER)通信。但是如何从远程位置发现位于家中的 COAP 服务器,然后考虑到 COAP 服务器将位于私有 IP 地址上,然后与它交谈。 仅使用 COAP 真的可以吗?

【问题讨论】:

  • 我不确定问题是什么,您是否要扫描多个房屋并寻找传感器,因此您不知道谁有传感器,谁没有,或者您的客户是先入为主的知识服务器的位置(公共 IP)
  • 我不想扫描多个房屋。我想自动化一个家庭,并且设备必须可以远程访问。我想使用 COAP 连接设备和云服务器。似乎 COAP 主要用于通过 LAN 而不是 WAN 访问。这是正确的吗?
  • 不,CoAP 是应用层协议,位于 UDP/DTLS、TCP/TLS 之上。所以 wan 应该不是问题,它遵循 REST 范式,它使用 URI 来定义资源并且是完全双向的。同样重要的是要知道设备可以同时作为“客户端和服务器”的方式。因此,设备可以首先联系外部主机。如果这是您要问的,我可以在答案中复述一下?
  • @simon:您是说先从设备打开到服务器的连接,以便在 NAT 服务器中创建映射吗?但是,如果设备不使用通道,这种映射会持续多久?
  • 是的,这就是我的意思,对于映射寿命,这将取决于您的中间框配置。

标签: networking cloud iot home-automation coap


【解决方案1】:

由于您位于 NAT 后面,因此既不允许直接发现也不允许连接; CoAP 不会试图神奇地刺穿它。

流行的出路是:

  • 使用 IPv6(避免使用 NAT)并(至少有选择地)禁用防火墙。您仍然只能在本地进行发现,但一旦发现,您就可以从任何地方连接到您的设备。
  • 使用 VPN 让您的移动设备如同在 NAT 中一样工作。
  • 在路由器上运行一个 CoAP 代理,并向外部开放一个端口,并告诉您的移动设备通过该代理进行连接。这也不会为您提供本地发现。

对于代理和 IPv6 情况,您仍然可以在本地网络中运行资源目录。这既不需要连接到任何云服务,也不需要接受任何云服务的注册,但它可以帮助您完成您想要使用多播进行的发现,但由于您的移动设备太远而无法做到。资源目录和代理都应该可配置为不与本地网络之外的设备通信,除非它们经过身份验证。

【讨论】:

  • 谢谢克里斯!我很久以前就停止了这个项目,但你的建议很有意义。
【解决方案2】:

让您的路由器接受 HTTP 请求,并在您的系统中运行 HTTP 到 CoAP 代理,通过您的 IP 考虑 HTTP-CoAP 代理访问您的 CoAP 设备。

【讨论】:

  • 查询是关于如何发现 COAP 服务器,而不是如何使用 HTTP 与其通信。
  • 你想要完成的事情是完全可行的,只需添加几个代理:[private N/w]:[public network] CoAP server ->(proxy)CoAP to HTTP -> : -> (proxy)Http to CoAP -> RD - 通过资源目录发现 coap 服务器,(通过 HTTP-coAP 代理)在公共网络中。 - 在本地网络中添加 http - coap 代理并访问 coap 服务器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多