Wireshark网络抓包分析

258 阅读3分钟

网络抓包分析是研发日常开发工作中的一项重要技能,但凡开发的系统或应用涉及网络通信都可能会接触到。抓包文件可帮助研发人员排查网络通信中一些难以直接看出的故障,快速定位和解决问题。

Wireshark是一个强大且开源的网络封包分析软件,提供了强大的过滤器功能,其一般使用步骤如下。

1. 抓包

以下是几种比较常用的Linux抓包命令。

-v:指定为详细输出模式,可以让 tcpdump 输出更详细的数据包头部信息。

# 按端口过滤
tcpdump -i any port 8080 or 8918 -v -w pocket.pcap
# 按ip过滤
tcpdump -i eth0 host 127.0.0.1 -v -w pocket.pcap
# 按目标ip过滤
tcpdump -i eth0 dst 127.0.0.1 -v -w pocket.pcap
# 按源ip过滤
tcpdump -i eth0 src 127.0.0.1 -v -w pocket.pcap
# 抓全包
tcpdump -v -w pocket.pcap

2. 转换时间显示格式

使用Wireshark打开一个抓包文件(.pcap)后,首先查看时间展示格式,一般来说有2种格式比较常用。

修改方式:View(视图) --> Time Display Format(时间显示格式)

2.1. 包含具体时间的格式

包含具体时间的格式有很多种,随意选择1种即可。

这种格式显示的好处是可以追溯每个数据包的具体时间,方便对照日志进行时序问题排查

image.png

2.2. 自上一个捕获分组经过的秒数

这种格式显示的好处是可以查看每个数据包的耗时,排查一些网络延时卡顿之类的问题。

image.png

3. 总体统计分析

3.1. IO图

X轴为时间,Y轴为捕获数据包数量,显示抓包文件中的整体流量情况,如波峰/波谷/规律性/是否均匀等。

查看方式:Statistics(统计) --> I/O Graph(IO图)

image.png

3.2. 对话信息

查看总体的对话信息,包括数据流向、数据大小、耗时等等

查看方式:Statistics(统计) --> Conversations(对话)

image.png

4. 设置过滤器

在过滤器命令框中输入具体命令,回车即可搜索目标数据包。

image.png

以下为一些常用的过滤方式及命令。

4.1. 根据 网络协议

  • http:只查看HTTP协议的数据包列表
  • tcp:只查看TCP协议的数据包列表
  • udp:只查看UDP协议的数据包列表
  • icmp:只查看ICMP协议的数据包列表

4.2. 根据 数据包内容

  • data contains "关键字":仅搜索数据包中的数据部分(推荐)
  • frame contains "关键字":搜索的是整个数据帧,包括协议头部和数据部分

4.3. 根据 IP

  • ip.addr == 192.168.3.77:源ip或目标ip
  • ip.src == 192.168.1.114:源ip
  • ip.dst == 192.168.1.114:目标ip

4.4. 根据 端口

TCP协议

  • tcp.port == 80:源端口或目标端口
  • tcp.dstport == 80:目标端口
  • tcp.srcport == 80:源端口

UDP协议

  • udp.port == 80:源端口或目标端口
  • udp.dstport == 80:目标端口
  • udp.srcport == 80:源端口

4.5. 根据 接口请求方法

  • http.request.method == GET
  • http.request.method == POST

4.6. 根据 接口URI

  • http.request.uri contains "接口uri"

扩展:组合条件

上面条件都可以组合使用,基本组合方式有3类,可灵活组合使用。

  • || 或者 or:满足任一条件

  • && 或者 and:同时满足多个条件

  • !():不满某个条件

5. 分析数据包内容

定位到具体的数据包后,我们可能需要查看分析具体的抓包内容。

查看方式:数据包上鼠标右键 --> 追踪流 --> 具体协议流

image.png

image.png