如何识别NetMQ中传入连接的物理地址?

在NetMQ的路由器经销商示例中 ,我们看到客户可以设置自己的身份。 这对于日志记录非常有用。 但是,如果我只控制服务器(路由器)的代码而不是客户端(代理商)的代码呢? 如果某些客户端不想以对我的服务器有意义的方式设置身份,该怎么办? 当客户端没有在消息或身份中明确地将其提供给我时,如何在我的日志中包含物理地址?

如果您只根据ZeroMQ的其他实现知道答案,我将有兴趣听到它,但最终我想要一些可以在NetMQ中完成的东西。

如何识别NetMQ中传入连接的物理地址?

好吧,似乎没有魔法准备这样做:

虽然pre-v4.2 +状态的API-s已经为设置标识启用了一些帮助,但这使得应用程序级代码有机会了解一些消息的“来源”(所有较低级别的参考文档)细节和限制)并非所有可扩展的forms通信模式Archetype都可以使用它。

接下来,整个马戏团还依赖于自由意志将这样的“帮助”信息包括(和/或不包括)到消息流的处理中。 因此,身份框架的概念是一种弱原则,你的应用程序级代码只能希望并祈祷接收一些,但主要是没有保证接收任何此类,因为零远程执行政策似乎可在2018 / Q2的API v4.2下使用。


客户端没有在消息或身份中明确地将其提供给我如何在我的日志中包含物理地址?

[法律方面] 认为完全有法律上公平的理由这样做,
基本的尊重
人权是否提供一个人的身份
是在这里应用, 不是吗?

除了GDPR和其他隐私保护法律框架之外,即使被评估为技术挑战,这一部分也更难,有许多运输类别,至少在2018年至Q2期间:
这些: { inproc:// | ipc:// | tcp:// | pgm:// | epgm:// | vmci:// } { inproc:// | ipc:// | tcp:// | pgm:// | epgm:// | vmci:// } { inproc:// | ipc:// | tcp:// | pgm:// | epgm:// | vmci:// } ,所以任何一方都很难配备一些魔法嗅探器来检测上述所需的软知识映射(实际发送或未发送的身份字符串)与实际的传输类解码器嗅闻。

接下来,并非所有连接都容易嗅探,是吗?


最终我想要一些可以在NetMQ中完成的东西。

鉴于您的声明,您的控制域不包含一般分布式系统中的远程(客户端)代理,除了大量的MITM /英特尔间谍级别的努力以促进开发全部运输类覆盖隐私渗透筛选可能的多对多连接网格已经很复杂的拓扑结构,但对任何“伪造”身份和许多其他问题具有更强的鲁棒性,使这些努力function性,通用性,不引人注目足够强大,以使他们有意义

如果还没有意识到,请注意 – 如[ ZeroMQ层次结构中不到五秒钟 ]部分所述 – 一个 ZeroMQ- Context() – 实例可能有许多 zmq.Socket() ,每个zmq.Socket()可能有很多 -AccessPoint-s,每个都可以使用不同的传输类,并且可以将.bind()/.connect() ed .bind()/.connect()许多不同的远程对等AccessPoint-s, 所以确实存在大量的拓扑形态: O)