2024年3月12日发(作者:)
微信网络交互流程研究
目录
1.微信业务部署架构 ..................................................................................................................... 2
2.微信的登陆流程 ......................................................................................................................... 3
(1)域名解析过程 ................................................................................................................. 3
(2)注册、登陆、认证过程 ................................................................................................. 4
(3)业务使用过程 ................................................................................................................. 4
3.微信主要业务场景 ..................................................................................................................... 4
(1)文本聊天交互流程 ......................................................................................................... 4
(2)实时对讲的交互流程 ..................................................................................................... 5
(3)查找附近的人交互流程 ................................................................................................. 5
(4)漂流瓶功能的交互流程 ................................................................................................. 6
(5)摇一摇/附近的人功能的交互流程 ............................................................................... 7
(6)朋友圈功能的交互流程 ................................................................................................. 7
(7)游戏下载功能的交互流程 ........................................................................................... 10
(8)微信购物功能的交互流程 ........................................................................................... 11
4 微信可缓存重点域名 ................................................................................................................. 12
1.微信业务部署架构
微信自从2011年1月21日发布版本1.0,仅支持即时通讯、分享照片和更换头像,经过
将近4年的开发完善,已成为一个融合型业务,包括文本、视频、语音、游戏、支付、LBS、
电子商务、生活服务等多项应用功能。微信后台由一系列的服务器群组成,这些服务器群各
有各的功能,服务器群内的每一台服务器都可以完成同样的功能。微信服务器群组成图如下:
服务器功能
短连接服务器群 ( )
功能
用于临时获取用户信息等资源、注册登录的服务
器,也可以用于收发心跳等信息。
用于控制信令信息的收发,也可以用于心跳信息
收发。 文字消息、图片收发、摇一摇、漂流瓶等
长连接服务器器群 ( ) 过程,以及 VoIP业务的呼叫建立过程都在该长
连接上承载,数据采用微信私有的SYNC协议封
装。
语音/视频服务器群
(/ )
图片服务器群 ( / )
用于语音/视频数据中转、NAT穿透。
保存好友信息以及头像、图片等信息。
1、使用微信时,首先请求调度域名,该域名会返回多个域名和IP地址
的对应关系,后续的访问都不再进行DNS查询,而是直接使用列表中域名的IP地址,此功
能类似于DNS、调度服务器等;
2、其他未包含在其中的域名则正常通过DNS解析获取IP地址;
3、最后通过与这些域名的交互,来实现发送/接受消息、朋友圈、附件的人等功能;
2.微信的登陆流程
(1)域名解析过程
打开微信,首先发起域名解析行为。微信软件的域名解析方式有两种:普通的DNS域名解
析方式和特殊的域名解析方式。
普通的DNS域名解析方式如下截图,向DNS服务器发起域名解析请求,DNS服务器返回
对应的源站IP。
特殊的域名解析方式为打开微信app时,发起http get请求:
源站收到请求后通过http页面返回dns解析结果,内容如下截图:
可以看出返回的Html代码中给了多个域名对应的IP地址,从而达到域名解析的目的。
(2)注册、登陆、认证过程
注册、登陆、认证过程通过ssl加密方式进行。目的IP落地点均为网内资源
120.198.189.121
111.30.131.187
117.135.169.29
广东省深圳市深圳市腾讯计算机系统有限公司移动节点
天津市移动
上海市移动
(3)业务使用过程
3.微信主要业务场景
(1)文本聊天交互流程
通过长连接通道传输消息内容,流程说明如下:
a.发送方把编辑好的信息发送到长连接服务器,消息内容已加密,服务器缓存信息,并发
送通知消息给接收方,通知接收方有信息要接收。
b.接收方从长连接服务器接收信息。
(2)实时对讲的交互流程
实时对讲功能新引入STUN穿洞/中转服务器,以完成语音数据的私网穿透和中转功能,流
程如下:
a.发起方首先和长连接服务器通信,通知服务器将要和对方发起实时对讲。
b.发起方同时和STUN服务器(/)发起穿洞过
程,该过程采用UDP协议,穿洞时,客户端同时在同一个源端口向STUN服务器多个端口
发起UDP请求,服务器分别响应,客户端选择其中一条UDP通道作为后续语音传输通道。
c.长连接服务器通知接收方有对讲请求,接收方加入对讲,同时和STUN中转服务器发起穿
洞过程,该过程与发起方的STUN穿洞过程是一致的。长连接服务器在收到接收方的信息
后,通知发起方对方已加入,然后双方进入实时对讲状态。
d.双方进入对讲状态,双方可以按住对讲按钮实时对讲,对讲数据将通过STUN服务器协
商的通道由中转服务器中转给对方,双方进入对讲状态。
(3)查找附近的人交互流程
用户可以通过手机终端的LBS功能,获取附近的其他微信用户的信息列表:
a.通过位置服务器获取当前位置信息,该位置服务器一般为手机自带的位置服务器或其他
第三方服务器,例如Google地图、Apple地图。
b.客户端通过TCP长连接告诉服务器要找附近的人。
服务器将附近的人按从近到远的顺序发送给客户端。
d.如果当前显示页面中的人有设置头像,且本地没有缓存,则向发起HTTP请
求GET/mmhead/..来获取摇出来的好友的头像等基本信息,GET请求个数与摇出来的好友
的个数有关。
e.选中一个人,打开详细信息界面,如果此人有相册,则从服务器中获取
相片信息。
(4)漂流瓶功能的交互流程
微信用户通过检获或扔出漂流瓶的方式认识新的好友,流程如下:
1.进入界面时,与服务器在TCP长连接上进行通信,查看自己扔出去
的漂流瓶是否有回应。
2.捡瓶子时,与服务器在TCP长连接上进行通信,返回结果有两种,
没有或者捡到一个。如果捡到一个,会从服务器中获取漂流瓶拥有者的头
像。
(5)摇一摇/附近的人功能的交互流程
基于智能手机终端的重力感应功能,用户通过摇一摇手机,寻找到在此刻也在“摇一摇”
的用户,流程如下:
1.客户端将摇手机的信息通过长连接通知服务器。
2.服务器把同一时段摇手机的好友列表信息发送给客户端。
3.如果当前显示页面中的人有设置头像,且本地没有缓存,则向发起HTTP请
求GET/mmhead/..来获取摇出来的好友的头像等基本信息,GET请求个数与摇出来的好友
的个数有关。
4.选中一个人,打开详细信息界面,如果此人有相册,则从服务器中获取
相片信息。
(6)朋友圈功能的交互流程
微信的朋友圈功能,用户依次点击“发现”、“朋友圈”,会列出朋友圈好友发布的状
态、文字,分享的图片、链接(网页或者视频)等,接下来按照内容类型不同分别进行说
明:
A、获取朋友圈好友头像:
朋友圈好友头像,与通信录中好友头像一样,客户端从域名获取,根据域名解
析获取的源站IP,发起HTTP GET请求,获取朋友头像;
以下为一个获取头像的实例URL和头像图片。
/mmhead/ver_1/MCBzc7dcIsTvyQbYl9rhQEVIt3J6MbDGbeRicDx
7ozI2WxQNVgNADszTtMUu6ssVeFTQrVAw19qBXnoXfUOuhmw/96
该域名可以通过缓存进行加速。
B、访问朋友圈小视频:
朋友圈的小视频是好友通过手机终端自己录制、然后进行分享的视频,主要域名是
,例如:
/1023_4
是一个朋友圈小视频的URL。
获取该视频文件响应消息如下:
Last-Modified: Mon, 03 Nov 2014 14:37:41 GMT
Cache-Control: max-age=7200
Date: Mon, 03 Nov 2014 14:37:58 GMT
Content-Length: 328702
Accept-Ranges: bytes
X-ServerIp: 182.254.3.57
Content-Type: video/mp4
C、朋友圈网页链接分享:
好友分享的链接呈现在好友圈中,用户点击该链接,通过域名为的服
务器提供的跳转服务,载入该网页。举例说明:
好友在朋友圈中分享的连接URL:
/s?__biz=MzA5NjEwNTQxOQ==&mid=2004446
16&idx=2&sn=aa632a60b85d967798ee1f3cab0c70f9&scene=2&from=ti
meline&isappinstalled=0#rd
该网页是关于“跆拳道基本动作手册”说明的,在浏览器中使用该链接,也可以打开网
页。网页中主要元素是js、css文件以及图片文件。
通过在浏览器中分析元素资源地址,得知样式表css、脚本js来自域名为的
服务器,获取css文件的URL为:
/mmbizwap/zh_CN/htmledition/style/page/page_
mp_
获取js文件的URL为:
/mmbizwap/zh_CN/htmledition/js/biz_wap/moon2
而图片资源主要存放在域名为的服务器上,例如本链接中获取图片的URL
为:
/mmbiz/VlESyYdYibfhErd2VY8vXicicMXmicE5icE0aj
qmOchWXyaSBxWyzicyRNVtbMhGlXvEFMxFqZ6ANMnzaXBmjG6icP5dw
/0?tp=webp
/mmbiz/VlESyYdYibfhNXEkW6moicY5o7cN1lg9opI
w03ES6YH73JJn0SNr84GQulicWt53am7X1DXzoYps01Dfo44pN8Gng/0?t
p=webp
域名中的图片资源可以缓存以提高获取的速度。
(7)游戏下载功能的交互流程
对于Android和IOS版本的微信,游戏下载来源不同。IOS版本,下载时跳转到itunes,微
信只提供跳转链接。
/cn/app/id891582840?mt=8
Android版本微信可以直接下载,URL格式如下:
/mmopen/IEGgames/10000145_1414032284_FruitNinjaFever2
0141013_v2_1.0.5_
游戏图标等使用图片类域名,例如:
/mmbiz/rRr1pd10MIEtsSCqqqtuE4OTHNq2qx7qjKzFqw39Ab
25cwKojqOW4aTVGZDerSiaftCPF63gy9ljy9jCFOdptUQ/0
(8)微信购物功能的交互流程
点击微信的“发现”—“购物”,使用微信购物功能,此过程通过域名
跳转到京东和拍拍源站,加载商城网页。微信商城浏览页面和商品部
分通过http协议传输,可直接缓存加速。页面中的主要资源是图片,这也是影响网页加载
速度的主要因素,图片资源主要存放在京东、拍拍的图片资源服务器中,这些资源通常是
可以被缓存的。在微信支付和微信钱包中,传输通过加密方式,不可通过缓存方式加速。
如下是一个微信购物的链接:
/promote/11_?hall=4&PTAG=17007.4.
4&ptype=1&wc_scene=1
页面的内容使用京东或者拍拍网资源:
/boss-54472686-
/n2/jfs/t382/62/381861954/150704/ed2aa
e2/
4 微信可缓存重点域名
经过分析微信的网络交互流程,筛选出如下重点域名:
域名
内容资源说明
好友头像
朋友圈图片
游戏/第三方应用标签图片
微视频/小视频
微信朋友圈视频
微信朋友圈视频
微信购物
微信购物
微信游戏下载
位置共享、附近的人
微信公告号、朋友圈跳转链接
dns解析IP列表
朋友圈视频缩略图
朋友圈视频缩略图
微店
微信购物
登录域名、获取消息、订阅等
收集数据
微信朋友圈
服务支持、认证
第三方应用授权
登陆
TCP长连接域名
经过与缓存厂家的沟通,确定微信中可缓存的重点域名:
域名
内容资源说明
好友头像
业务类型
通讯录
朋友圈图片 朋友圈
游戏/第三方应用标签图片 游戏
微视频/小视频 朋友圈
微信游戏下载
视频缩略图
视频缩略图
游戏
朋友圈
朋友圈
另外,微信购物由京东、拍拍提供支持,即微信购物链接到京东、拍拍购物页面,微信中
的微店由口袋网提供支持。从这些站点获取资源的效率也与微信购物的用户体验息息相
关,以下列出常见的与微信购物相关的外链资源域名:
微信购物相关的外链域名(32个)


发布评论