Wireshark入门与进阶系列(二)

摘自http://blog.csdn.net/howeverpf/article/details/40743705

Wireshark入门与进阶系列(二)

“君子生非异也,善假于物也”---荀子

本文由CSDN-蚍蜉撼青松 【主页:http://blog.csdn.net/howeverpf】原创,转载请注明出处!

上一篇文章我们讲了使用Wireshark进行数据包捕获与保存的最基本流程,更通常的情况下,我们对于要捕获的数据包及其展示、存储可能有一定要求,例如:

  • 我们希望捕获的数据包中对我们有用的包的比例要能更高,这就需要设定一些捕获的过滤规则;
  • 我们希望在捕获数据包的同时将数据包保存到指定的文件中;
  • 我们希望当满足某个条件时,Wireshark会自动停止抓包,而不需要我们手动停止;
  • 我们希望捕获的实时展示最新捕获的数据包,并看到各类网络数据包的数量统计信息;
  • 我们希望将物理层、网络层、传输层的数字地址转换成可读性更好的文字信息;

以上这些需求,都可以通过设置Capture Options来满足,故此,一个相对上一篇博文文更完整的抓包流程是:

[plain] view plain copy print?

  1. “启动软件-->设置捕获选项并开始抓包-->停止抓包-->数据包保存”

其他的步骤基本没变,只是把简单的“选定网卡”进化成了更为复杂的“设定捕获选项”。在这篇博文里,就让我们来了解一下这个Capture Options。

【本篇大部分内容参考Wireshark自带的帮助手册,需要却没有的可以下载《Wireshark用户指南1.10(英文原本)》,或是《Wireshark用户指南老版(中文译本)》】

二、Capture Options(捕获选项)各项的含义与设定

软件启动后,在引导界面中,我们直接点击“Capture”部分下面的Capture Options快捷按钮【第一篇博文的图2最下方】,弹出下图所示的捕获选项窗口,

图2-1 Capture Options(数据包捕获选项)弹窗

通过上图,可以看到,Capture Options弹窗根据设置内容的不同,大致可以分为五个区域【图2-1中分别用五个黑色圆角方框标注】。下面按照从上到下,从左到右的顺序,分区域依次介绍各个选项都有什么涵义,设置与否对我们有何影响。

2.1 Capture[抓包相关设定]

图2-2 数据包捕获相关设定

这个区域的选项都是会对数据包的捕获产生直接影响的,按照自上而下的顺序,具体来说他们包括,

2.1.1 网卡列表

位于此区域最上方,它的作用是显而易见的,你想在哪块网卡上抓包,就勾选该网卡前面的复选框。可多选,至少选一个!

2.1.2 选项:Capture on all interfaces

勾选此选项后,意味着你要Wireshark同时捕获本机所有网卡上的网络数据包【这和你在上方的列表中勾选了所有的网卡是等价的】;反之,则只捕获网卡列表中指定网卡上的数据包。

2.1.3 选项:Use promiscuous mode on all interfaces

勾选此选项后,意味着你要Wireshark在抓包的时候让网卡开启混杂模式。【简单点说,开启混杂模式的网卡可以捕获所有流过该网卡的帧,不开启则只能捕获广播帧以及发给该网卡的帧。更详细的关于以太网卡几种工作模式的介绍,参看《网卡的工作模式》】

2.1.4 按钮:Manage Interfaces

如果你想增、删“网卡列表”里的条目,可以点这个按钮。【其实这里面还可以设置管道以及远程网卡作为数据包来源,我也没太用这功能,就不多说了】

2.1.5 输入框与按钮:Capture Filter

如果你想设置数据包捕获的过滤条件(官方一点,好像多称为过滤器),并且你碰巧对Tcpdump的表达式还有过一点了解,你可以直接在此按钮旁边的输入框中按照语法设置过滤表达式,类似于我在图2-1中输入的:

[plain] view plain copy print?

  1. host 192.168.1.17 and port 110

