这篇文章会按照下面思路来进行描述:php
一、为何须要抓包;linux
二、怎样抓包;android
三、报文的简单分析;微信
(ps 文章中提到的设备指的android系统的设备)网络
网络通讯的时候,上层常常会用到http相关的协议,如今网络通讯的开源框架也比较多,相似okhttp这些框架已经为咱们提供了很是简单的接口,可能只须要一行代码就能实现简单的上传等功能。app
网络各个协议层之间的通讯是经过报文来进行传递,每一个协议层会有本身的报文格式。有时候咱们须要确认发送或者接收到的报文信息是否正确,这时就须要抓包进行分析。其实还有不少场景会用到抓包,相似想经过php下载某个网站上的视频,这时也能够抓包,看下网站请求的信息,能够知道相关视频的实际访问地址。框架
我本身我的用到抓包,是在写socket通讯的时候用到了,2台设备之间经过udp进行通讯,而后一边是android系统,一边是linux系统,报文内容是根据项目须要定义的一套协议。在开发的时候,遇到2边联调时,对接收和发送的报文存在争议,这时抓包就是最好的方式了,以实际抓包内容为准。socket
Android上抓包的不少工具,也有不少种方式,下面只介绍我本身使用过的2种。一种是pc端安装fiddler工具,在电脑端实时查看网络报文状况,另外一种是经过tcpdump命令来抓包,而后再使用wireshark软件来分析报文。实际上我使用第二种方式比较多,直接经过命令来抓包仍是比较方便点,抓到的包也能够发给其它同事一块儿分析。tcp
使用fiddler工具是须要设备端的ip和电脑端ip在同一网段,若是是公司的统一wifi,那pc和设备都连上公司wifi便可。而后设备端链接的wifi代理还须要设置为电脑端ip,这个目的也很明显,设备端wifi代理设为pc端ip后,设备端访问网络,其实都是借助p c端出去的了,因此经过fiddler就能很方便的查看到网络访问状况。ide
好了,了解了关于fiddler的基本状况,下面动动手,搞起来吧~~
(下面的截图,是查看了喜马拉雅app的一次请求报文状况)
1) tcpdump抓包命令
tcpdump -p -vv -s 0 -w /sdcard/capture.pcap
2) 使用wireshark分析抓到的包
在window上使用 wireshark打开抓取的包 ***.pcap 文件.
下面的截图,是根据本身的须要,筛选了 192.168.7.2 发送给 192.168.7.3 的包. 能够看到协议是采用的 UDP ,端口是使用的4052.
点开其中一条数据包看下更具体的信息,这里更多时候关心的的是报文数据部分,查看Data部分的数据,能够排除咱们发的报文数据是否正确.
本人从事Android Camera相关开发已有5年
目前在深圳上班
欢迎你们关注个人微信公众号“小驰笔记”
你们一块儿学习交流
------- 2020.01.12 周日