这篇文章会依照上面思路来进行形容:
1、为什么须要抓包;
2、怎么抓包;
3、报文的简略剖析;
(ps 文章中提到的设施指的 android 零碎的设施)
一、为什么须要抓包
网络通信的时候,下层常常会用到 http 相干的协定,当初网络通信的开源框架也比拟多,相似 okhttp 这些框架曾经为咱们提供了非常简单的接口,可能只须要一行代码就能实现简略的上传等性能。
网络各个协定层之间的通信是通过报文来进行传递,每个协定层会有本人的报文格式。有时候咱们须要确认发送或者接管到的报文信息是否正确,这时就须要抓包进行剖析。其实还有很多场景会用到抓包,相似想通过 php 下载某个网站上的视频,这时也能够抓包,看下网站申请的信息,能够晓得相干视频的理论拜访地址。
我本人集体用到抓包,是在写 socket 通信的时候用到了,2 台设施之间通过 udp 进行通信,而后一边是 android 零碎,一边是 linux 零碎,报文内容是依据我的项目须要定义的一套协定。在开发的时候,遇到 2 边联调时,对接管和发送的报文存在争议,这时抓包就是最好的形式了,以理论抓包内容为准。
二、怎么抓包 && 如何简略剖析报文
Android 上抓包的很多工具,也有很多种形式,上面只介绍我本人应用过的 2 种。一种是 pc 端装置 fiddler 工具,在电脑端实时查看网络报文状况,另一种是通过 tcpdump 命令来抓包,而后再应用 wireshark 软件来剖析报文。实际上我应用第二种形式比拟多,间接通过命令来抓包还是比拟不便点,抓到的包也能够发给其它共事一起剖析。
1、采纳 fiddler 工具
应用 fiddler 工具是须要设施端的 ip 和电脑端 ip 在同一网段,如果是公司的对立 wifi, 那 pc 和设施都连上公司 wifi 即可。而后设施端连贯的 wifi 代理还须要设置为电脑端 ip,这个目标也很显著,设施端 wifi 代理设为 pc 端 ip 后,设施端拜访网络,其实都是借助 p c 端出去的了,所以通过 fiddler 就能很不便的查看到网络拜访状况。
好了,理解了对于 fiddler 的根本状况,上面动动手,搞起来吧~~
1) pc 端装置 fiddler 工具(这个就自行下载安装了 );
2) ipconfig 查看电脑端 ip, 这个 ip 地址就是设施端连贯的 wifi 须要设置的代理 ip;
3) 设施端连贯 wifi, 这个 wifi 须要和 p c 端的网络是同一网络,而后设置代理采纳 pc 端 ip(也就是下面通过 ipconfig 查看到的 ip 地址);
4) 关上 pc 端装置的 fiddler,fiddler 中设置容许近程拜访;
5) 通过下面几个步骤,上面就能够应用 fiddler 来查看网络报文了。能够试下在设施端拜访网络,这时就能够在 fiddler 上看到网络拜访状况了;
(上面的截图,是查看了喜马拉雅 app 的一次申请报文状况)
2、上面接着来看下第二种形式,采纳 tcpdump 命令抓包,而后通过 wireshark 软件进行剖析
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 周日