现代通信新技术期末论文《微信对网络所产生影响的分析》

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

后的认证结果,鉴权完毕后连接断开。一次鉴权过程的数据流量在 1K 字节左右。 在鉴权成功后,微信会向业务服务器重新发起一个 TCP 连接,该连接会一直保持,并
采用心跳包来定时检测连接的有效性(下文中将此连接称为业务链路),微信客户端主动发送 的消息通过此连接传输给服务器,服务器通知客户端的消息也通过此连接发送到客户端。
4.2.2 传统电信业务的信令流量
抓取一下传统的电信业务对应的信令流程,以便和微信引发的信令进行对比,发送一 条短信的信令流程如图 2 所示,一次语音被叫的信令流程如图 3 所示。
图2
图3 可以看到,发送一条短信会引发 30 条信令,文中未列出接收一条短信的信令流程,实 际测试发现接收短信和发送短信产生的信令数量类似。 在图 3 所示的一次语音被叫信令流程中,信令总数为 40 多条。其中编号 92 的 RANAP_PAGING 表示寻呼信令,编号 93 到 97 的信令为 RRC 连接的建立,编号 118 的信
来自百度文库
令为被叫振铃,编号 120 的信令为被叫摘机,编号 122 的信令为双方开始通话,编号 124 的信令为被叫挂机,编号 132 到编号 135 表示 RRC 连接的释放。
一次语音主叫产生的信令和语音被叫类似。
4.2.3 总结
从以上的信令跟踪分析可以发现,微信一次心跳产生的信令,基本等同于发送或接收 一条短信的信令,稍少于呼出或接听一个电话的信令。由第 2 节对微信 IP 层心跳数据包的 分析可知,在一个月中,微信用户即使不进行任何操作,也会发送 22 320 个心跳包,相当 于消耗了发送 22 320 条短信的信令处理能力(或者拨打 1 万多个电话的信令处理能力),但是 只产生 1.83M 字节的流量。考虑到微信用户正常使用的情况下,多少会进行一些其他操作, 使其带来的实际流量消耗达到几十或者上百 M 字节,但是其对信令资源的巨大消耗是不争 的事实,所以中国移动声称的“微信占用了 60%的信令资源,却只产生了 10%的流量”是 有事实依据的。
(2)3G 网络迅速发展,给微信使用者提供便利; (3)功能齐全,便捷交友; (4)腾讯公司众多的用户基础。
3 微信所引发的问题
在微信迅速发展的同时,它也给各大运营商带来一些麻烦,除了直观上的减少客户的 短信、电话使用量之外;另一方面,微信的“永远在线”状态会不断向基站发送信令,严重
占用运营商的信令通道形成“信令风暴”,导致网络中的主要用来控制语音信号的信令资源 已经不够使用,还影响了语音的通话质量;运营商建立和维护基站时都花费了大笔资金但微 信不花一分一毫就挤占了大部分的网络资源。即便如此,微信还是是站在法律边缘,它没有 越界抢占实时双向语音通信的市场,所以运营商还是没有立场控诉微信业务,对于此前民间 流传的微信收费也只是运营商对腾讯公司是否收费,有专家给出了这样的建议:运营商建立 微信专区搭建 VPV 专网,建设费用由腾讯支付,至于微信向不向用户收费,由腾讯自己来 定。
微信在工作过程中,除了业务链接的长连接会一直保持以便用于通信功能外,还额外 使用一些 TCP 短连接来进行临时性的操作,如好友搜索、头像下载、漂流瓶等。总体来看, 在活动状态下(即用户打开微信的主界面进行各种操作的状态),微信的数据包收发和其他的 互联网应用没有多大区别。
4.1.2 微信的心跳和通知机制
《现代通信新技术》 微信对网络所产生影响的分析
学 院: 专 业: 班 级: 姓 名: 学 号:
2014 年 5 月 27 日
1 引言
2011 年 1 月 21 日,腾讯公司推出了通过移动互联网快速发送语音短信、视频、图片和 文字,支持多人群聊的手机聊天软件产品“微信”。微信借助用户通信录和用户位置信息, 与二维码业务相结合,将成为融合通信、娱乐、生活、商务需求的新型信息服务和传播平台。 微信的出现使得人们之间的表达形式和交互价值大大超越了传统的通信方式,其免费的商业 模式具有强大的生命力,对现有信息通信产业格局产生了重大的影响。
根据 TCP 协议的特征可以知道,在断开一个 TCP 连接时,需要进行四次握手,首先由 主动断开的一方发送一个 FIN 消息给另一方,另一方回复 ACK 消息,然后由另一方发起同 样 FIN/ACK 交互流程后,整个连接断开。TCP 连接在没有数据收发的情况下,不会有任何 的数据包交互,当连接异常断线时,只有主动发数据包的一方可以检测到连接断线,因为这 时可以发现对端无应答;等待接收的一方是无法检测到的,因为主机宕机、网线断开等异常 情况将导致等待方永远不会接收到 FIN 信息。检测 TCP 长连接有效性的唯一方法是由一方 定时发送一个数据包(俗称心跳包),如果连接异常断线,发送方在发送的时候即可检测到, 而另一方则设置一个网络空闲计时器,当超过约定时间未收到心跳包,则认为连接已异常断 开。
经过分析发现,在 iOS 系统下微信对网络的影响并不大,微信在刚开始运行或者刚从
后台切换到前台时,都会以一个新的 Session 的方式重新发起登录,登录成功后再创建一个 TCP 长连接作为业务链接,该连接以 2 分钟的频次发送长度为 86 字节的心跳包。当微信被 切入后台后,由于 iOS 系统不允许程序在后台运行,业务链接断开,微信转而采用 iOS 的 PUSH 机制来通知客户端有到达的信息。iOS 的 PUSH 连接由操作系统维护,心跳周期为 10 分钟左右,整个系统的所有应用共用一个 PUSH 连接,所以在 iOS 系统下,微信的业务特 征和大部分互联网应用区别不大。
4 对微信给网络所造成影响的技术性分析
4.1 微信 IP 层流量分析
微信属于 C/S 架构的软件系统,为分析微信的流量分布,需要对微信的通信过程进行 以下分析。1)通信协议:是使用 TCP 方式进行通信,还是使用 UDP 方式。2)连接方式:如 果使用 TCP 方式,是长连接还是短连接。3)心跳方式:如果使用长连接,那么必然需要进 行连接有效性检测,使用的心跳包的频次是多少。4)通知机制:在微信切入后台后,服务器 端以何种方式通知客户端。5)版本差异:iOS 版本和 Android 版本上的处理方式是否有所不 同。实验分别在使用 iOS 6.x 及 Android 4.x 系统的终端上进行,使用抓包软件对微信产生的 IP 流量进行抓取分析。
业务链路连接成功后,微信客户端首先通过此连接查询是否有新的更新内容(包括新消 息、新好友添加记录、新朋友圈信息等),之后进入主界面等待用户进行下一步操作。整个 登录过程以及更新操作产生的流量大约为 3K 字节。登录后在微信客户端的各个页签之间切 换不产生任何数据交互。
后续所有涉及到通信的功能全部在业务链路上进行数据交互,如文字信息的收发、图 片的收发、语音信息的收发等。
心跳周期(即网络空闲定时器的超时时间)过长,则服务器端要等比较长的时间才能检测 到连接断线;心跳周期过短时虽然能够很快检测到连接断线,但是消耗在心跳包上的网络资 源会过大。业界对微信的最大诟病正是在于微信在非活动状态下的过于频繁的心跳机制。
由于操作系统的不同特征,微信在 iOS 下以及 Android 操作系统下的心跳机制有着显著 的区别。根据市场研究机构 Strategy Analytics 发布的数据表明,2012 年第 4 季度,在中国 大陆市场出货的智能手机当中,98%采用 Android 和 iOS 两大操作平台。其中,Android 智 能手机占 86%,iOS 智能手机只占 12%。这就意味着,要分析微信对网络的影响,主要分析 微信在 Android 系统上的工作特征即可。
4.1.1 微信的通信过程
经过分析发现,微信的通信协议采用基于 TCP 的 HTTP 协议,在连接方式上采用长连 接和短连接结合的方式。
微信在登录的时候,采用 TCP 短连接的方式进行认证。微信客户端首先发起一个 TCP 连接到鉴权服务器,将加密后的用户名及密码用 HTTP 协议提交给服务器,服务器返回加密
1)From-UE/RRC_RRC_CONNECT_REQ,终端发送 RRC Connect Request 消息。 2)To-NodeB/NBAP_RL_SETUP_REQ,SRNC 进行资源分配后,向 Node B 发送 Radio LinkSetup Request 消息,要求 NodeB 分配 RRC 连接所需的无线链路资源。 3)From-NodeB/NBAP_RL_SETUP_RSP , Node B 分 配 资 源 后 , 应 答 Radio Link SetupResponse 消息。 4)SRNC 发起 Iub 接口用户面传输承载的建立,并完成 RNC 与 NodeB 之间的同步。 5)ToUE/RRC_RRC_CONN_SETUP,SRNC 向终端发送 RRC ConnectionSetup 消息。 6)From-UE / RRC_RRC_CONNECT_SETUP_CMP,终端回复 RRC Connection Setup Complete 消息。 后续的编号 72203 到 72220 的信令为 IP 数据包传输过程中的信令,大部分是终端和核 心网之间的直传消息。在此期间,心跳包的 IP 数据从终端通过无线网络传输到了服务器。 需要重点关注的信令在于编号 72221,发自终端的 RRC_SIG_CONNECT_REL_IND 信 令,该信令在 IP 包传送完毕 7 秒钟后出现,表示终端主动要求释放信令连接。后续的 8 条 信令是标准的 RRC 释放流程,表示无线资源被释放的过程。终端主动要求释放连接的原因 是当前大部分智能手机为了省电,每次检测到网络空闲后,2~10 秒内会释放连接。 当 2 分钟后终端再次发送心跳包的时候,上述信令流程将重复一遍。这里需要注意的 是,RRC 连接以及无线资源的释放,并不意味着 TCP 连接的断线,无线资源可以在 TCP 层 需要收发数据包时才临时重新分配,虽然重新分配意味着上述 RRC 连接建立和释放的信令 开销,但是对于无线网络来说,无实际数据流量时继续占用无线资源的成本更加昂贵。 在当前的网络侧配置中,即使终端在 2~10 秒内不主动释放连接,网络侧也会在网络空 闲 15 秒后释放无线资源。所以微信 2 分钟的心跳周期,每次心跳包必然会引发一次完整的 无线资源申请和释放的信令开销,根据统计,每次流程中需要引发 30 多条信令,其中 RNC 需处理 15 条信令消息。
4.2 微信信令流量分析 4.2.1 微信的信令流量
通过在无线网管系统中挂表跟踪发现,微信每发送一个心跳包时在网络侧抓取的信令 如图 1 所示。
图1
图中体现了微信一次心跳包引发的用于无线资源管理的信令流程,其中,从编号 72197 到 72201 的 5 条信令为 RRC 连接的建立信令。终端处于空闲模式时,当终端请求建立信令 连接时,将发起 RRC 连接建立过程,其步骤如下:
2 微信为何能迅速发展?
微信的出现是打了一个实时双向语音通信和即时单向语音通信的擦边球, 它选择了一 个正确的时机以一种相对低调的态度出现在人们面前。 在数年前相对激进的 Skype 吸引了 传统电信运营商的大部分火力之后, 微信的推出显得水到渠成:
(1)廉价费用给微信赚足用户。千条短信的输送成本仅 1 元,事实上,微信业务并不收 费,但使用微信业务发送消息却需要开通移动数据业务,它传送信息仅仅需要少量移动数据 流量,相对于运营商提供的传统通信业务短信功能 1 毛钱 1 条、彩信功能 3 毛 1 条来说,使 用微信是个性价比非常高的选择;
而在 Android 系统下,微信的业务特征则有显著的区别,微信自从登录成功后,创建的 业务链接每隔 2 分钟即会向服务器发送一个 82 字节的心跳包。由于 Android 系统允许程序 在后台运行,当微信被切入后台后,微信的业务链接并没有断开,将继续以此频次发送心跳 包。也就是说,Android 版本的微信只要运行并登录成功后,将 24 小时不间断地发送心跳 包,这样,即使对微信不进行任何操作,微信每天将发送 24x30=720 个数据包,数据量为 24x30x82=59K 字节,按月计算折合每月 22 320 个数据包或 1.83M 字节数据。
相关文档
最新文档