弱网络下通讯研究

卫衣 / 双肩包 / T 恤/羽绒服等任选,下单送 CSDN 年卡 程序员周边任选一款实物,直接赠送 CSDN 会员年卡+ Coding Plan,写代码学习装备一起拿下 立即抢购

导读:本文介绍了常见的移动网络以及弱网络出现的场景,然后针对即时通讯APP的网络通讯方案进行了解,在此基础上,对互联网APP网络通讯的优化方案给出一定的建议。

1    移动网络

1.1 手机网络

运营商

手机网络

含义

理论峰值

移动

G

GSM

114Kbps

E

EDGE

384Kbps

T/H

TD-SCDMA

R4, 378.2Kbps

4G

TD-LTE

80M~1Gbps

联通

G

GSM

114Kbps

E

EDGE

384Kbps

3G/H

HSDPA, 3~3.5G

7.2Mbps

H+

HSDPA, 3.75G

42Mbps

电信

1X

CDMA 1X

144Kbps

3G

CDMA2000(EVDO.A),

290Kbps

1.2 无线网络

协议标准

理论峰值

IEEE802.11b

11Mbps

IEEE802.11a

54Mbps

IEEE802.11g

54M~108Mbps

IEEE802.11ac

1Gbps

1.3 网络切换

当手机信号不稳定时,就会在几个频段中进行切换,来保证通话和网络,如联通手机会出现无网络/G/E/3G/H/H+。除了频道切换,移动设备还会从固定网络的一个接入点转换到另外一个接入点。在蜂窝电话和移动网络中,这样的连接点称为基站(BS),在无线LAN(WLAN)中,将它们称为接入点(AP)。移动网络是一种混合网络,它将涉及到移动设备的链接从一个BS/AP转换到领一个BS/AP,在BS和AP之间转换或者相反。在每个切换过程中,需要考虑话音业务与数据业务的无损和时延。

2    弱网络场景

因用户在移动,基站信号时强时弱,手机网络频段不停切换,在即时消息通讯建立、传输和关闭等三个阶段,网络不停切换(如联通用户会在No service/G/E/3G/H+之间切换)。

弱网络通讯的困难点:

1、文字、图片、音频和视频传输过程中,终端设备网络会切换,数据传输需要根据网络协议进行适应性转变。

2、移动网络存在线和离线频繁转换,连接不稳定,网络高延迟,资费敏感

3    即时通讯APP网络通讯

主流即时通讯APP常用协议有SIP与XMPP,两者比较如下:

基础协议

SIP

XMPP

数据包大小

较大

较小

延迟

一般

较小

成熟度

较为成熟

新兴技术

功能

支持各种即时消息通讯

支持各种即时消息通讯

可扩展性

一般

很强

主流厂家支持

微软,IBM

SUN,ORACLE,GOOGLE

微信、陌陌等软件的通讯协议均在XMPP协议的基础上进行改进而来。

3.1 XMPP协议概览

l   概述

XMPP:Extensible Messaging and PresenceProtocol

可扩展:XML;

即时通讯:Jabber

开放的:opensystem

安全:SASL,TLS

标准:IETF,RFC3920,RFC3921 (RFC6120,RFC6121)

l   架构

体系架构:XMPP server其内核是一个XMPP路由器,完成基本组件间的数据包交换和路由。其包含的功能有:

1.会话管理器:负责客户端会话认证,在线状态,用户联系表等;

2.数据存储器(XDB):连接数据库系统,保持用户信息、通信日志等;

3.连接器管理器:管理与客户端之间的连接;

4.服务器连接器:管理xmpp服务器之间的连接;

5.传输器:建立xmpp服务器与非xmpp服务器通信;

工作原理:所有从一个client到另一个client的jabber消息和数据都要通过xmpp server。

1.client连接到server;

2.server利用本地目录系统的证书对其认证;

3.client制定目标地址,让server告知目标状态;

4.server查找,连接并进行相互认证;

5.client间进行交互;

l   协议

XMPP地址:JID=[ node”@” ] domain [ “/” resource]

其中node代表用户名,domain代表服务器域名,resource属于用户的位置或设备。一个用户可以同时以多种资源与同一个XMPP服务器连接。

