抓包工具wiresharke及抓包流程

背景:公司的系统在生产环境运行一段时间之后,通过skywalking监控工具发现时不时会有接口调用耗时很长的情况出现。且监控到的数据和华为云ELB的监控日志不匹配,为了验证是否是由华为云ELB转发延迟导致,决定在生产上抓包验证,以下是使用抓包命令tcpdump+wiresharke配合分析的过程记录

如何使用:

tcpdump是linux系统自带的命令,功能强大、使用简单,相关参数如下:

 tcpdump   # 默认情况下,直接启动tcpdump将监视第一个网络接口(非lo口)上所有流通的数据包。
 tcpdump -i eth1              # 【参数】-i,指定网卡监听
 tcpdump -c 10                # 【参数】-c,指定抓取包的数量
 tcpdump -v                     # 【参数】-v,显示详细的包头信息。-vv,-vvv更加详细
 tcpdump -s 1024            # 【参数】-s, 指定截取包的长度。默认65535。如果包的长度超过截取的长度, 
 tcpdump -w test.cap             # 【参数】-w, 将抓取的数据存到文件test.cap中
 

以上就是tcpdump的基本使用,再配合一些关键字和逻辑关键字就可以实现对定向包的抓取

关键字有:

dst   目的ip     src 源ip port 端口  host 主机 等等

逻辑关键字有

and、or &&、 ||

以下是tcpdump抓包在后台显示的情况

 如果需要解析成人可以阅读的内容,可以借助其他的一些命令或者工具,wiresharke就是其中一款功能强大的工具

如何分析

使用tcpdump -i eth0 port 9090 -w test.cap 将抓包的内容写入到文件中,再使用wiresharke打开相应的文件,即可做分析

打开界面如下:

其中可以看到在抓包期间抓获的所有的数据包,包括协议,tcp哪个阶段的包等等

如何只是单纯做展示,相信在实际使用中是满足不了需要的,在几分钟的抓包中可能抓获的包成千上万,如何做分析呢?

此时,wireshark有提供显示过滤器,只需要在显示过滤器中添加过滤条件,即可拿到符合自己预期的数据包,以该次生产事故的数据做分析。

条件如下:

当时对某个接口做压测一段时间,在华为云的ELB日志上监控到该次接口有耗时大于2秒的请求。

frame.time >= "Nov  8, 2022 14:21:58.001367000" and frame.time <= "Nov  8, 2022 14:21:58.996975000" 

通过该过滤器,可以把在压测时段内的所有请求的数据拿到。由于本次是想查看接口耗时,在抓包的http请求中,在response包中有个字段:time since request。此时只需要把该字段添加到列表的列中显示即可:(在wiresharke的某个数据包中,右键点击相关字段--应用为列即可显示在列表中了)

再把相关过滤后的数据导成csv文件(文件--》导出分组解析结果--AS CSV)就可以生成对应的csv文件了

 从csv文件中查看,有一次请求的耗时超过了2s,和华为云的ELB日志监控数据一致。

以上是使用tcpdump+wiresharke做抓包分析的一次应用实践!


 

猜你喜欢

转载自blog.csdn.net/qq_39203337/article/details/128478562
今日推荐