0

我想使用 ZeroMQ 发现同一 wifi 网络中的所有 Android 设备 IP 和端口?

我的应用程序基本上将所有设备连接到同一个 wifi 网络(无需互联网)并相互发送消息。一旦 ip 和 port 我知道我已成功发送消息,但如何使用 ZeroMQ 知道所有设备互联网协议 (ip)?

4

1 回答 1

3

原则

A部分)

必须管理每个 IEEE 802.x CSMA/CD 网络“冲突域”(wifi AP/SSID 就是这样一个)才能正常工作。因此,这Address Resolution Protocol [ARP]将帮助您找到所有 ISO-OSI-Layer-3 IP 地址。Wifi 接入点 [AP] 主机是所有活动设备注册和握手的首选主机。

HG520i> ip arp status
received 54205 badtype 0 bogus addr 0 reqst in 12105 replies 196 reqst out 14301
cache hit 63152696 (24%), cache miss 19455672 (23%)
IP-addr         Type           Time  Addr              stat iface
192.168.0.230   10 Mb Ethernet 290   00:15:af:e6:b1:79 41   enif0
192.168.0.62    10 Mb Ethernet 300   00:0c:29:98:d4:3b 41   enif0
192.168.0.55    10 Mb Ethernet 300   00:27:0e:07:c5:9e 41   enif0
192.168.0.255   10 Mb Ethernet 0     ff:ff:ff:ff:ff:ff 43   NULL
num of arp entries= 4

B部分)

扫描所有已知 IP 主机上的所有端口是解决第二个问题的一种愚蠢的蛮力方法。

仅扫描“合理”的子集将为您节省同行认可的时间和精力。

使用一些更智能、更主动的“可见性自我广告策略”将为您节省更多。

解决方案

决定多方系统架构,是否将使用单个被动扫描、中央/分布式代理辅助扫描或主动自我广告策略来构建和维护相邻主机寄存器中的实时记录。

ZeroMQ本身为智能解决方案带来了强大的功能,而愚蠢的解决方案则必须等到成熟的 ZeroMQ 服务准备就绪。低级别的 L2/L3 检测必须在 ZeroMQ 能够首先取得成果之前取得成果.bind()/.connect()

不用说,不协调的 CSMA/CD 网络并不能保证所有 L2 可见的主机都将具有“兼容的”L3-ip-address(将属于/具有相同的 L3-ip-network 地址)。

因此,如果没有真正的低级嗅探器,您永远不会知道所有 IP 地址。

于 2014-07-18T02:24:32.850 回答