XMPP消息格式:<stream><presence/><message/><iq/></stream>

  Presence:确定用户状态

  Message:两个用户之间发送消息

  Iq:管理XMPP服务器上两个用户的转换,允许他们通过相应的xml格式的查询和响应

  示例:

<stram>

   <presence from=cyber1@jabber.org/contact to=cyber2@jabber.org/contact>

      <status>online</status>

   </prensence>

   <message from=cyber1@jabber.org/contact to=cyber2@jabber.org/contact type="chat">

      <body>Hello</body>

    </message>

    <iq from=cyber1@jabber.org/contact id=“id1” type=“result”>

    </iq>

</stream>

l   安全

XMPP采用SASL作为身份认证协议,采用TLS的“START-TLS”扩展来为通信双方提供加密性和数据完整性服务

 

3.2 XMPP的应用

XMPP为网络的消息传递提供了一个通用框架。

在线游戏中大量使用了XMPP。XMPP为在线游戏提供了一组关键的功能,包括验证、到场信息、聊天以及可扩展的游戏状态信息的实时交流。

云计算中也大量使了XMPP。云计算和存储依赖不同层次和形式的通讯,XMPP应用在不同的层次,作为理想的中间件协议。

3.3 XMPP的优劣

优点:

开放,标准,证实可用;分散式,安全,可扩展,弹性佳,具有多样性。

缺点:

数据量大,负载重;不支持二进制数据。

4    互联网APP网络通讯

参考即时通讯APP在网络架构一块的应用,互联网APP有不少可以借鉴的地方,来提升稳定、安全和可靠。

4.1 心跳机制

互联网APP的心跳机制一般是由APP自身包办,缺少XMPP的协议支持。

互联网APP的心跳机制的特点:

1、心跳信息是单方向的,只有由终端发送到服务器;

2、心跳信息的周期比较长,一般由30s(QQ)~300s(微信)~1680s(Google原生应用)

3、心跳信息除宣告在线外,还需要实时获取终端即时地址,方便服务器寻址

4、心跳信息有副作用,让终端更耗电,耗流量,资费敏感,容易引起信令风暴或者网络堵塞

   在心跳机制方面的优化建议:

   心跳频率的智能设置。合理的心跳频率,既能让电耗和流量损耗能被终端接受,有方便服务端监管业务。可以针对网络特点,区分出移动网络、WLAN网络,甚至进一步细分,在不同的网络下智能调整心跳包的发送频率。在移动网络接入时,降低心跳包的发送频率,这样虽然服务器推送的信息会有一些延迟,但是终端更省电,移动网络更稳健。在WLAN或高速网络接入时,提高心跳包的发送频率,增强实时交互,提升用户体验。

  

   公用的位置寄存器。心跳机制是不可避免的,很多APP作为一个壳,里面包含的应用很多,应该建立或直接使用公用的位置寄存器,使用统一的心跳即可。

4.2 数据通信

与话音业务部一样,互联网APP一般是使用移动设备的数据业务。话音网络采用电路交换,数据网络采用分组交换,后者的时延要低。数据网络的切换是依赖移动运营商的算法,我们能优化的方面有:

网络适配。不同的网络使用不同的数据包,比如WLAN可以用高清的图片,G/E网络下用普通的图片,这些原则已经被很多APP采用。此外,切换的时候要考虑无损和缓存。

交互报文的合理设计。针对交互报文进行合理设计,报文流量要小,交互简单,以便于快速收发。设计考虑断点、容错、续传和重发。

压缩再压缩。选用优秀的压缩算法,对大数据进行压缩,轻量是一贯的原则,不同大小的报文采用不同的压缩方案传递。

4.3 性能焦点

性能的表现是建立在以下几个功能上:开机时间、页面loading的状态、切换页面动画的流畅度、误差和等待时间。

从这几个功能上重点优化,除了上述网络和通讯原因,影响性能的因素还有以下几个方面:

即时通讯开发移动端弱网络优化方法总结 本篇的目的,就是希望以通俗易懂的语言,帮助移动端IM开发者更好地针对性优化移动网络的各种特性,使得开发出的功能给用户带来更好的使用体验。本文乃全网同类文章中,唯一内容最全、“粪”量最重者,请做好心理准备耐心读下去,不要辜负作者已打上石膏的双手和用废的键盘。 优化方法一:“快链路”我们需要有一条(相对)快速、(相对)顺畅、(相对)稳定的网络通道承载业务数据的传输,这条路的最好是传输快、不拥堵、带宽大、收费少。生活中做个类比,我们计划驱车从深圳到广州,如果想当然走广深高速十之八九要杯具,首先这个高速略显破败更像 阅读详情

