iOS仿抖音网络检测

当我们app的量级上去的时候,用户分布在全国各地。我们经常收到客服反馈的各种奇奇怪怪的问题。(小朋友你是否有很多问号?)

明明自己用的时候、测的时候好好的,怎么到用户手机各种问题?比如:登录时获取验证码失败,进入首页接口超时加载白屏等问题。通过我们埋点日志的收集,我们发现AFN一般报的错都是类似如下这种,只是告诉你超时了。

image.png

我们都知道网络不好的问题有太多方面的因素了(DNS解析出现问题啦,在大街上走到不好的位置,可能就断网了、或者切换基站了、或者被伪基站拦截了、或者切换到不能上网的免费wifi了、或者自己手机欠费了、还有各种弱网情况等等)。用户可能不知道,他就认为是你app有问题。

image.png

互联网本身是一个很复杂的一个系统,中间的传输会发生很多意想不到的情况。

因此究其原因。我们需要解决两个方面的问题。一方面有些时候是用户自己的网络有问题,这时候就需要进行温馨提示。但另一方面有,些时候手机网络看起来是好的,但是实际上客户端到达服务器需要很多道"关卡",例如路由器,电信服务器,防火墙等.其实说白了就是解决一个问题:客户端是否能够成功访问服务器,这就需要用到一些检测的手段,偶然间看到抖音的方案,觉得挺不错的。

image.png

image.png

让我们来看看,都检测了啥。开头的基本信息就不说了,包括app版本号,系统版本号,本地ip,当前网络类型,运营商等等。

接着解析抖音自己的域名,我们发现dns解析出来ip居然有10多个。。真的是比较夸张了。如果说用一台机器接收流量配合nginx,并发几十万也是比较轻松的。10多个什么概念,我算数不太好...

接着是ping自己域名 然后还ping了百度的域名进行对比,这个很不错,有对比就有伤害。

然后是路由追踪,每个路由分别发了3个包,并且统计了时间。

最后是检测上传速度和下载速度,这个我个人认为看需要吧,视频网站还是需要的,因为毕竟对网速要求还是比较高的。

众所周知,互联网嘛,就是抄嘛(🐶)

首先我们先找到各个方案的实现:

在IOS平台实现Ping 和 traceroute.

这篇原理是比较通俗易懂的,强烈推荐。

ping域名的原理就是通过DNS解析(socket.h支持)拿到ip,通过ICMP协议对目标主机进行发送包,目的主机必须返回ICMP回送应答消息给源主机。如果源主机在一定时间内收到应答,则认为主机可达。大多数的 TCP/IP 实现都在内核中直接支持Ping服务器,当应答报文返回时,使用当前时间值减去存放在ICMP报文数据中存放发送请求的时间值来计算往返时间。从功能上划分,ICMP属于网络层,TCP和UDP属于传输层,所以icmp的链路更短。

image.png

traceroute的原理(分udp和icmp两种,一般用icmp)是利用增加存活时间(TTL)值来实现功能的,每当一个icmp包经过一个路由器时,其存活时间值就会减1,当其存活时间为0时,路由器便会取消包发送,并发送一个ICMP TTL封包给原封包发出者。主叫方首先发出TTL = 1 的数据包,第一个路由器将 TTL 减1得0后就不再继续转发此数据包,而是返回一个ICMP超时报文,主叫方从超时报文中即可提取出数据包所经过的第一个路由器的地址。然后又发出一个TTL=2的ICMP数据包,可获得第二个路由器的地址,依次增加TTL便获取了沿途所有路由器位地址。 然后可以看到整条链路,死了话顺便还能看看死在哪了。

image.png

那么前面我们看到 “*” 都是节点不可达的点,这是因为有些节点没有把icmp协议放开或者别的原因,导致的超时,但是这不影响我们继续追踪,只要我们能拿到ip地址并且是我们的目标地址,那么追踪就结束了。当然也存在特殊情况,这个时候我们可以设置最多跳转的次数和超时次数(比如最多跳5次,都超时我也当结束了)。

细节:

这里的基本信息我写了个基础类

image.png

很多同学对当前网络类型一直很头疼,官方提供的Reachability虽然方便,但是较简单,2/3/4G切换的时候,Reachability虽然检测到了网络变化,但是类型还是蜂窝移动,不能给出具体的网络类型.我这里通过获取状态栏上的属性来判断。包括wifi强度也可以用相同方法。最后的示例图:

image.png

样例代码:https://github.com/Wbqqqq/NetWorkDiagnose

参考:

在IOS平台实现Ping 和 traceroute

iOS完美的网络状态判断工具

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,470评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,393评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,577评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,176评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,189评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,155评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,041评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,903评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,319评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,539评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,703评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,417评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,013评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,664评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,818评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,711评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,601评论 2 353