「无线大牛」 无线精彩,无限可能
问微信老司机:
想了解发送一张普通图片背后的业务流程吗?
想了解发送一张原图背后的业务流程吗?
想了解接收图片、接收原图、接收消息、发送消息背后的流程机制吗?
一起学起来吧!
微信业务特征介绍
微信常用操作流程介绍
1、启动微信,微信客户端向DNS服务器请求szlong.weixin.qq.com域名的IP地址,会反馈多个服务器IP地址,用途各异
2、建立用于登录鉴权用的TCP长连接,命名为登录长连接,登录后,拆除该连接
3、和新服务器建立TCP长连接,该连接存活时间很长,命名为消息长连接,用于后续的消息收发、图片缩略图的接收,服务器端口为8080或者80端口
4、在消息长连接上进行消息(文本、语音)收发的动作,采用PUSH ACK报文交互
5、在消息长连接上进行图片缩略图的接收,服务器端口为8080或者80端口
6、在新服务器上建立一个TCP连接用于正式图片的下载,服务器端口为443端口
收发文本/语音流程介绍
1、一般来说,接收消息和发送消息均会有四条消息报文交互,消息个数多少应和消息内容的大小有关。文本字数内容越多,语音时间越长,则消息报文的个数可能也就越多。
l发送消息时产生4条报文,前两条报文是发出的消息,后两条报文是服务器回复的报文
l接收消息时也产生4条报文,前两条报文是收到的消息,后两条报文是向服务器反馈是否接收成功
l语音消息,则同样也是在消息长连接中收发PUSH ACK报文
2、消息交互所使用的TCP连接是自微信启动之后就建立的TCP长连接
l消息所在TCP层包含PUSH标识
l服务器端口为8080或者80端口
发送文本消息截图
接收文本消息截图
语音接收流程和文本消息接收流程基本一致,同样是在消息长连接上进行接收,由于语音的报文要远大于文本,所以语音的最后一个报文是PUSH报文,也就是说,当语音接收完毕之后才提交到接收方的应用程序,然后接收方反馈一个PUSH ACK报文。
发送语音截图
接收语音截图
图片收发流程介绍
1、接收图片时有2个阶段,第一个阶段是缩略图,第二个阶段是图片下载阶段
2、图片正式下载的阶段又分2个小阶段,终端先提交密钥、手机OS版本、微信版本、fileid等信息,然后服务器反馈文件大小等内容,然后才开始正式加密接收图片
3、第一个阶段(缩略图接收)是采用加密的方式接收,这个缩略图使用的是一直都存在的TCP流(消息长连接),而且一般来说,不会主动拆链,存活时间比较长,可能一直到与好友的会话结束为止。不过需要注意,从测试的情况来看,不同的微信版本处理方式不一样,在6.5.3版本下有时候只有用户点击的缩略图之后,才会下载图片,有些时候没有所谓的缩略图,但是从实际码流来看,会在不同的服务器上下载图片,显示在某个服务器上下载缩略图,然后会重新和另外一个服务器建立TCP流,先是进行密钥相关等信息的交互操作,然后正式开始加密接收图片(使用443端口)。
4、发送原图时,会重新建立一个新的TCP流发送数据,接收原图时,先是缩略图,然后是普通图,最后是手动点击下载接收原图
5、原图和非原图有个显著的字段区别,就是filetype,从测试情况来看,原图filetype=1,一般普通图片filetype=2
6、缩略图使用的基础长连接的服务器端口为8080或者80端口,图片正式下载与发送时连接的服务器端口均为443端口的加密端口
接收到缩略图
下载图片开始阶段的明文交互报文
开始下载图片
发送原图的TCP流
发送的原图一些基本信息
看似简单的微信基础业务
却内蕴玄机
那么当下年轻人所青睐的在线手游
又会是什么样子的呢?
没看够吗?
敬请关注后续手游专题
------------------------------------------------------------------
记得关注"无线大牛",通信人的网上部落,了解更多无线知识,无线精彩,规划无限可能。 还不赶紧关注起来!
微信号:Wireless_Tribe(←长按复制)
还不赶紧加入我们,成为无线大牛,一起分享无限精彩!