相关推荐

APP网络测试要点和网模拟

当前APP网络环境比较复杂,网络制式有2G、3G、4G网络,还有越来越多的公共Wi-Fi。不同的网络环境和网络制式的差异,都会对用户使用app造成一定影响。另外,当前app使用场景多变,如进地铁、上公交、进电梯等,使得网测试显得尤为重要。如果app没有对各种网络异常进行兼容处理,那么用户可能在日常生活中遇到APP闪退、ANR、数据丢失等问题。因此,app网络测试,特别是网测试尤为重要...

LJLLJL20020628的博客 4407

网下的极限实时视频通信

一、网下极限视频通信是什么? 所谓的弱网络环境就是网络不是很好,比如无线 wifi、跨多层网络路由、或者网路负载过大等等情况,这样数据在传输中会发生丢失的情况。 通常意义上,当我们出现网络有拥塞之后,之前会消耗比较长的时间在这个网络里面,通过一个前向校验码 fec,或者是我们通过 arq ,目前还有无数的研究者在做这样 hybrid arq 加上 fec 。但是从视频信号的角度来看的话,需要寻求另外一种方法。就是在你的网络时差的时候,比如说我们所说的入网环境在 50k 以下 5kbps 以下甚至更低,那.

声网的博客 952

网测试:使用netem模拟网络延迟、丢包、损坏、重复、和乱序等网络问题

NetEm 是Linux的TC(traffic control)下的那个增强工具,使用这个工具可以在指定的网卡的发送方向上,注入网络延迟、丢包、重复、损坏和乱序等,用于在性能良好的局域网中,模拟出广域网中复杂的网络问题。值得注意的是NetEm的规则是在指定网卡上生效的,所以所有从指定网卡发出的报文都会受到NetEm指定规则的影响。NetEm借助于tc的qdisc框架,配置到网卡上

meihualing的专栏 9748

移动端IM开发者必读(一):通俗易懂,理解移动网络的“”和“慢”

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

netease_im的博客 490

抓包工具 Fiddler 使用:弱网络环境模拟限速测试流程

一:为什么要做弱网络测试?   实际的客户现场可能网络不稳定或者网速低,恶劣的网络环境会导致出现一些bug,影响用户体验甚至某些服务不可用。而公司内部的研发环境网络通常比较顺畅,难以复现这种bug。要解决这种问题,就需要制造弱网络的环境进行测试、复现并修复问题。   二:如何模拟恶劣网络环境?   本文仅以fiddler为例,其他的做个了解,不具体研究。   三:Fiddler怎样模拟网?   Fiddler 是一个 HTTP 调试代理,它能够记录所有你电脑和互联网之间的 HTTP 通讯,Fid

雪锋的笔记 1644

抓包工具 Fiddler 使用:弱网络环境模拟限速测试流程(转载)

转自:http://www.51testing.com/html/80/n-3726980.html 抓包工具 Fiddler 使用:弱网络环境模拟限速测试流程 发表于:2018-6-06 11:46 作者:西边人 来源:51Testing软件测试网采编 字体:大中小|上一篇|下一篇|我要投稿|推荐标签:软件测试工具Fiddl...

weixin_30539835的博客 161

即时通讯架构研究

即时通讯系统一般分为客户端与服务端,客户端较轻,关键逻辑在服务端,一般分为三到四层,采用B/S和C/S混合架构。 连接层:Connector连接集群。连接层需要尽可能简单,采用同步/异步多种方案,来支撑高并发与高在线。连接层需要承担的总连数可能超过1000万。 逻辑层:关键逻辑与业务逻辑、应用逻辑分离,将即时通讯的功能模块化颗粒化,抽象基础逻辑组件,在基础组件基础上构建业务逻辑子群。 数据层:根据逻辑层的模块化,设计对应的服务化数据集群,在逻辑和物理上对数据进行隔离存放。 监控层:将监控嵌入基础框架,多层进

面对现实,忠于梦想 1万+

用JWT技术解决IM系统Socket长连接的身份认证痛点

