1.2.6性能协议的抓包分析
在现实工作中,有比较完善的接口文档是比较幸运的,很多时候文档都是比较匮乏的,此时就需要用到抓包分析。另外,对于特殊的协议,相应的基本的抓包工具是必不可少的。
1.Fiddler和Charles
Fiddler和Charles都是常用的HTTP/HTTPS的抓包分析工具。Fiddler一般在Windows上用得比较多,Charles常用在macOS上。
在Web开发中,我们无法看到Web浏览器/客户端和服务器之间发送和接收的内容,这种情况下想要确定错误在哪里是困难且耗时的。而通过使用Fiddler/Charles,我们可以很容易地看到这些内容,从而快速诊断和解决问题。Fiddler/Charles可以让开发者监视所有连接互联网的HTTP通信,包括请求、响应和HTTP头信息等。这主要用于网页的开发、调试、分析封包协议,以及模拟慢速网络。
2.Tcpdump
当涉及特殊协议(如SOAP)或者需要在服务器上抓取数据包时,可以釆用Tcpdump+Wireshark的方法。
Tcpdump命令格式如下:
tcpdump[-adeflnNOpqStvx][-c数量][-F文件名-i网络接口][-r文件名][-s抓取长度][-T类型][-w文件名][表达式]
常用的参数为:
-1表示将标准输出变为缓冲行形式;
-n表示不把网络地址转换成名字;
-c表示在收到指定的数目的数据包后,Tcpdump就会停止抓取;
-i表示监听的网络接口(如果没有指定,则可能在默认网卡上监听,需要指定绑定了特定IP的网卡);
-w表示直接将数据包写入文件中,并不分析和打印出来;
-s耘抓取娜包的长度,常见-s0,代表最大值65535,一般Linux传输最小单元(MTU)为1500。
常用表达式有:
关于类型的关键字,主要包括host、net、port;
传输方向的关键字,主要包括src、dst^dstorsrc、dstandsrc;
协议的关键字,主要包括IP、arp、rarp、TCP、UDP等;
逻辑运算,取非运算是not、!;与运算是and、&&;或运算是or、||。
要让Wireshark能分析Tcpdump抓取的数据包,关键的地方是-s参数设置,并且要将抓取的数据包保存至-w参数设置的文件中。参看下面的例子:
./tcpdumptcp-ieth1-t-s 0-c100 anddst port! 22and src net192.168.1.0/24-w./target.cap
tcp、udp、icmp等选项都要放到第一个参数的位置,用来过滤数据包的类型。
-iethl表示只抓取经过接口ethl的数据包。
-t表示不显示时间戳。
-s0表示抓取数据包时默认抓取长度为68字节。设置-s0后可以抓到完整的数据包。
-clOO表示只抓取100个数据包。
dstport!22表示不抓取目标端口是22的数据包。
srcnet192.168.1.0/24表示数据包的源网络地址为192.168.1.0/24?
-w./target.cap表示保存成cap文件,方便用Wireshark分析。
3.Chrome浏览器的调试模式
对于Web类项目,最常用和最简单的方法就是通过Chrome浏览器的调试模式,如图1-6所示,在Chrome浏览器中按F12键进入调试模式。在调试模式下,我们可以快速查看HTTP的相关信息,方便快捷。
图1-6Chrome浏览器调试模式下的Network界面