移动端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开发者更好地理解移动网络的各种特性,使得开发出的功能能更好地适应移动网络,给用户带来更好的使用体验。

 

网易云信,你身边的即时通讯和音视频技术专家,了解我们,请戳网易云信官网

想要阅读更多行业洞察和技术干货,请关注网易云信博客

本文转载自52im,作者:JackJiang

你可能感兴趣的:(开发)