说一说这个问题的由来,通常使用wireshark不须要长时间抓包的,可是有时候遇到网络通讯中很是棘手的问题,例如一个小时出现一次或者几个小时出现一次问题的状况,这种状况下就必须长时间抓包了。可是若是在wireshark中开始抓包以后等上几个小时确定会出问题,由于这个时候抓包的内容都是存放在内存中的,几个小时的数据包,特别是若是涉及到音视频的数据包是很大的,几个小时可能会达到几个G的大小,这种状况下wireshark会内存溢出,程序直接异常。
这个时候就须要使用wireshark提供的自动分文件存储的功能了。windows
能够在wireshark的界面上进行一些设置以后再开启抓包过程,这个时候wireshark会自动根据咱们指定的文件名并加上序号和时间来保存每一个文件段了,具体过程以下:网络
选择Capture—Interfaces… 打开网络接口对话框tcp
选择要对其进行抓包的网络设备,点击该条目后面的Options按钮工具
在该对话框中就能够设置使用多个文件存储抓到的数据,wireshark会根据咱们指定的文件名自动指定每一段的文件名,其名字为 “指定的文件名_序号_日期时间.扩展名”,而且该对话框中能够设置各类文件分段的条件,以及中止抓包的条件,很是灵活。
经过这种方式设置进行多文件保存数据很是方便,可是有一个问题以下:google
通过长时间抓包以后发现会出现多个 “Closing file!”的对话框,在任务栏上面每个对话框都会多出一个wireshark的图标,抓包时间越长,文件分段越多该对话框越多,最终会占满整个任务栏。而且只能经过鼠标在任务栏wireshark的图标上右键关闭。经过google搜索发现这是wireshark的一个bug,没有好的解决办法。因此推荐使用命令行的方式进行长时间抓包。命令行
在wireshark安装以后,在其安装目录下会有一个dumpcap.exe的命令行工具,实际上wireshark的界面程序也是使用这个命令行工具工做的,咱们能够不须要使用界面,而直接使用该命令行工具进行抓包工做,其命令以下:视频
命令的含义解释以下:
dumpcap.exe -i \Device\NPF_{845F9D1E-8F0B-4991-9F9A-C55D107A046B} -w d:\000\ddd.pcap -b filesize:50000
dumpcap.exe在wrieshark的安装根目录就能够看到,其中:
-i 表示指定捕获的网卡设备,这里指定的是网卡设备的标识,是一个字符串,能够在wireshark界面程序中查看,以下:blog
-w 表示保存的路径以及文件名,若是是分文件保存,则会自动命名为ddd_00001_20151221213115.pcap 的形式,也就是“filename_序号_时间.扩展名”。
-b filesize:N 表示指定每一个文件的大小是NKB,如上50000表示 50000 KB,也就是50M。
经过命令行的方式抓包长时间运行没有任何问题,推荐使用这种方式。接口
经过dumpcap.exe命令行的方式进行抓包,能够解决文章开头提出的问题,可是dumpcap.exe该工具只有在安装wireshark以后才会有,该程序的运行也依赖wireshark安装目录下的其余的dll,若是不但愿安装wireshark这么繁琐,能够选择使用tcpdump的windows版本,只有一个exe程序没有其余依赖,tcpdump.exe不是wireshark的一部分,须要单独下载,tcpdump windows版本下载地址ip
经过tcpdump –D 命令能够列出全部网络设备列表,注意该列表中的网络设备标识与咱们在wireshark的设备属性中拷贝的设备标识有一点区别,在wireshark中拷贝的设备标识都有NPF_的前缀,由于wireshark安装的是NPF驱动,这是不同的,因此wireshark的命令行工具dumpcap.exe使用的网络设备标识以wireshark中查看的为准,而这里的tcpdump.exe使用的网络设备标识以 tcpdump -D命令列出的为准。咱们能够经过tcpdump –D 得出的网络设备列表每一项后面的描述信息,与咱们当前使用的网络链接的描述信息比较,能够得出咱们须要捕获的网络链接对应的设备标识。命令说明:tcpdump.exe -i \Device\{89515393-AC8F-4D23-9A03-AF35F9950E72} -w E:\000\test.pcap -C 2 -i 指定要捕获的网络设备的标识。-w 指定保存的文件,若是分段则会自动保存为 test.pcap、test.pcap一、test.pcap2 等,这些文件均可以直接拖到wireshark中打开。-C 注意这里是大写,表示每个分段文件的大小,单位是M,这里 -C 2 表示2M一个文件。