1、引言 随着瓜子二手车相关业务的发展,公司有多个业务线都接入了IM系统,IM系统中的Socket长连接的安全问题变得越来越重要。本次分享正是基于此次解决Socket长连接身份安全认证的实践总结而来,方案可能并不完美,但愿能起到抛砖引玉的作用,希望能给您的IM系统开发带来启发。 学习交流: - 即时通讯/推送技术开发交流4群:101279154[推荐] - 移动端IM开发入门文章:《新...

weixin_30273501的博客 148

即时通讯开发_开发直播APP软件一定要了解的H.264编码,即时通讯中的战斗机

开发直播APP软件一定会涉及即时通讯即时通讯系统在直播系统中的主要作用是实现观众与主播、观众与观众之间的文字、音频、视频互动,现在比较火的主播连麦PK等功能的背后都显现着即时通讯的影子,而在即时通讯中,我们一定要提到的是H.264编码格式。一、 开发直播APP软件一定要了解的H.264编码是什么H.264是一种高性能的视频编解码技术,是国际两大制定视频编解码技术的组织共同研究出的一种编码方式,它...

weixin_39651816的博客 117

如约而至:微信自用的移动端IM网络层跨平台组件库Mars已正式开源

为什么80%的码农都做不了架构师?>>> ...

weixin_33750452的博客 278

《近匠》融云,自主研发真正不丢消息的IM云服务

摘要:《近匠》第90期,融云即时通讯云源自飞信团队,拥有8年IM技术积累,却推倒重来,从第零行开始写代码,自己做一套全新的通讯协议和服务端架构,不丢消息、快速迭代反馈,并将逐步落实SDK开源计划。 移动互联网时代的即时通讯技术已与互联网时代完全不同,弱网络、丢消息等问题天然存在。融云即时通讯云源自飞信团队,核心创始成员拥有8年IM技术积累,却推倒重来,从第零行开始写代码,自己做一套全新的通讯

一只苟延残喘的卑微蝼蚁 1646

微信自用的跨平台移动端IM网络层封装库Mars详解,自己可以写IM app了

1、前言 关于微信内部正在使用的网络层封装库Mars(参见《微信Mars:微信内部正在使用的网络层封装库,即将开源》),于2016年12月28日正式公开源码(源码地址:https://github.com/Tencent/mars,也可从本文文末的附件下载之,Android版演示程序可以从文末的附件中下载)。 之前无论是微信团队还是手机QQ团队,都以腾讯公司的名义在Github开源

旺仔的专栏 2670

开发直播APP软件一定要了解的H.264编码,即时通讯中的战斗机

开发直播APP软件一定会涉及即时通讯即时通讯系统在直播系统中的主要作用是实现观众与主播、观众与观众之间的文字、音频、视频互动,现在比较火的主播连麦PK等功能的背后都显现着即时通讯的影子,而在即时通讯中,我们一定要提到的是H.264编码格式。 一、 开发直播APP软件一定要了解的H.264编码是什么 H.264是一种高性能的视频编解码技术,是国际两大制定...

weixin_33898233的博客 240

开发直播APP软件一定要了解的H.264编码,即时通讯中的战斗机 ...

开发直播APP软件一定会涉及即时通讯即时通讯系统在直播系统中的主要作用是实现观众与主播、观众与观众之间的文字、音频、视频互动,现在比较火的主播连麦PK等功能的背后都显现着即时通讯的影子,而在即时通讯中,我们一定要提到的是H.264编码格式。 一、 开发直播APP软件一定要了解的H.264编码是什么 H.264是一种高性能的视频编解码技术,是国际两大制定...

weixin_33963189的博客 264

【转】如约而至:微信自用的移动端IM网络层跨平台组件库Mars已正式开源

作者:男人链接:https://zhuanlan.zhihu.com/p/24614843来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。1、前言关于微信内部正在使用的网络层封装库Mars开源的消息,1个多月前就已满天飞(参见《微信Mars:微信内部正在使用的网络层封装库,即将开源》),不过微信团队没有失约,微信Mars 于2016年12月28日正式公开源码(源码地址

字节卷动 3315
上一篇: 商用公有云安全调研
下一篇: CAS 4.0 配置开发手册
ahpo
博客等级 码龄24年 76粉丝 211原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值