阿土对于微信和手机QQ的网络连通性分析
测试环境:
智能手机一部(打开wifi关闭gprs) —-> linux wifi 热点 —-> 公网
分析手段:
- 在linux 上用tcpdump抓包,用wireshark分析抓到的数据
- 在linux上用iptables阻断特定流量,模拟网络故障,分别模拟了拦截udp 53/tcp 80/tcp 8080/tcp 14000/tcp全拦截等各种情况以及他们的组合
- 通过 adb shell在手机内执行netstat了解手机网络链接情况
微信网络行为:
- 程序启动后,优先尝试DNS解析特定域名(support.weixin.qq.com,short.weixin.qq.com,long.weixin.qq.com,wx.qlogo.cn);
- 如果DNS查询不可用,程序转为使用hardcode的ip链接服务;
- 如果dns可用,返回的ip为根据ISP智能解析的结果,程序使用返回的ip链接服务;
- 程序仅在注册阶段使用https链接,内容不详;
- 程序使用tcp 80/8080链接服务器,其中80为http协议,8080为未知协议;
- 80/8080两个端口同时或任何单独一个,均可提供服务;
- 80端口为短链接,8080为长链接, 程序会优先使用8080端口;
- 没有使用udp传输数据;
- 当1-2次发送失败时,客户端会弹出提示“当前网络状况不好,是否提交反馈数据”,确认后客户端试图通过web提交反馈数据;
手机qq网络行为:
仅列出跟微信不同之处
- 尝试的域名不同: monitor.uu.qq.com,3gimg.qq.com, msfwifi.3g.qq.com, kiss.3g.qq.com;
- 除了80/8080外,还有tcp 14000,功能与8080相同;
- 程序会优先尝试80/8080,只有这两个不可用时,才尝试14000;
- 其余同微信;
6 Comments
亲,“htpps链***”应该是“https”吧。博客交换友情链接么?谢谢拉
加好链接了
要是手机root了的话,可以直接装这个应用来抓包
https://play.google.com/store/apps/details?id=lv.n3o.shark&feature=search_result
应该是 support.weixin.qq.com 而不是 upport.weixin.qq.com 。
我的操作比较简单(主要是内网有一个七层小流控)
有一些需求需要分析手机应用特征。例如给小米商城、豌豆荚商城、appstore 下载app加速(找到目标域名和对应ip段,带宽资源多给点。)。例如手机访问facebook,或无法正常连接某些海外热门厂商游戏app。(国内访问某些海外链路不稳定,甚至访问不了。需要走香港vpn隧道网络才能正常通讯。)
dns部分,手机使用公司内部dns服务器,在上面tcpdump抓包,可查到手机请求的域名。(dns请求和目标ip网络都转到香港vpn处理,翻墙问题就解决了。)
手机网络连接状态,在七层流控上查看。(内网用panabit在管理流量,基于unix) (我上次优化小米商城应用下载速度,发现实际下载ip地址和dns中的域名对不上。郁闷了半天,最终按照实际下载ip做的优化。最近几天看到你们团队在技术大会的ppt,才发现你们做过优化,省掉了dns解析这个环节。)
手机网络控制,在panabit流控上操作。