码迷,mamicode.com
首页 > 其他好文 > 详细

弱网络下通讯研究

时间:2015-06-08 17:32:40      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:即时通讯   网络   移动设备   网络协议   用户体验   

导读:本文介绍了常见的移动网络以及弱网络出现的场景,然后针对即时通讯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的状态、切换页面动画的流畅度、误差和等待时间。

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

弱网络下通讯研究

标签:即时通讯   网络   移动设备   网络协议   用户体验   

原文地址:http://blog.csdn.net/ahpo/article/details/46412807

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!