当然,很可能你对过滤表达式完全不了解,那么你也可以直接点这个按钮,弹出下面这个窗口,里面有些现成的常用过滤器,

图2-3 Capture Filter弹窗

我们从这些可选的过滤器里任意选一条,比方说上图2-3中选中的“IP address
192.168.0.1”,可以在下方看到,“IP address
192.168.0.1”只是过滤器的一个直观、容易理解的名字,它其实对应着过滤表达式“host
192.168.0.1”。图2-3这个弹窗里已经有最简单的,包括“只要IP包”、“只要UDP包”、“只要HTTP包”、“不要ARP包”等最常用的
过滤器。利用它我们还可以增删改一些常用的过滤器,当然前提是你得学习一下怎么写过滤表达式。【由于与Tcpdump之间高度的相似性,想要学习过滤表达
式的语法,可以参考博文《Tcpdump的详细用法》,当然也可以直接下载资料《WinPcap_BPF_Fiter过滤规则设置说明文档.pdf》】

2.1.6 按钮:Compile selected BPFs

这个一开始我也没搞清楚,还以为是要让过滤器生效,必须在写好过滤表达式后点这个,所以就每次都顺手点上一记~~~也是写本文的时候才发现,不点这个也
可以生效……查阅Wireshark自带的帮助手册后明白,它只是一个帮助你把过滤表达式编译成BPF代码形式(看起来有点像汇编代码)的工具而已。你要
是只是用Wireshark,不自己编写基于WinPcap的嗅探工具,我估计应该用不到这个。

2.2 Capture Files[存包相关设定]

图2-4 数据包文件存储相关的设定

这个区域的选项仅当你想要自动存包时才需要设置。实际应用中,有些情况下只是一个简单的临时分析,是不需要存包的;也有些情况是我们先实时捕获放在缓存,先大致看过后再选择性地存文件。这两种情况下,都不用设置这个区域的选项。

2.2.1 输入框:File

简单,直接通过输入或是使用后方的Brose按钮,指定存放的文件名及其完整路径。默认是空白,意味着捕获的数据包存放在默认缓存目录下的临时文件中。

2.2.2 选项:Use pcap-ng format

勾选这个选项,意味着你希望Wireshark存文件时使用pcapng格式【欲知详情,参看http://wiki.wireshark.org/Development/PcapNg】。当同时指定在多块网卡上抓包时,必须使用pcapng格式存文件;出于兼容考虑,单块网卡上的抓包我不建议勾选。

2.2.3 选项:Use multiple files

勾选此选项后,Wireshark会使用多个文件存储数据包;反之,则默认使用单文件存储。使用单文件还是多文件,取决于数据量的大小、你的目的等多个要素。

2.2.4 选项:Next file every N megabytes(s)/minute(s)

如果上面没有勾选“Use multiple files”,则此选项被禁、无效。

       使用多个文件存储时,必须指定切换下一个文件的条件。切换条件有两种形式,一是每当捕获多少流量(默认单位是Mb,也支持更小一点的Kb,以及更大一点的Gb)后切换,另一种是每当捕获间隔多长时间(默认单位分钟,也支持秒、小时、天)后切换。

使用多个文件存储时,两种切换方式至少选其一!

2.2.5 选项:Ring buffer with N files

如果上面没有勾选“Use multiple files”,则此选项被禁、无效。

使用多个文件存储时,如果对文件数量有限制,且允许文件覆盖
可以勾选并设定此选项。这意味着,Wireshark在存包时最多创建N个文件,当达到切换条件需要创建第N+1个文件时,它会直接把捕获的数据包存入到
当前最“老”(生成时间最早)的文件中,从而让最“老”的文件变成最“新”的文件。这就好比建立了一个容量为N的环形缓冲队列。

暂时来说,我的理解,让最“老”的文件变成最“新”的文件的过程是覆盖的过程,如果你倒腾发现本质上是添加或其他机理,请联系我!

