【问题标题】:underlying mechanism of rabbitmq for NAT traversalrabbitmq NAT穿越的底层机制
【发布时间】:2014-02-19 19:13:20
【问题描述】:

我正在寻找rabbitmq的底层NAT穿越机制。

假设:

  1. 1.Server S部署在云端
  2. 许多客户端 C1-CN 作为客户部署,它们位于 NAT 之后。
  3. 服务器 S 需要通知客户端

我想知道服务器如何找到客户端的 IP/端口?它是否依赖于一种 ICE 服务器?或者它将每个客户端的 IP/ID 保存在一个大查找表 (LUT) 中。还是客户端发送大量数据包,服务器将消息放入响应数据包中?

tnx

@hardillb: 谢谢,我明白了,但是这种方法可能会给我带来严重的问题。原因是我想将它部署在超低功耗微控制器中。因此,如果我的 micro 持续向服务器发送 keep-alive 数据包,它将很快放电,因此我需要非常快速地更换电池。但在我的申请中,它应该至少持续 1 年。我想知道是否有任何方法可以防止发送此类数据包并将微机置于睡眠模式。并且只要有命令,它就可以唤醒?我听说过 CoAP(微型成为服务器),但它仍然存在 NAT 穿越问题。我想知道您是否知道解决此问题的方法?

【问题讨论】:

  • 实际上,客户端与服务器建立连接,而不是服务器与客户端建立连接。 NAT 照常工作。

标签: rabbitmq nat mqtt


【解决方案1】:

客户端通过 nat 网关打开到服务器的 TCP 连接。 nat 网关保存一张表,将客户端的入站连接映射到服务器的出站连接,这允许将返回的数据包返回给客户端。

假设客户端是纯粹的订阅者(不发布任何消息),它会定期发送一个保持活动的数据包,让服务器知道它仍然处于连接状态(这还具有通过 nat 保持连接处于活动状态的好处网关)。

当服务器收到关于客户端订阅的主题的消息时,它只是通过现有连接将该消息转发到该客户端。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 2012-12-06
    • 2017-03-25
    • 1970-01-01
    • 2023-04-01
    • 2011-01-27
    相关资源
    最近更新 更多