【问题标题】:Do Android devices scan *actively* for WiFi networks?Android 设备是否*主动*扫描 WiFi 网络?
【发布时间】:2010-08-09 12:06:31
【问题描述】:

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

【问题讨论】:

  • 可以使用 WifiManager.startScanActive() 强制进行主动扫描

标签: android wifi network-scan


【解决方案1】:

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

【讨论】:

  • 事实上,有时会有 来自 Android 手机的探测请求。当用户在手机上启动 Wi-Fi 设置时,它们最常发送。
【解决方案2】:

答案是

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

如果您想进一步了解规则,最好阅读“802.11 无线网络指南”

You can refer to the pciture : Packages captured by omnipeek

【讨论】:

    【解决方案3】:

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

    是的,Android 设备会主动搜索 AP。被动扫描需要设备监听信标的时间更长,很耗能see this paper by Freudiger for more details

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-19
      • 2011-04-29
      相关资源
      最近更新 更多