1.只抓包头。
一般能抓到每个包(也可称为“帧”)的最大长度为1514字节,而大多数的时候我们只需要IP头或者TCP头就足够分析了。在Wireshark上可以这样抓到包头:单击菜单栏上的Capture—>Options,然后在弹出的窗口上定义“Limit each packet to”的值。我一般设个偏大的数字:80字节,也就是说每个包只抓前80字节。这样TCP层、网络层和数据链路层的信息都可以包括在内。
用tcpdump也可以,一下命令就是只抓eth0上每个包的前80字节,并把结果保存在/tmp/tcpdump.cap文件中。
tcpdump -i eth0 -s 80 -w /tmp/tcpdump.cap
2.只抓必要的包
如果我们只对IP为10.32.200.131感兴趣,Wireshark上这样设置:单击菜单栏的Capture—>Options,然后在Capture Filter中输入”host 10.32.200.131”
如果对更多的filter表达式感兴趣,请参考http://wiki.wireshark.org/CaptureFilters
tcpdump的命令相同的效果的命令是:
tcpdump -i eth 0 host 10.32.200.131 -w /tmp/tcpdump.cap
3.过滤技巧
- 如果已知某个协议发生问题,可以直接用协议名称过滤一下。例如,已知某身份验证的协议是Kerberos,那么在Filter中输入Kerberos作为关键字就可以了。
用协议过滤时务必考虑到协议间的依赖性。比如NFS共享挂载失败,问题可能发生在挂载时所用的mount协议,也可能发生在mount之前的portmap协议,这种情况下就需要用“portmap||mount”来过滤了。 - IP地址加port号是最常用的过滤方式。有两种方式:
手工输入 
ip.addreq<IP地址>&&tcp.porteq<端口号>
之类的过滤表达式。
Wireshark还提供了更快捷的方式;右键单击感兴趣的包,选择Follow TCP/UDP Stream就可以自动过滤。而且该Stream的对话内容会在新弹出的窗口中显示出来。
- 用鼠标帮助过滤。右键单击Wireshark上感兴趣的内容,然后选择
Apply a Filter—>Selected,会在Filter框中自动生成过滤表达式。表达式生成之后会自动执行。 - 选择过滤的部分保存。单击
Wireshark的File—>Save As,选中Displayed单选按钮再保存,得到的新文件就是过滤后的部分。 
4.让Wireshark自动分析
- 单击Wireshark的
Analyze—>Expert Info Composite,就可以在不同的标签下看到不同级别的提示信息。比如重传的统计、连接的建立和重置统计,等等。在分析网络性能和连接问题时,我们经常要借助这个功能。 
- 单击
Statistics—>Service Response Time,再选定协议名称,可以得到响应时间的统计表。我们在衡量服务器性能时经常需要此统计结果,图中展示的是SMB2读写操作的响应时间。 
- 单击
Statistics—>TCP Stream Graph,可以生成几类统计图。比如我曾经用Time-Sequence(Stevens)生成了下图。 
从图17中可以看出25-40秒,以及65-75秒之间没有传输数据。进一步研究,发现发送方内存不足,所以偶尔出现暂停现象,添加内存后问题就解决了。为什么Wireshark要把这个图称为”Stevens“呢?我猜是为了向《TCP/IP Illustrated》的作者Richard Stevens致敬。
- 单击Statistics—>Summary,可以看到一些统计信息,比如平均流量等,这有助于我们推测负载状况。比如下图中,网络包才1.594Mbit/s,说明流量低的很。
 
5.最容易上手的搜索功能
与很多软件一样,Wireshark也可以通过“Ctrl+F”所搜关键字。加入我们怀疑包里含有“error”一词,就可以按下“Ctrl+F”之后选中“String”单选按钮,然后输入“error”进行搜索
文章参考:
Wireshark网络分析就这么简单












网友评论