• 苹果终端wifi图标点亮慢和portal弹窗机制分析以及处理办法和建议


    转:http://kms.h3c.com/View.aspx?id=52875

    问题现象

    在无线环境中经常碰到苹果终端连接无线后wifi图标无法点亮导致终端无法上网、在起portal的网络中认证页面无法自动弹出影响使用体验。

    告警信息

    原因分析

    一、wifi图标无法点亮分三种情况:

    1、无线属内网环境,自动获取地址时没有下发DNS地址,导致wifi图标始终无法点亮。

    2、无线即无portal认证、又无加密,此时有些苹果终端每次连接wifi都会延迟10秒左右才能点亮图标。

    3、无线环境起了portal认证,wifi图标延迟10秒到45秒才能点亮。

    二、WIFI图标点亮以及portal不弹窗分析

    1、 概率性不弹窗分析

    参考了苹果官方文档的状态机,发现非首次连接的ssid是有可能被cache的,如果cache,就会直接交给“热点助手(Hotspot helper)”,目前看,只要意图合理合法的APP都有可能注册为热点助手。热点助手对于频繁连接断开的ssid处理行为可能会有特殊处理,比如不再嗅探,直接点亮wifi标识。

    2、概率性弹窗慢分析

    苹果弹窗的嗅探报文并不总是立即发出,偶尔会出现不大于45s的延迟,因此产生了弹窗慢的问题。查看苹果的官方文档,发现苹果在分配到ip以后如果该网络没有cache过会进入网络评估状态,这个过程需要与注册为“热点助手(Hotspot helper)”的APP交互。系统先发一个评估(Evaluate)的命令给每一个热点助手,命令包含SSID和BSSID,每一个命令助手要在45s内做出对该网络的可信度(有none, low, high三档)评估。

    (1)第一个给出high的热点助手会被选为best_helper,后面的弹窗会与该助手交互。

    (2)如果所有的热点助手都没有给出high,选择给评估最高的助手为best_helper,后面的弹窗会与该助手交互。(比如有四个助手,三个给了none,一个给了low,那么这个给low的会被选中)

    (3)如果45s没有热点助手给出任何可信度的评估,苹果会迁移到认证结束(Authenticated)的状态,不会有弹窗。

    从抓包上看,再结合苹果对热点助手的规则,可以推断出:最坏的结果是,首次连接,也许所有的热点助手都没有关于当前网络的记录,所以评估过程不可能在45s内给出high,甚至最少有一个给了none其他的根本没有给出评估结果,超时后系统把这个给出none的选为best_helper,开始后面的弹窗交互,这种情况,一定会延迟45s。也有可能是热点助手收到评估命令后,有些立刻给出了评估,有些给的迟一些,但是还是在45s以内所有的助手都给出了评估,系统选出来了best_helper,开始弹窗流程,这个过程也许用了10s,也许用了20s,这可能就是弹窗延迟时间不定的原因。

    以下是典型的热点助手的行为:

    我们通过安装一些可能具有热点助手功能的APP进行抓包后发现有些热点助手具有特殊的嗅探报文,比如钱盾,会在以上的嗅探报文基础上额外发出若干如下报文:

    GET /hotspot-detect.html HTTP/1.1

    Host: captive.apple.com

    Accept: */*

    Accept-Language: zh-cn

    Connection: keep-alive

    Accept-Encoding: gzip, deflate

    User-Agent: %E9%92%B1%E7%9B%BE/5.2.2 CFNetwork/811.5.4 Darwin/16.6.0

    这个报文的User-Agent为“钱盾/5.2.2 CFNetwork/811.5.4 Darwin/16.6.0”。

    具体有哪些APP注册了热点助手,这些APP如何评估当前网络,我们是不能完全知情的。也就是说,弹窗的快慢,是由苹果设备的所有热点助手的综合行为决定的。

           关于PSK加密,这种情况会影响某个APP(比如钱盾)的评估,直接给出high,加快弹窗。

    3、评估官网文档关于Captive网络的处理流程如下:

     

    总结:

    1. 1.      关联网络?建立ip连接?评估阶段,弹窗是在评估阶段后面开始的,加密服务模板是在关联网络阶段,并没有证据证明服务模板加密是否可以影响到后面某一个Hotspot Helper对当前网络的评估。
    2. 2.      一旦有一个helper返回一个它可以以高可信度处理该网络的结果,其他helper的结果就可以被忽略了,每一个helper有最多45s的时间进行评估,如果45s内没有最优解,系统只能选择可信度最高的作为best_helper。(high confidence 如何理解,文档并没有精确说明)
    3. 3.      究竟有哪些APP注册过Hotspot Helper,我们还不能确定,用户手机安装了哪些APP,我们也是不可知的,所以在评估状态下究竟会返回什么结果,何时返回结果都是不确定的。
    4. 4.      偶尔不弹窗的原因也得到了解释:当前网络被Cache了,就不会走到评估阶段,也就不发嗅探报文了。
    解决办法

    1、如果是内网环境也一定要配置DNS地址,并且做PSK加密。

    2、不起portal或起了portal无感知时尽量加PSK加密。

    3、起了portal的无线环境中,常用的网络优化配置如下,可以提升体验程度(V7)

    #

    portal free-rule 2 destination ip any udp 53

    portal free-rule 3 destination ip any tcp 53

    portal free-rule 4 destination ip any tcp 5223

    //这些是iOS有时候会发出探测报文的端口号

    #

    portal safe-redirect enable

    portal safe-redirect method get post

    portal safe-redirect user-agent Android

    portal safe-redirect user-agent CaptiveNetworkSupport

    portal safe-redirect user-agent MicroMessenger

    portal safe-redirect user-agent Mozilla

    portal safe-redirect user-agent WeChat

    portal safe-redirect user-agent iPhone

    portal safe-redirect user-agent micromessenger

    #

    portal web-server wbsvr

    url http://h3c.XXX.imc.com/portal

    server-type imc

    captive-bypass ios optimize enable

    if-match original-url http://captive.apple.com/hotspot-detect.html user-agent Mozilla temp-pass redirect-urlhttp://h3c.XXX.imc.com/portal

    if-match original-url http://www.apple.com user-agent Mozilla temp-pass redirect-url http://h3c.XXX.imc.com/portal  #以上两条是苹果触发临时放行的地址,通过此配置将临时放行提前,避免出现弹出页面后wifi标识点亮又消失的问题,对Android设备无影响。

     

    建议与总结

    即使做了上述的优化后,IOS弹窗问题受终端行为影响还比较大,苹果6和6s基本第一次连接时都会产生45秒的延迟弹窗,当再次连接时速度就很快了,和终端cache行为、终端安装的app关系比较密切。并且在各大机场用同样的终端实际测试,各大友商的无线基本都会遇到同样的问题。

  • 相关阅读:
    2020暑假项目-车辆派遣管理系统需求
    2020暑假项目-车辆派遣管理系统
    关于页面刷新或者调用方法事获取不到元素信息或者出现缺少对象错误的换位思考setTimeout的使用
    JSON 传值 textarea中虚拟换行功能
    我的MYSQL学习心得(十) 自定义存储过程和函数
    我的MYSQL学习心得(九) 索引
    我的MYSQL学习心得(八) 插入 更新 删除
    我的MYSQL学习心得(六) 函数
    我的MYSQL学习心得(七) 查询
    我的MYSQL学习心得(四) 数据类型
  • 原文地址:https://www.cnblogs.com/newjiang/p/8064124.html
Copyright © 2020-2023  润新知