基于Probe Request的主动扫描抓包交互流程

电子说

1.2w人已加入

描述

Beacon帧为周期间隔发送,虽大部分路由器将其间隔时间默认设置100ms(近似值),但路由器可以将其值配置更大。仅依赖“被动扫描”,WiFi设备在扫描过程中,存在漏掉发现周围WiFi网络的情况。因此,为了提高设备发现WiFi网络的能力,有了基于Probe Request和Probe Response帧的“主动扫描”。本节接下来分析“主动扫描”。

好。下面我们看下“主动扫描”的抓包交互流程。

[场景1]:

  • WiFi设备在信道N上,发送Probe Request帧,其目的地址为广播地址,称为广播帧。
  • 工作在信道N上的路由器,收到该广播后,会响应Probe Response帧,其目的地址为单播地址,称为单播帧。
  • WiFi设备收到Probe Response帧后,回复Ack确认,如下图所示。

wifi网络

[场景2]:

  • WiFi设备在信道N上,发送Probe Request帧,其目的地址为单播地址,称为单播帧。
  • 工作在信道N上,路由器的Mac地址为Probe Request帧中的目的地址,收到该Probe Request帧后,回复Ack确认,并回复Probe Response帧。
  • WiFi设备收到Probe Response帧后,回复Ack确认。如下图所示。

wifi网络

通过以上可知,Probe Request帧可以被用作单播或广播帧进行扫描请求。接下来我们就看“主动扫描”依赖Probe Request和Probe Response帧的格式内容。

Probe Request和Probe Response帧都为管理帧,符合管理帧通用定义格式:802.11 MAC Header + Frame Body + FCS,如下:

wifi网络

  • Probe request帧,子类型为4,可作为广播帧或单播帧。做广播帧时,Address3为广播地址;做单播帧时,Address3为BSS对应的BSSID或一个单播接收地址。
  • Probe Response帧,子类型为5,作为单播帧响应WiFi设备。

802.11 MAC Header字段与Beacon帧一致,这里不再赘述,可参考【WiFi基础学习到实在(五)】。

在开始讨论Probe Request和Probe Response帧Body内容前,留个问题“WiFi设备每次连接WiFi网络前,已扫描到该WiFi网络,为什么还要通过发送Probe Request单播帧,做一次与路由器的交互呢?”

好,接下来我们探讨抓包中Probe Request帧的Body内容,如下图所示。

wifi网络

Probe Request帧Body内容只包含元素(Elements)。作为Probe Request帧,它的主要目的是触发路由器给其回复Probe Response帧,发送的内容越短,占用信道资源越少,效率越高。因此,Probe Request帧只携带一些必要的内容信息。

[1]SSID Element:

表明扫描的目标网络SSID。如Probe Request为广播帧,隐藏网络的网络名称与之相同,将会通过Probe Response回应。而网络名称不相同的网络,则不回应。

注:

Probe Request为广播,SSID Element字段长度为0或不包含SSID List element。则所有非隐藏网络则收到后,回复Probe Response,隐藏网络则不回应。

[2]Supported Rate和Extended Supported Rate Element:

表明扫描设备支持的速率集,路由器收到后,选择其一种支持的速率发送Probe Response帧。

[3]DSPS Element:

表明当前Probe Request帧在那个信道上扫描发送。

[4]HT Capability Element:

表明WiFi设备支持802.11n,是一个HT设备。

注:

  • 如Probe Request帧中包含HE Capability Element,则表明WiFi设备支持802.11ax。
  • 作为请求帧,Probe Request帧Body可包含请求Element ID,如接收Probe Request帧的设备支持请求ID,则在回复的Probe Response帧Body中应携带该Element ID信息。
  • 实际WiFi设备使用中,为了尽可能扫描到周围WiFi网络,存在在一个信道上发送多个Probe Request帧。

注:协议规范【原文】

In an infrastructure BSS or in an IBSS, STAs receiving Probe Request frames shall respond with a probe response when the SSID in the probe request is the wildcard SSID or matches the specific SSID of the STA or when the specific SSID of the STA is included in the SSID List element.

以上Element详细解释可参考【WiFi基础学习到实战(六)】。

发送Probe Request帧,触发接收者回复Probe Response帧,从中获取当前WiFi网络的信息能力。

接下来我们分析Probe Response帧的内容,如下图所示Beacon帧和Probe Response帧的Body内容:

wifi网络

wifi网络

Probe Response帧Body内容分为:字段(Fields)和元素(Elements)。其Body内容和对应路由器发送的Beacon帧一致,Body内容解释可参考【WiFi基础学习到实战(五-六)】。

这里我们分析下Probe Response帧Body内容可能存在与Beacon帧不同点。

  • Probe Response帧为单播帧,接收地址为单播地址。做为响应Probe Request帧,其Body可能携带Request帧中请求的Element ID信息。
  • Beacon帧为广播帧,其Body中可能不携带Probe Request请求的Element ID信息。

Probe Response帧主要是将WiFi网络的信息能力主动的反馈给请求设备。请求设备通过其Body内容了解当前WiFi网络的状态。

到这里,我们对Probe Request和Probe Response帧的探讨就结束了,现在回到我们开始的问题“有些WiFi设备连接WiFi网络前,已扫描到该WiFi网络,为什么还要通过发送Probe Request单播帧,做一次与路由器的交互呢?”。

答:WiFi设备连接前做Probe Request请求,一是获取当前WiFi网络的加密方式,为接下来的认证关联做准备;二是获取WiFi网络的TSF,更新校准本地的TSF。

注:协议规范【原文】

A non-DMG STA’s TSF timer shall be accurate to within ± 100 ppm. A DMG STA’s TSF timer shall be accurate to within ± 20 ppm.

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分