转: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. Easyui 基于kindeditor的扩展

    源码 /** * Author : ____′↘夏悸 * Easyui KindEditor的简单扩展. * 有了这个之后,你就可以像使用Easyui组件的方式使用KindEditor了 * 前提是你 ...

  2. 一种安全云存储方案设计(下)——基于Lucene的云端搜索与密文基础上的模糊查询

    一种安全的云存储方案设计(未完整理中) 一篇老文了,现在看看错漏颇多,提到的一些技术已经跟不上了.仅对部分内容重新做了一些修正,增加了一些机器学习的内容,然并卵. 这几年来,云产品层出不穷,但其安全性 ...

  3. Android-风格和主题

    Android-风格和主题 一 Style和主题Theme的差别 1.Theme是针对窗口级别的,改变窗口样式 2.Style是针对窗口元素级别的.改变指定控件或者Layout的样式 二 使用Styl ...

  4. php简单工厂模式

    工厂类中有一个创建对象的方法,根据传入参数的不同来生成不同的对象 class Operation extends Model{ private $numberA; private $numberB; ...

  5. keras常用的网络层

    一.常用层 常用层对应于core模块,core内部定义了一系列常用的网络层,包括全连接.激活层等. 1.Dense层 Dense层:全连接层. keras.layers.core.Dense(outp ...

  6. ST表(离线RMQ)

    离线RAQ时,预处理为O(n*lgn),查询为O(1)的算法,比较有意思的一种算法 放个模板在这可以随时看 //ST表(离线) //预处理 O(n*lgn) , 查询 O(1) #include &l ...

  7. Introduction to Mathematical Thinking - Week 4

    否定的逻辑 应该思考符号背后表示的逻辑,而不是像操作算术运算符一样操作逻辑符号. 比如 对于任意的 x,x属于自然数,那么 x 是偶数或者奇数:这是对的 如果使用“乘法分配律”拆分,变成“对于任意的x ...

  8. ehcache缓存框架简介(一)

    EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider. 我们使用EhCache缓存框架主要是为了判断重复Url,每次爬取一个网 ...

  9. jdbc PreparedStatement 防止sql注入的关键代码片段

    mysql-connector-java-5.1.38.jar PreparedStatement 的 setString(int parameterIndex, String x) 方法 for ( ...

  10. Django模型中OneToOneField和ForeignKey的区别

    网上看到一篇讲解"Django模型中OneToOneField和ForeignKey区别" 的文章,浅显易懂; 可以把ForeignKey形象的类比为: ForeignKey是on ...