5

我正在为 google android 编程,我想知道无线 802.11 网络的扫描是被动完成还是主动完成?我的意思是:设备实际上是否发出信标请求信号,WifiManager.startScan()或者它只是监听接入点定期发送的信标?

4

3 回答 3

3

Android 会进行被动扫描,它会监听信标。进行主动扫描会发送探测请求并等待探测响应,从而在网络上造成大量拥塞。

于 2010-08-13T16:47:58.150 回答
0

答案是肯定的

实际上,使用omnipeek从Android/iOS设备上抓包,我们可以得到如下结果:
  • 大多数 Android 设备总是尝试每隔几分钟发送一次探测请求帧。他们保留您用于连接的 SSID 列表,并始终尝试发送带有 SSID 的探测请求帧以查看它们现在是否可用。我猜一个原因是802.11 pre-authencation,其他一些原因可能是:提高 wifi 列表显示速度。
  • 他们正在积极地工作。
  • iOS 设备很少进行主动扫描

如果您想了解更多有关规则的信息,最好阅读“802.11 无线网络指南”

您可以参考 pciture :omnipeek 捕获的包

于 2016-03-11T03:51:41.767 回答
0

尽管这个问题已有 11 年历史,但它今天仍然具有相关性,所以我想我会给它一个最新的答案:

是的,Android 设备会主动搜索 AP。被动扫描需要设备更长时间地监听信标,这很耗能,请参阅 Freudiger 的这篇论文了解更多详细信息

主动扫描只需要发送探测请求,然后等待相应通道的回复。这需要更少的能量,因为它需要在更短的时间内打开无线电。不幸的是,主动扫描需要设备以某种方式识别自己,这使得它很容易被追踪。适当的缓解措施包括:每次突发的 MAC 地址随机化、与 AP 连接期间的随机 MAC、随机序列号、省略不必要的字段等等。这一切似乎还不够,因为人们仍然想方设法优化他们的算法以通过探测请求改进跟踪。;-)

Rain Ma 回复说探测请求包含 SSID,这在技术上不再适用于所有设备。Probe Requests 中使用 SSID 的唯一原因是为了找到隐藏的网络。在 Android 设备中,较新的操作系统版本根本不再传输 SSID,除了扫描隐藏网络时。在 Android 8 之前,所有手动添加的网络都被自动假定为隐藏网络。从 Android 9 开始,必须明确将网络标记为“隐藏”,以便设备使用 SSID 进行探测。iOS 会自动检测隐藏网络,并且他们说他们根本不会使用 SSID 进行探测,除非他们检测到要隐藏的网络。

于 2022-01-17T09:33:00.113 回答