2.2.6 选项:Stop capture after n file(s)

如果上面没有勾选“Use multiple files”,则此选项被禁、无效。

使用多个文件存储时,如果对文件数量有限制,且不允许文件覆盖,可以勾选并设定此选项。这意味着,Wireshark在存包时最多创建N个文件,当达到切换条件需要创建第N+1个文件时,它就直接停止抓包。

这种自动停止抓包的方法仅适用于指定使用多个文件存储时。通用的自动停止抓包方法在下一节介绍。

2.3 Stop Capture Automatically After[自动停止抓包设定]

图2-5 自动停止抓包设定

在上一篇文章里,我们是手动停止抓包的。而这个区域的选项可以帮助我们通过设置一些条件来让Wireshark自动停止抓包,需要额外提到的是,这些选项之间不是互斥的,可以勾选多个,他们之间应该是“或”的关系。

2.3.1 选项:N packet(s)

勾选此选项后,Wireshark会在捕获到指定个数的数据包后,会自动停止抓包。

2.3.2 选项:N megabytes(s)

勾选此选项后,Wireshark会在捕获到指定大小的数据流量后,会自动停止抓包。默认流量单位是Mb,也支持更小一点的Kb,以及更大一点的Gb。

2.3.3 选项:N minute(s)

勾选此选项后,Wireshark会以开始捕获为计时起点,经过指定长短的时间后,自动停止抓包。默认时间单位分钟,也支持秒、小时、天。

2.4 Display Options[显示选项设定]

图2-6 显示选项设定

这个区域的选项用来对实时捕获的展示效果施加影响。

2.4.1 选项:Update list of packets in real time

勾选这个选项,会使得Wireshark在抓包时同时开启两个进(线)程,一个进(线)程负责捕获数据包,另一个进(线)程负责实时地解析、展示捕获的数据包;反之,Wireshark就会“一心一意”地抓包,等到停止抓包后,再一次性解析、展示所有捕获的数据包。

显然的是,实时地解析、展示数据包,或多或少都会消耗CPU资源,所以会对捕获性能产生不小的影响,丢包率可能会因此而增大。

2.4.2 选项:Automatic scrolling in live capture

如果上面没有勾选“Update list of packets in real time”,则此选项被禁、无效。

勾选这个选项,会使得Wireshark在开始抓包后,将主窗口中的“数据包列表”子窗口自动滚动到最后一行,以便你随时都能在该子窗口的最底部看到最新捕获的数据包。其实你要是不勾选,自己手动拖一下该子窗口的滚动条也是一样的。

2.4.3 选项:Hide capture info dialog

如果你想对Wireshark抓包时的数据包捕获情况做个大概的了解,那么不要勾选这个选项,Wireshark在抓包的时候会弹出下图所示的概要信息窗口,

图2-7 数据包捕获概要情况弹窗

反之,勾选此选项后,Wireshark则会在抓包时隐藏此弹窗。

2.5 Name Resolution[名称解析相关设定]

图2-8 名称解析相关设定

这个区域的选项用来对展示捕获结果时数据包各层的地址解析、显示效果作出设定。需要说明的是,这些解析结果只是临时性的,如果你把捕获的数据包存下来,Wireshark只会保存最原始的各层地址,而不会保存这些解析结果。

2.5.1 选项:Resolve Mac addresses

勾选此选项后,Wireshark会尝试(但不保证)将MAC地址解析成更易识别的形式,例如:

[plain] view plain copy print?

  1. 01:00:5e:00:35:16 ==> IPv4mcast_00:35:16
  2. 00:26:82:88:45:ac ==> GemtekTe_88:45:ac
  3. 28:c6:8e:19:e9:5b ==> Netgear_19:e9:5b

