Android 弱网环境分析

在网路应用流行的今天,我们已经很难再找到哪些应用是不需要网路的了,那么网路质量的好坏极大关系的影响着一个app的体验。

弱网环境

当提到这个词的时候我们可能会疑惑?什么叫弱网环境?
现在大部分人的手机都是4G手机,当我们使用手机流量时在信号不好的地方可能会降级到3G,2G,那么这些意味着手机信号不好的时候手机会去调整到一个高延迟低带宽的网络环境。

网络环境 2.75G 3G 4G 5G
带宽(上行/下行) 484kb/384kb 2m/7m 56-128m >50m/>100m
延迟 600-700ms 150-400ms 40-50ms 10ms

可以看到不同制式的网络标准能够提供的网络环境是不一样的。
弱网环境下会有很多问题

  • 丢包率高
  • 误码率高
  • 不稳定的延迟
  • 不稳定的带宽

我们评测一个网络是否好通常通过以下几个参数去判定

  • 吞吐量:网络接口接受和传输的每秒字节数。
  • 延迟:系统调用发送/接受延迟,连接延迟,首包延迟,网络往返时间等。
  • 连接数:每秒的连接数
  • 错误:丢包计数,超时等。
分析工具

网络优化

什么事网络优化?网络优化在优化哪些内容?

  • 速度。在网络正常或者良好的时候,怎样更好地利用带宽,进一步提升网络请求速度。
  • 弱网络。移动端网络复杂多变,在出现网络连接不稳定的时候,怎样最大程度保证网络
    的连通性。
  • 安全。网络安全不容忽视,怎样有效防止被第三方劫持、窃听甚至篡改。
网络延时
  • DNS 解析。通过 DNS 服务器,拿到对应域名的 IP 地址。在这个步骤,我们比较关注 DNS 解析耗时情况、运营商 LocalDNS 的劫持、DNS 调度这些问题。
  • 创建连接。跟服务器建立连接,这里包括 TCP 三次握手、TLS 密钥协商等工作。多个 IP/ 端口该如何选择、是否要使用 HTTPS、能否可以减少甚至省下创建连接的时间,这 些问题都是我们优化的关键。
  • 发送 / 接收数据。在成功建立连接之后,就可以愉快地跟服务器交互,进行组装数据、 发送数据、接收数据、解析数据。我们关注的是,如何根据网络状况将带宽利用好,怎 么样快速地侦测到网络延时,在弱网络下如何调整包大小等问题。
  • 关闭连接。连接的关闭看起来非常简单,其实这里的水也很深。这里主要关注主动关闭 和被动关闭两种情况,一般我们都希望客户端可以主动关闭连接。

DNS解析

DNS 的解析是我们网络请求的第一项工作,默认我们使用运营商的 LocalDNS 服务。这 块耗时在 3G 网络下可能是 200~300ms,4G 网络也需要 100ms。

微信有自己部署的 NEWDNS,阿里云和腾讯云也有提供自己的 HTTPDNS 服务。对于大 网络平台来说,我们会有统一的 HTTPDNS 服务,并将它和运维系统打通。在传统的 DNS 基础上,还会增加精准的流量调度、网络拨测 / 灰度、网络容灾等功能。

dns

连接复用

tcp连接需要进行三次握手,tls连接需要进行秘钥协商然后建立连接,创建连接的代价是非常大的,可以通过复用连接来避免每次请求都进行重新建立连接。
在okhttp中当一次请求完成后,并不会立刻把连接释放,而是放到连接池中。这时如果 有另一个请求的域名和端口是一样的,就直接拿出连接池中的连接进行发送和接收数据, 少了建立连接的耗时。

这里我们利用 HTTP 协议里的 keep-alive,而 HTTP/2.0 的多路复用则可以进一步的提升 连接复用率。它复用的这条连接支持同时处理多条请求,所有请求都可以并发在这条连接 上进行。

压缩与加密

压缩

讲完连接,我们再来看看发送和接收的优化。我第一时间想到的还是减少传输的数据量, 也就是我们常说的数据压缩。首先对于 HTTP 请求来说,数据主要包括三个部分:请求 URL 请求 header 请求 body。

  • 对于 header 来说,如果使用 HTTP/2.0 连接本身的头部压缩技术,因此需要压缩的主要 是请求 URL 和请求 body。
  • 对于请求 URL 来说,一般会带很多的公共参数,这些参数大部分都是不变的。这样不变的 参数客户端只需要上传一次即可,其他请求我们可以在接入层中进行参数扩展。
  • 对于请求 body 来说,一方面是数据通信协议的选择,在网络传输中目前最流行的两种数 据序列化方式是 JSON 和 Protocol Buffers。正如我之前所说的一样,Protocol Buffers 使用起来更加复杂一些,但在数据压缩率、序列化与反序列化速度上面都有很大的优势。
    另外一方面是压缩算法的选择,通用的压缩算法主要是如 gzip,Google 的Brotli或者 Facebook 的Z-standard都是压缩率更高的算法。其中如果 Z-standard 通过业务数据样 本训练出适合的字典,是目前压缩率表现最好的算法。但是各个业务维护字典的成本比较 大,这个时候我们的大网络平台的统一接入层又可以大显神威了。
image.png

针对图片可以通过得知网络环境提供不同分辨率和质量的图片来节省网络带宽

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

推荐阅读更多精彩内容

  • 一、浮光掠影 1. HTTP 0.9只接受 GET 一种请求方法,没有在通讯中指定版本号,不支持请求头。不支持 P...
    麒麟楚庄王阅读 3,692评论 1 1
  • 一、背景 如何度量和模拟“弱网络”对移动APP的开发有着重大的意义,比如:节约测试成本、易于问题重现、加快产品上线...
    cosWriter阅读 1,840评论 0 3
  • 转载于:http://mrpeak.cn/blog/http2/ HTTP 2.0的那些事 在我们所处的互联网世界...
    柒黍阅读 2,313评论 0 8
  • 今日的下跌,就是为了明日的挑起做的深蹲,如果明天继续下跌,那就在下跌时买入! 时间差不多到了,主力在自己玩,会把自...
    那一叶秋阅读 103评论 0 2
  • 第二天了,到现在还不知写些什么,脑子退化了吗,原来的文思泉涌飞哪去了。。 边学边忘,有些焦虑,一边想努力抓些什...
    宝宝笑了阅读 368评论 4 1