转: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关系比较密切。并且在各大机场用同样的终端实际测试,各大友商的无线基本都会遇到同样的问题。

苹果终端wifi图标点亮慢和portal弹窗机制分析以及处理办法和建议的更多相关文章

  1. 一款基于的jQuery仿苹果样式焦点图插件

    这次我们要分享的这款jQuery焦点图非常特别,它的外观特别简单,但是又相当大气.焦点图的整体样式是仿苹果样式的,由于jQuery的运用,我们只要点击图片下方的缩略图即可达到图片切换的焦点图特效,这款 ...

  2. wpa_supplicant - 强有力的终端 wifi 配置工具【转】

    本文转载自:http://rickgray.me/2015/08/03/useful-command-tool-for-wifi-connection.html 最近网购了一套Raspberry-Pi ...

  3. badboy录制网站出现css样式混乱,网页的图标点击没反应

    本人在测试web工作过程中,遇到了标题一样的问题.苦恼很久也没有找到原因.后面自己摸索,发现了问题所在! badboy安装是2.2.5版本:ie最新版本: 原因:首次安装badboy的时候,所默认的浏 ...

  4. 实现bootstrap布局的input输入框中的图标点击功能

    使用bootstrap布局可以在input的输入框中添加譬如登录名输入框中的一键清除图标和密码输入框中显示密码的小眼睛图标.如下图: 但是在将图标放入input输入框中,这些小图标是无法获得点击事件的 ...

  5. H-ui框架信息图标点击跳出页面问题

    在html中为消息a标签添加id: 在static/h-ui/js/H-ui.min.js添加事件:

  6. jQuery仿苹果样式焦点图插件

    在线演示 本地下载

  7. 在菜单栏对应图标点击右键-关闭窗口,javaw.exe进程未关闭。

    问题: 可视化开发时,运行一个工程,总会生成一个javaw.exe进程. 关闭运行程序,javaw.exe还存在. 解决: 运行java工程时,会启动一个新的虚拟机来运行你的程序. 程序退出的时候,这 ...

  8. web移动开发中如何实现图标点击态的蒙层效果

    webapp开发中经常需要加入点击二态,即用户点击(tap)页面某个部分时该部分的样式进行相应的变化来相应用户的点击操作,这样能够带来更好的用户体验,今天我们要讨论的是如何给图标加上点击的二态效果. ...

  9. 单片机小白学步系列(十四) 点亮第一个LED的程序分析

    本篇我们将分析上一篇所写的程序代码.未来学习单片机的大部分精力,我们也将放在程序代码的编写上. 可是不用操心.我会很具体的介绍每一个程序的编写思路和各种注意事项等. 之前我们写的程序例如以下: #in ...

随机推荐

  1. 在linux虚机中装vmtools

    很多用户在测试linux操作系统的时候喜欢用虚拟机,因为虚拟机方便而且可以同时在一台PC机上虚拟出来不同版本的linux操作系统,但是虚拟机和物理机之间的文件传输倒成了个问题,有人说可以使用vmtoo ...

  2. python之函数enumerate()

    enumerate函数可以遍历列表 for i in range(len(a)): print a[i] 等价于: for index,item in enumerate(a): print inde ...

  3. php 字符串截取

    $str="3,22,11,444,33,1,3455,33,22,444,55,66,77,88,99,554336,"; echo substr($str,0,strlen($ ...

  4. scikit-learn:3.4. Model persistence

    參考:http://scikit-learn.org/stable/modules/model_persistence.html 训练了模型之后,我们希望能够保存下来,遇到新样本时直接使用已经训练好的 ...

  5. ASCII码表(0-255)

  6. 红外图像盲元补偿matlab实现源码与效果验证

    在国内红外公司绝大多数一直以来国外进口的成像芯片,能够进行红外芯片自助开发的电学应该只有大立光电和广微积电光学方法只有上海巨哥和一直未能产 品化的昆山光微电子.由于政治和历史原因,欧美对中国大陆还是实 ...

  7. poj 2594(可相交的最小路径覆盖)

    题目链接:http://poj.org/problem?id=2594 思路:本来求最小路径覆盖是不能相交的,那么对于那些本来就可达的点怎么处理,我们可以求一次传递闭包,相当于是加边,这样我们就可以来 ...

  8. shell bash使用,包括判断文件或文件夹是否存在举例

    Linux shell编程——if条件判断 if [ condition ] ;then //一定要注意[] 與裡面的內容要有空格隔开 例如 if [(空格)${a} -eq 3(空格)]; then ...

  9. 枚举callback还是返回列表 ?

    一般都会碰到这样的一个问题,A模块需要返回一系列的object或者message,这样一般有两种处理方式: 1,枚举callback typedef (*callback_type)(obj_type ...

  10. go反射----3方法

    声明:文章内容取自雨痕老师<Go语言学习笔记> 动态调用方法,谈不上有多麻烦.只需按IN列表准备好所需参数即可. package main import ( "fmt" ...