直观上,一般WiFi的简要过程:
1. 扫描阶段,手机主动找到无线接入点(细节:WiFi发送Beacon包,周围的APs收到Beacon后,回复当前APs的MAC地址和SSID之类信息)
2. 关联阶段,手机和相应的无线接入点建立关联(细节:WiFi和具体的AP进行一次握手,协议的具体步骤参考802.11)
3. 传输阶段,手机的数据上传和下载

技术上怎么实现:
iOS 8 randomises the MAC address这个过程只在步骤1,扫描阶段采用,后面的关联阶段和传输阶段都是采用真实的MAC地址。
简单来说,就是在扫描阶段,WiFi的beacon包里面的MAC地址是iOS设置的一个随机的MAC地址,这时候APs接到这个beacon包之后,根据这个MAC地址,将ack回应到手机的WiFi接口上。虽然这个MAC地址是随机设置的,但是它还是正常有效的MAC地址,在APs和手机之间需要对应有效的MAC地址来传输数据。
技术实现上,随机一个MAC地址,作为虚拟MAC地址,来代替真实的MAC地址,手机在这个阶段,仅仅接受这个虚拟的MAC地址的ACK,不会接受真实MAC地址的数据包。整个过程,技术实现上都非常直观,没有什么好说的。

下面,我简单说一下我对这个技术上的理解:(可能会有些问题)
虚拟MAC地址来和APs进行扫描阶段工作,需要生成新的MAC地址。我能想到的随机函数,可以根据静态的手机厂商出厂序列号和动态的时间序列作为种子,生产虚拟的MAC地址。当然,生产虚拟的MAC地址的频率,次数,还有具体的生产函数,都有待考证。
既然MAC地址是随机化的,那么就有一定的概率冲突。不过在WiFi的扫描阶段,MAC地址冲突也就冲突呗,而且概率应该非常小,我觉得问题不大。

有何影响:
随机化MAC地址,仅仅是在扫描阶段,后面的关联和数据传输都是正常的MAC地址。
只对一种情况有影响,如果我们在public place设置了一些热点的APs,它的监测对象是非关联的手机。
举个例子,我在街道路口A上设置一个AP,这时候,路过这个路口A,而且路过的时候,WiFi正好处于扫描阶段,那么我设置的AP就可以监测到这时候路过的手机的MAC地址。这时候如果换成iOS 8的话,我设置的AP就监测不到了。
当然,我设置成免费热点AP,允许别人进行连接,那么iOS 8也不会阻止这种情况,或者采用WiFi sniffer监听信道的换,iOS 8 也不会阻止这种情况。

— 完 —

本文作者:知乎用户(登录查看详情)

【知乎日报】
你都看到这啦,快来点我嘛 Σ(▼□▼メ)

此问题还有 1 个回答,查看全部。
延伸阅读:
为什么高级酒店的 Wi-Fi 要收费?
想用 CMCC Wi-Fi 热点,但无奈信号太弱,可有好的解决方案?

分享到