弱网络下通讯研究

导读:本文介绍了常见的移动网络以及弱网络出现的场景,然后针对即时通讯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 [email protected]/contact [email protected]/contact>

<status>online</status>

</prensence>

<message [email protected]/contact [email protected]/contact type="chat">

<body>Hello</body>

</message>

<iq [email protected]/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的状态、切换页面动画的流畅度、误差和等待时间。

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

时间: 2024-07-30 12:09:33

弱网络下通讯研究的相关文章

APP弱网络条件下,体验优化之道

APP弱网络条件下,体验优化之道 最近跟朋友聊天刚好聊到这一块,他们是在做电商业务,商品图片及其多,API接口请求频率也高.然而,他们在移动2/3G的网络环境下,APP经常会出现Loading很久的情况,这里我把我们所分析与使用到的网络优化方案与大家分享一下. 所谓的弱网络,也就是指在网络不好的条件下进行使用APP,如2G.3G网络,这类网络条件下,用户的网络速度基本维持在10K/S~60K/S.如此差的网络环境, 如果还希望给用户提供良好的用户体验,那么我们的APP就该想想如何优化了. 转载表

Network Emulator for Windows Toolkit(模拟弱网络环境的软件)

前言和下载地址 用户会在各种网络环境下使用我们的app,pc应用,我们决不能祈求用户的网络环境都是稳定的,因此我们需要模拟出弱网络的情况,用来测试我们的APP在弱网络环境下的表现如何. Network Emulator for Windows Toolkit(NEWT),简称NEWT.模拟移动端应用,在pc端创建wifi热点,使用方式为独占式,手机连接这个热点,既可以开始测试. 下载地址:https://blog.mrpol.nl/2010/01/14/network-emulator-tool

VirtualBox实现宿主机和虚拟机之间网络的通讯

摘要:实现宿主机和虚拟机之间网络的通讯 环境: 宿主机操作系统            WindowsXP 虚拟机软件                    VirtualBox 虚拟机操作系统             Linux 原理: host-only(主机模式) 在某些特殊的网络调试环境中,要求将真实环境和虚拟环境隔离开.这时你就可採用host-only模式. 在host-only模式中.全部的虚拟系统是能够相互通信的,但虚拟系统和真实的网络是被隔离开的. 提示:在host-only模式下

分享下今天研究的流量上限DDos攻击分析和解决方案

分享下今天研究的流量上限DDos攻击分析和解决方案 经常听到或者碰到某个网站被攻击,一般都是流量攻击.今天自己写了个程序测下相关的上限,程序只简单做了个get html操作(不包含图片等资源文件). 用一台双核CPU机器A,启100个线程,连续发送服务器B,统计出的结果是每秒钟发173个请求,机器A的发送带宽450Kbps,机器A的接收带宽2.8Mbps,机器B的发送带宽2.8Mbps,机器B的接收带宽450Kbps. 用一台双核CPU机器A,启1000个线程,连续发送服务器B,统计出的结果是每

分享下今天研究的流量上限DDos攻击分析和解决方式

分享下今天研究的流量上限DDos攻击分析和解决方式 常常听到或者碰到某个站点被攻击.一般都是流量攻击.今天自己写了个程序測下相关的上限,程序仅仅简单做了个get html操作(不包括图片等资源文件). 用一台双核CPU机器A,启100个线程,连续发送serverB.统计出的结果是每秒钟发173个请求,机器A的发送带宽450Kbps,机器A的接收带宽2.8Mbps,机器B的发送带宽2.8Mbps,机器B的接收带宽450Kbps. 用一台双核CPU机器A,启1000个线程,连续发送serverB,统

使用热点模拟弱网络环境

在测试手机app的时候,我们经常需要测试一下app在弱网络条件下是否有问题,下面一个方法是通过使用macbook 分享热点,然后通过软件限速来模拟弱网络. 1. macbook通过网线上网,然后wifi分享做热点. System Preferences -> sharing,选择“internet sharing”,“share your connection from”选择“ethernet”,“to computers using”选择“wi-fi”. 2. 如需使用密码,可在wi-fi o

fiddler扩展模拟弱网络环境设置

今天在qq群中有人问到怎么模拟app弱网络环境,我查了下资料,记得之前做测试的时候是设置fiddler断点,app请求后止于fiddler断点,app一直拿不到响应结果就应该要给出网络请求失败的提示,这种方式太麻烦,对每个接口每次请求都要独立去打个断点,其实fiddler中有个ruler菜单,里面可以扩展修改fiddler的配置,例如现在app有处理10秒接口无返回就提示网络请求失败,可以在fiddler中设置响应时间延迟模拟网络差的情况,做如下设置,那直接上图, 首先我的fiddler版本如下

iOS微信支付4G网络下无法调用的坑

<iOS微信支付4G网络下无法调用的坑> 博文链接:http://www.jianshu.com/p/749cd156d598

同网络下多台电脑互动,共享文件

两台电脑在同一网络下互传文件,可以通过以下几种方式 :1.用U盘复制.粘贴.2.有聊天软件或者电子邮件发送3.用局域网共享. 局域网共享文件的步骤:1.两台电脑都连上同一个路由器.2.右击桌面网络----属性----更改高级共享设置3.选择 公共网络---选择以下选项:启动网络发现------启动文件和打印机共享-----启用共享以便可以访问网络的用户可以读取和写入公用文件夹中的文件(可以不选)----关闭密码保护共享( 其他选项使用默认值)4.保存,并确定.5.选择需要共享的文件夹或者盘符,右