仔细观察一下,你很容易发现,它其实只解析了MAC地址的前三个字节,后三个字节原封不动的保留在了解析结果里。这种解析的理论依据是,六字节的MAC地址其实可以对半分为两部分:前三个字节由IEEE的注册管理机构统一分配,称为OUI(组织唯一标识符)或是Company_id(公司标识符),一般可以通过这三个字节识别出生产厂商;后三个字节由厂商自行分配,意义不大。

2.5.2 选项:Resolve network-layer names

勾选此选项后,Wireshark会尝试(但不保证)将网络层地址(一般就是IP地址)解析成更易识别的形式(例如域名、主机名)。

它的实现一般是通过调用gethostname()的反向域名查询【参看《DNS中的正向解析与反向解析》】形式,这可能导致两个问题:1.会因查询产生额外的DNS流量,在某些分析过程中,会影响分析结果的准确性;2.会因查询占用系统资源而导致捕获性能受到影响。所以我不建议抓包的时候勾选这个选项,分析的时候可以设置这个。

如果采用普通的阻塞式查询,很多时候会因为查询失败,或是查询比较困难而导致延时等待,从而愈加影响捕获的性能。一定要用的话,最好采用concurrent DNS(同步DNS查询)。

2.5.3 选项:Resolve transport-layer name

勾选此选项后,Wireshark会尽可能(但不保证)将传输层地址(一般就是端口号)解析成其对应的应用层服务。例如:

[plain] view plain copy print?

  1. 80、8080 ==> http
  2. 21 ==> ftp
  3. 23 ==> telnet
  4. 25 ==> smtp
  5. 53 ==> dns
  6. 110 ==> pop3
  7. 443 ==> ssl、tls

这种解析的原理在于,很多常用的服务往往绑定固定的端口号(0~1023),这些端口号一般称为熟知端口号或是系统端口号。【可以参看维基百科
--- TCP/UDP端口列表

2.5.4选项:Use external network name resolver

Wireshark早期版本中没有这个选项及其近似选项。在实际使用中,我个人还没机会体会到这个选项勾选与否的区别;我在的1.10版自带用户指南上也没有找到相关的描述。最后搜了一下,大概弄懂了一点。

添加这个选项的初衷,应该是配合上面的选项“Resolve network-layer
names”使用。我们知道,普通的DNS查询遵循的是本机缓存查询、hosts文件查询、外部查询的先后顺序,如果前两项内部查找失败,就会用到外部查
询,但若是不勾选这个选项,那么Wireshark在解析IP地址对应的主机名或域名的时候,就仅使用内部的查询,失败的话不再尝试外部查询,直接返回失败的结果。

初衷虽是如此,但在实现的时候貌似出了点问题……

本节参考资料:

时间: 2024-12-15 10:39:45

Wireshark入门与进阶系列(二)的相关文章

Wireshark入门与进阶系列(一)

摘自http://blog.csdn.net/howeverpf/article/details/40687049 Wireshark入门与进阶系列(一) “君子生非异也,善假于物也”---荀子 本文由CSDN-蚍蜉撼青松 [主页:http://blog.csdn.net/howeverpf]原创,转载请注明出处! 你在百度上输入关键字“Wireshark.使用.教程”,可以找到一大堆相关的资料.那么问题来了, 为什么我还要写这个系列的文章? 前面你能搜到的那些资料,大部分可能存在两个小问题:

Wireshark入门与进阶---Capture Options各项的含义与设定

