原标题:优咖对你说| 从TCP协议栈角度分析微信常用业务模型

「无线大牛」 无线精彩,无限可能

问微信老司机:

想了解发送一张普通图片背后的业务流程吗?

想了解发送一张原图背后的业务流程吗?

想了解接收图片、接收原图、接收消息、发送消息背后的流程机制吗?

一起学起来吧!

微信业务特征介绍

微信常用操作流程介绍

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(←长按复制)

还不赶紧加入我们,成为无线大牛,一起分享无限精彩!返回搜狐,查看更多

责任编辑:

微信协议服务器端口,优咖对你说| 从TCP协议栈角度分析微信常用业务模型相关推荐

  1. 从程序员的角度分析微信小程序

     从程序员的角度分析微信小程序             我赶快在书架上拿出三年前买的书,把上面的土擦干净,压压惊. 作为一个并不是资深的程序员. 从程序员的角度分析一下微信小程序,欢迎指点. 首先 ...

  2. 从程序员的角度分析微信小程序(编程语言:用到什么学什么)

    从程序员的角度分析微信小程序(编程语言:用到什么学什么) 一.总结 一句话总结:微信小程序原理就是用JS调用底层native组件,和React Native非常类似.(需要时,用到时再学) 1.选择语 ...

  3. onvif协议服务器端口,通过onvif协议接入海康、大华NVR步骤

    <通过onvif协议接入海康.大华NVR步骤>由会员分享,可在线阅读,更多相关<通过onvif协议接入海康.大华NVR步骤(4页珍藏版)>请在人人文库网上搜索. 1.通过onv ...

  4. 微信的服务器是联想的吗,吕再峰:联想希望借微信建设一个新的服务通路

    腾讯科技讯 北京时间7月3日消息,腾讯合作伙伴大会今日在北京国家会议中心召开.本次大会以"开放·变革"为主题,腾讯将与合作伙伴一起,全面分享PC和移动互联网领域的发展理念以及最新的 ...

  5. FTP协议 服务器端口,FTP协议介绍

    原标题:FTP协议介绍 一.FTP介绍 FTP (File transfer protocol) 是TCP/IP 协议组中的协议之一.他最主要的功能是在服务器与客户端之间进行文件的传输.FTP就是实现 ...

  6. 微信聊天记录服务器端口是什么意思,微信端口异常是什么意思?

    微信端口异常是什么意思?在使用微信端口的时候,我们经常会出现某些问题,导致的原因也比较多,下面就最近的出现的微信端口异常,讲讲微信端口异常是什么意思? 微信端口异常是什么意思? 微信开发,参考其官方接 ...

  7. 微信的服务器 上海,昨下午部分用户无法收发文字信息和登录 微信回应:上海机房服务器发生故障 现已恢复...

    昨天下午,腾讯旗下的通讯工具微信出现不稳定情况,并在此后出现了大约两小时的故障. 昨天下午五点左右,部分用户不约而同在微博和朋友圈吐槽微信无法收发消息.有用户退出或卸载重装微信后,甚至出现了无法再次登 ...

  8. 软件工程作业一:从产品经理人角度分析微信求职招聘小程序

    一.开发背景分析 随着社会及互联网时代的发展,人才成了企业发展的关键因素,如果招聘到对应岗位合适的人员成了各大企业HR的重要问题,而对于求职者来说,在如此多的招聘信息中如何进行真假信息的鉴别,以及找到 ...

  9. 查看服务器端口开启命令

    目录 方法一:查看端口是否开启(推荐) 方法二:查找占用端口的应用程序 第一个例子(8020) 第二个例子(3306) 方法三:查看本机哪些端口开放(不推荐) 方法四:查看端口是否开放(测试远程服务器 ...

  10. 微信支付服务器验证的java_Java中的微信支付(3):API V3对微信服务器响应进行签名验证...

    1. 前言 牢记一句话:公钥加密,私钥解密:私钥加签,公钥验签. 微信支付V3版本前两篇分别讲了如何对请求做签名和如何获取并刷新微信平台公钥,本篇将继续展开如何对微信支付响应结果的验签. 2. 为什么 ...

最新文章

  1. mybatis实体类注解_SpringBoot2.x系列教程43--整合使用Mybatis
  2. 倒下的RoadStar结局来了:VC清盘止损,三位创业者承担1亿债务,打着官司各投林...
  3. Linux系统中网络配置详解
  4. oracle tranc,ORACLE TRUNC()函数
  5. SQL Server 2005异地备份
  6. java象棋人机代码_中国象棋人机对弈Java版源码
  7. oracle中的判断大小,sql语句判断大小
  8. ubuntu的apache配置https
  9. 09 | 自编码器:让模型拥有属于自己的表达和语言
  10. 项目管理:项目经理要具备的技能
  11. 追踪盗窃12亿用户登录数据的网络犯罪团伙
  12. mysql中名词解析
  13. HashTable、ConcurrentHashMap、TreeMap、HashMap关于键值的区别
  14. 面试官问:“在项目中用过多线程吗?”你就把这个案例讲给他听!
  15. access如何求平均单价_数据库 – MS Access:单个查询中的平均值和总计算量
  16. keil5编写C51程序
  17. LeetCode.199 二叉树的左视图
  18. MySQL中建表时的int(m)中的m代表什么意思?
  19. 外置USB供电与内置锂电池供电自动切换电路,便携电子设备常用,经典电路必须掌握...
  20. 数据挖掘技术及其应用现状

热门文章

  1. 山地车中轴进水表现_解决山地车令人讨厌的中轴异响及其他异响问题
  2. 两年的前端程序员的反省与总结
  3. 笔记本电脑触摸板手势命令
  4. new ext.toolbar控制按钮间距_消防控制室现场验收存在问题图解
  5. 数据结构银行排队系统c语言,数据结构-银行排队系统.doc
  6. 高手进阶,终极内存技术指南——完整/进阶版 I
  7. 数据库设计——手机售卖系统(带源码)
  8. {转载}与我十年长跑的女朋友就要嫁人了。
  9. 使用python的turtle函数绘制滑稽表情
  10. 常见的web网站攻击类型