Wireshark是一个网络报文分析软件,是网络应用问题分析必不可少的工具软件。网络管理员可以使用wireshark排查网络问题。程序开发人员可以用来分析应用协议、定位分析应用问题。无论是网络应用程序开发人员、测试人员、部署人员、技术支持人员,掌握wireshark的使用对于分析网络问题起到事半功倍的作用。
一、网络报文的抓取
1.1 wireshark抓取报文(windows)
windows系统安装wireshark软件后,可以抓取流经网卡的网络报文。使用方法如下:
- 点击捕获选项,弹出网卡列表
- 选择要捕获的网卡或设备, 如以太网卡
- 点击开始
可以抓到各种协议报文
- 输入过滤条件,抓取指定的报文
- 点击停止按钮可以停止报文抓取点击重新开始按钮可以重新捕获
1.2 wireshark抓取报文(Linux)
对于有GUI支持的linux桌面版本系统,可以安装使用wireshark软件进行抓包,使用方法同windows版本
1.3 tcpdump 抓取报文(Linux)
对于没有GUI支持的linux系统,如服务器等, 可以通过命令行工具tcpdump抓取报文。转储为文件后,可以通过wireshark(windows版本或linux版本)进行分析
tcpdump抓包示例:tcpdump -i eth0 -w my.pcap
二、网络报文过滤
从网卡抓到的报文一般包含了种协议的报文(http、tcp/udp、arp等),不方便分析定位问题,需要过滤出指定条件的报文,有很多不同的过滤条件。
0. 无过滤条件时:
- 协议过滤
如输入SIP或http后,按回车,过滤出SIP报文或http报文
- IP地址过滤
IP地址过滤分为地址、源地址、目的地址3种情况
地址:
源地址:
目的地址:
- 端口过滤
tcp端口:
TCP源端口:
TCP目的端口:
UDP端口:
4. 报文编号范围过滤
抓到的报文默认从编号1开始的,可以过滤某个编号范围的报文。比如过滤编号大于500的报文
5. 组合条件过滤
可以通过多个条件进行组合过滤,多个条件之间可以通过与(&)、或(||)、非(!)以及括号等条件进行组合
三、协议分析
以http协议报文为例:
3.1 整体报文分层结构
3.2 帧信息
可以看到帧编号是33(表示在本次抓包中的序号)
3.3 二层头部
3.4 三层头(IP)
3.5 应用数据
四、导出报文
过滤报文后,可以将过滤后的报文导出为新文件,这样新文件中只包含符合过滤条件的报文,方便问题分析,而且文件更小,通过邮件等转发给别人时传输会更快。
- 原始抓包如下
- 输入过滤条件http
- 导出,保存为新文件
- 打开新文件查看
五、使用协议字段生成过滤条件
除了手动输入过滤条件外,还可以在报文展开后,通过鼠标右键点击的方式应用过滤条件