请选择 进入手机版 | 继续访问电脑版

默认
打赏 发表评论 2
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
移动端IM开发者必读(一):通俗易懂,理解移动网络的“弱”和“慢”
微信扫一扫关注!

本系列文章引用了腾讯技术专家樊华恒《海量之道系列文章之弱联网优化》的部分章节,感谢原作者。


1、前言


随着移动互联网的高速发展,移动端IM以移动网络作为物理通信载体早已深入人心,这其中的成功者就包括微信、手机QQ、支付宝(从即时通讯产品的角度来看,支付宝已经算的上是半个IM了)等等,也为移动端即时通讯开发者带来了各种可以参考的标杆功能和理念:语音对讲、具有移动端体验特性的图片消息、全时在线的概念、真正突破物理体验的实时通知等。

上述IM产品、功能和概念,在开发者间讨论时,无一例外都会被打上“移动端”这个特性,从网络通信的角度来说,这个特性的本质可以认为就是移动网络的特性。

以文件发送为例,传统的PC端IM(可以简单地理解为传统有线网络上的IM)可以直接实时点对点发送(理论上无需经过服务器中转)。

但在移动端IM里我们并不能这么干,原因是:

  • 1)3G/4G/5G网络下P2P成功率并没有那么高(因为是对称型NAT,详见《通俗易懂:快速理解P2P技术中的NAT穿透原理》);
  • 2)移动网络的信号跳变、抖动很难预测(甚至在你转身的瞬间,信号可能会立马由强变弱);
  • 3)移动网络的延迟、丢包、重传等导致通信体验很差(就像从国内访问国外的网站那种“慢”,体验上是相似的);
  • 4)延迟、丢包、重传带来的另一个后果就是电量消耗、流量消耗过大,这些都是不可接受的;
  • 5)智能手机(主要是Android、iOS)的系统省电策略,导致网络可能被阻断,甚至进程被杀死,功能没办法在后台继续工作。

所以,正是移动网络的这些特性,使得原本在传统PC端再普通不过的功能(比如上面说的文件发送),在移动端IM中却不得不另想办法:以文件发送为例——主流的移动端IM现在都是使用服务器中转来搞定的。使用类似技术实现的功能,还有移动端IM里语音短消息的AMR音频小文件、图片消息的图片文件等。

那么回归到本文的正题:移动网络为什么会存在“弱”和“慢”这样的特性?

这个问题网络工程师来回答最为合适,对但于应用层的程序员来说,有关移动网络的理论太生涩枯燥,太难理解了。而对于网络工程师来说,他们也不理解“你们这些程序员到底在纠结移动网络的什么鬼?”。

就像黄品源的那首《那么爱你为什么》的歌曲里面莫文蔚的一段念白:“我讲又讲不清,你听又听不懂......”。这大概是应用层程序员很难能找到通俗易懂的有关移动网络资料的原因吧。

所以本文的目的,就是希望以通俗易懂的语言,帮助移动端IM开发者更好地理解移动网络的各种特性,使得开发出的功能能更好地适应移动网络,给用户带来更好的使用体验。

另外,《现代移动端网络短连接的优化手段总结:请求速度、弱网适应、安全保障》这篇文章也提到了本文所阐述的相关内容,强烈建议阅读。

2、系列文章


本文是《移动端IM开发者必读》系列文章的第1篇:


如果您是IM开发初学者,强烈建议首先阅读《新手入门一篇就够:从零开发移动端IM》。

3、相关文章


1)关于网络通信的基础文章:


2)涉及移动端网络特性的文章:


3)如果您觉得有些网络问题,已无法从应用层找到答案,那么以下这个系列是你的“菜”:
    以下文章为IM/推送技术开发的边界知识,但有助于你从物理层理解各种网络问题。如无兴趣,可忽略之!

4、正文引言


移动互联网颠覆着我们的生活方式,这个每时每刻伴随着我们的网络到底有哪些特点,又是如何影响我们接入信息世界的体验呢。

以下场景如似曾相识,敬请对号入座:

1)上班路上收到朋友分享的一张美女图片,缩略图目测衣服用料相当节俭,立马兴奋点开欲详细钻研,却发现怎么脱也脱不下来,不对,是“拖”不是“脱”,仰望苍天,欲哭无泪。

2)进电梯前收到女友一条消息:“你到底爱不爱我!”,当然马上回复“必须的必!”,电梯门关闭了,北风那个吹,菊花那个转,等到春暖梯开,满屏都是女友的问候“在吗!”、“这都要想那么久!”、“跟哪个MM聊天呢!”、“我生气了!”、“你是好人,再见!”,看着自己的回复刚刚发送成功,停在最后一行,整个互动信息一气呵成,都是眼泪。

3)和朋友聚餐,菜端上先拍照分享,再大快朵颐,明明坐在对面,偏偏还得用手机聊天,世界最远的距离,莫过于我们坐在一起,却只能用手指切磋。

有因有果,有道有术,不入虎穴焉得虎子,不扯了,进入正题。

5、移动网络的特点


理论上说,我们看到移动网络有如下三个典型特点:

  • 1)移动状态网络信号不稳定,高时延、易抖动丢包、通道狭窄;
  • 2)移动状态网络接入类型和接入点变化频繁;
  • 3)移动状态用户使用高频化、碎片化、非WIFI流量敏感。

为什么?

参考【图一 无线网络链路示意】,我们尝试从物理上追根溯源:
1.jpg
▲ 图一:无线网络链路示意

根据“图一:无线网络链路示意”所示内容,我们可以得到以下信息。

第一、直观印象是通讯链路长而复杂:从(移动)终端设备到应用服务器之间,相较有线互联网,要多经过基站、核心网、WAP网关(好消息是WAP网关正在被依法取缔)等环节,这就像送快递,中间环节越多就越慢,每个中转站的服务质量和服务效率不一,每次传递都要重新交接入库和分派调度,一不小心还能把包裹给弄丢了。

第二、这是个资源受限网络:移动设备接入基站空中信道数量非常有限,信道调度更是相当复杂,如何复杂就不展开了,莫文蔚那首歌词用在这里正合适:“我讲又讲不清,你听又听不懂......”,最最重要的是分配的业务信道单元如果1秒钟不传数据就会立马被释放回收,六亲不认童叟无欺。

第三、这个链条前端(无线端)是高时延(除某些WIFI场景外)、低带宽(除某些WIFI场景外)、易抖动的网络:无线各种制式网络带宽上限都比较低而传输时延比较大(参见【表一 运营商移动信号制式带宽标准】),并且,没事就能丢个包裹玩玩,最最重要的是,距离基站的远近,把玩手机的角度、地下室的深度等等都能影响无线信号的质量,让包裹在空中飞一会,再飞一会......。这些因素也造成了移动互联网网络质量稳定性差、接入变化频繁,与有线互联网对比更是天上人间的差别,从【图二 有线互联网和移动互联网网络质量差异】中可以有更直观的感受。

2.jpg
▲ 图二:有线互联网和移动互联网网络质量差异

【表一 运营商移动信号制式带宽标准】数据来自互联网各种百科,定性不定量,仅供参考;
未标题-1.gif
【表一-运营商移动信号制式带宽标准】-清晰图.rar (252.64 KB , 下载次数: 151 )

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

上一篇:报错code返回3下一篇:移动端IM开发者必读(二):史上最全移动弱网络优化方法总结

本帖已收录至以下技术专辑

推荐方案
评论 2
我是我迄今为止读到的最通俗的了,多谢群主整理
谢谢分享
签名: 心情好
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部