Android: 为同一接入点获取不同的 bssid

Android: getting different bssid for the same access point

我的应用程序的重点是根据我连接的网络限制操作。我选择通过接入点的 mac 地址或 BSSID 来定义网络。我正在使用 WifiInto 的 getConnectionInfo() 和 getBSSID() 来获取接入点的 BSSID。

我的印象是 BSSID 对于接入点是唯一的。但是,在不同的设备上,我得到的 BSSID 略有不同(后 4 位数字不同,但前 8 位数字相同)。即使在同一台设备上,在连接时,BSSID 也可能略有不同。

我的问题是,有没有办法可靠地唯一标识接入点?人们告诉我 MAC 地址是唯一的方法,但正如您在此处看到的,返回的 BSSID 略有不同。

是的,BSSID 是唯一的,但是您可以在一个 RF 区域中为单个 ESSID 设置多个 BSSID,即多个接入点宣布相同的 SSID 所以很可能不同的客户端设备会显示不同的 BSSID,这似乎发生在你的情况下

在回答您的问题之前,我想稍微解释一下 BSSID、SSID 和接入点。

一个接入点可以公布多个 SSID。所以为了唯一宣布一个SSID,将使用单独的BSSID。
多个接入点公布的 SSID 将由单独的 BSSID(由每个接入点)公布。因此,如果您想查看有多少个接入点宣布了上述 SSID,您可以算出您为同一 SSID 获得了多少 BSSID。

双频接入点(即 2.4 GHz 和 5 GHz)将为相同的 SSID 公布 2 个 BSSID;一个用于 2.4 GHz 频段,另一个用于 5 GHz 频段。

例如,如果您的网络中有 10 个双频接入点,并且每个都宣布相同的 SSID;您将总共有 20 个 BSSID 宣布相同的 SSID。
(尽管一个地方不需要 10 个接入点,并且它们通常以只有 3 或 4 个能够相互监听的方式放置。因此您不会像上面的示例那样在任何一个地方找到 20 BSSID)。


现在,回答您关于唯一标识接入点的问题。
BSSID 是使用接入点的 MAC 地址创建的,前 8 位数字与接入点的 MAC 相同,后 4 位数字是每个 BSSID 唯一的。 因此,通过查看 BSSID,您可以猜测唯一标识接入点。