Wireshark入门与进阶系列(二) "君子生非异也,善假于物也"---荀子 本文由CSDN-蚍蜉撼青松 [主页:http://blog.csdn.net/howeverpf]原创,转载请注明出处! 上一篇文章我们讲了使用Wireshark进行数据包捕获与保存的最基本流程,更通常的情况下,我们对于要捕获的数据包及其展示.存储可能有一定要求,例如: 我们希望捕获的数据包中对我们有用的包的比例要能更高,这就需要设定一些捕获的过滤规则: 我们希望在捕获数据包的同时将数据包保存到指定的文件中

Wireshark入门与进阶---数据包捕获与保存的最基本流程

Wireshark入门与进阶系列(一) 本文由CSDN-蚍蜉撼青松 [主页:http://blog.csdn.net/howeverpf]原创,转载请注明出处! 你在百度上输入关键字"Wireshark.使用.教程",可以找到一大堆相关的资料.那么问题来了, 为什么我还要写这个系列的文章? 前面你能搜到的那些资料,大部分可能存在两个小问题: 网上大部分资料引自(or译自)Wireshark官方的用户手册,或使用类似于用户手册的写法,它们很详细的告诉你Wireshark有哪些窗口.菜单.

《jmeter:菜鸟入门到进阶系列》

jmeter是我从事软件测试工作以来接触的第一个测试工具,也是耗费时间精力最多的一个工具,当然,学习jmeter过程中,由于知识储备不够,也顺带学习了很多其他相关的一些知识. 一直有个想法,就是把jmeter写成一个完整的系列,包括元件构成.用法.不同组合能实现什么功能等知识点,但限于时间和精力以及学习计划等原因,暂时只能写到这里了. 以后会写一些利用jmeter来实现接口自动化等扩展性的博客,但现在,只能到这里了... 这一篇博客,就当做一个阶段性的总结和jmeter目录索引吧... 1.基础

Spring Boot进阶系列二

这边文章主要实战如何使用Mybatis以及整合Redis缓存,数据第一次读取从数据库,后续的访问则从缓存中读取数据. 1.0 Mybatis MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录. MyBa

SQL Server 扩展事件(Extented Events)从入门到进阶(4)——扩展事件引擎——基本概念

本文属于 SQL Server 扩展事件(Extented Events)从入门到进阶 系列 在第一二节中,我们创建了一些简单的.类似典型SQL Trace的扩展事件会话.在此过程中,介绍了很多扩展事件基础组件,包括事件.谓词.操作和目标.本节,将对扩展事件引擎.架构和基本组件做更加深入的了解.通过这些讲解,可以大概了解到为什么扩展事件相对于SQL Trace来说更加低开销.另外,还会延时如何设计事件会话从而最小化事件收集过程中的不必要开销,即使这些事件会话会很复杂. 事件数据收集生命周期: 扩

SpringCloud从入门到进阶(三)——路由接入Zuul

内容 SpringBoot整合SpringCloud的Eureka.Zuul等组件,快速实现简单易懂且具有服务熔断.负载均衡的分布式架构1.0,体验微服务的魅力. 版本 IDE:IDEA 2017.2.2 x64 JDK:1.8.0_171 manve:3.3.3 SpringBoot:1.5.9.RELEASE SpringCloud:Dalston.SR1 适合人群 ?Java开发人员 说明 转载请说明出处:SpringCloud从入门到进阶(三)--路由接入Zuul 参考 Linux入门实

SQL Server AlwaysON从入门到进阶(1)——何为AlwaysON?

本文属于SQL Server AlwaysON从入门到进阶系列文章 本文原文出自Stairway to AlwaysOn系列文章.根据工作需要在学习过程中顺带翻译以供参考.系列文章包含: SQL Server AlwaysON从入门到进阶(1)--何为AlwaysON? SQL Server AlwaysON从入门到进阶(2)--存储 SQL Server AlwaysON从入门到进阶(3)--基础架构 SQL Server AlwaysON从入门到进阶(4)--分析和部署Windows Ser

SQL Server AlwaysON从入门到进阶(2)——存储

本文属于SQL Server AlwaysON从入门到进阶系列文章 前言: 本节讲解关于SQL Server 存储方面的内容,相对于其他小节而言这节比较短.本节会提供一些关于使用群集或者非群集系统过程中对存储的利用建议.当然,重点还是集中在对于一个标准的AlwaysOn可用组配置过程中,对存储的选择和配置上面. AlwaysOn的部署首先建立在一个Windows Server Failover Cluster(WSFC)上.并且每个服务器通常有一个独立的SQL Server实例.另外,每个服务器