Wireshark的使用

Wireshark介绍

在正式使用Wireshark进行抓包分析之前,先来了解一下这款软件主窗口界面中的各个功能。
在这里插入图片描述
从上到下依次为:

  • 标题栏:用于显示所分析的抓包文件的名称、捕获的设备名称以及Wireshark的 版本号。
  • 菜单栏:Wireshark的标准菜单栏。
  • 工具栏:常用功能的快捷图标按钮。
  • 筛选区域:我们在实际的数据包分析中,可能在很短的时间内就能够捕获到成
    千上万的数据包信息。这个时候就需要使用这里的筛选器,加上一定的条件,筛选掉我们并不关心的数据包,从而更好地进行分析。
  • Packet List面板:显示每个数据帧的摘要。需要强调的是,其实这里所捕获
    的其实就是数据帧,但是出于表达的习惯,大部分时候,会以“数据包”的叫法来代替“数据帧”以及“分段”。这里采用表格的形式列出了当前捕获文件中的所有数据包,其中包括了数据包序号、数据包捕获的相对时间、数据包的源地址和目标地址、数据包的协议以及在数据包中找到的概况信息等。
  • Packet Details面板:分析数据包的详细信息。这个面板分层次地显示了一个
    数据包中的内容,并且可以通过展开或是收缩来显示这个数据包中所捕获的全部内容。
  • Packet Bytes面板:以十六进制和ASCII码的形式显示数据包的内容。这里显
    示了一个数据包未经处理的原始样子,也就是在链路上传播时的样子。
  • 状态栏:包含有专家信息、注释、包的数量和Profile。

数据包的三个重要术语
  帧、包、段
  数据帧的起始点和目的点都是数据的链路层,数据包的起始点和目的是网络层,而数据段通常是指起始和目的是传输层的信息单元。

认识数据包
举例:
在这里插入图片描述
上图主要展示了以下五种协议的信息:

  • Frame:物理层数据帧的情况。
  • Ethernet II:数据链路层以太网帧头部的信息。
  • Internet Protocol Version 4:网络层IP包的头部信息。
  • Transmission Control Protocol:传输层的数据段头部信息,这里显示的是 TCP协议。
  • Hypertext Transfer Protocol:应用层信息,这里显示的是HTTP协议。 下面依据上述所捕获到的数据包的具体情况,对上述前四层的内容进行分析。

物理层数据帧情况
Frame 14: 333 bytes on wire (2664 bits), 333 bytes captured (2664 bits) on interface 0
#14号数据帧,线路上有333个字节,实际捕获333个字节。
Interface id: 0 (wlan0)
#接口id
Encapsulation type: Ethernet (1)
#封装类型
Arrival Time: May 28, 2019 12:28:47.474054634 CST 中国标准时间
#捕获日期和时间
[Time shift for this packet: 0.00000000 seconds]
epoch time: 1559017727.474054634 seconds
[Time delta from previous captured frame: 0.000156412 seconds]
#当前数据帧与前一个数据帧的时间间隔。
[Time delta from previous displayed frame: 0.311034000 seconds]
[Time since reference or first frame: 10.449670000 seconds]
#当前数据包与第一个数据包的时间间隔
Frame Number: 3934
#帧序号
Frame Length: 310 bytes (2480 bits)
#帧长度
Capture Length: 310 bytes (2480 bits)
#捕获长度
[Frame is marked: False]
#此帧是否做了标记:否
[Frame is ignored: False]
#此帧是否被忽略:否
[Protocols in frame: eth:ethertype:ip:tcp:http:image-gif]
#帧内封装的协议层次结构
[Number of per-protocol-data: 1]
[Hypertext Transfer Protocol, key 0]
[Coloring Rule Name: HTTP]
#着色标记的协议名称
[Coloring Rule String: http || tcp.port == 80 || http2]
#着色规则显示的字符串

数据链路层以太网帧头部的信息:
Ethernet II, Src: Qihoo360_61:0b:0c (d0:fa:1d:61:0b:0c), Dst: Giga-Byt_d4:be:c9 (94??80:d4:be:c9)
Destination: Giga-Byt_d4:be:c9 (94??80:d4:be:c9)
#目标MAC地址
Source: Qihoo360_61:0b:0c (d0:fa:1d:61:0b:0c)
#源MAC地址
Type: IP (0x0800)
#需要说明的是,因为MAC地址的前3个字节表示厂商。而“d0:fa:1d”以及“94??80”被分# 配给了奇虎以及技嘉公司。所以上述的源MAC地址以及目标MAC地址的开头明明是“d0:fa:1d”以及“94??80”,但是Wireshark上显示出来的却是“Qihoo360”以及“Giga-Byt”。这是全球统一标准,所以Wireshark干脆显示出厂商名称了。

网络层IP包的头部信息:
Internet Protocol Version 4, Src: 220.181.7.190 (220.181.7.190), Dst:
192.168.0.14 (192.168.0.14)
Version: 4
#互联网协议IPv4
Header Length: 20 bytes
#IP包头部的长度
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00:
Not-ECT (Not ECN-Capable Transport))
#差分服务字段
Total Length: 296
#IP包的总长度
Identification: 0x2863 (10339)
#标志字段
Flags: 0x02 (Don’t Fragment)
#标记字段
Fragment offset: 0
#分片偏移
Time to live: 49
#生存期
Protocol: TCP (6)
#当前数据包所封装的上层协议为TCP协议
Header checksum: 0x7b43 [validation disabled]
#头部数据的校验和
Source: 220.181.7.190 (220.181.7.190)
#源IP地址
Destination: 192.168.0.14 (192.168.0.14)
#目标IP地址

传输层TCP数据段的头部信息:
Transmission Control Protocol, Src Port: 80 (80), Dst Port: 2488
(2488), Seq: 422, Ack: 3024, Len: 256
Source Port: 80 (80)
#源端口号
Destination Port: 2488 (2488)
#目标端口号
[Stream index: 16]
[TCP Segment Len: 256]
Sequence number: 422 (relative sequence number)
#序列号(相对序列号)
[Next sequence number: 678 (relative sequence number)]
#下一个序列号(相对序列号)
Acknowledgment number: 3024 (relative ack number)
#确认序列号
Header Length: 20 bytes
#头部长度
… 0000 0001 1000 = Flags: 0x018 (PSH, ACK)
#TCP标记字段
Window size value: 162
#流量控制的窗口大小
Checksum: 0x6fc4 [validation disabled]
#TCP数据段的校验和

Wireshark的表格功能

统计网络端点信息
  在网络中,如果想让通信得到正常的执行,那么就必须至少拥有两台设备或者说两个端点(endPoint)进行数据的交互操作。所谓的端点,就是指网络上用于发送或者接受数据的设备。比如在基于TCP/IP协议的通信中,就包含有两个端点:发送方和接收方的IP地址,结合下图可以发现,对于捕获的第14个数据包来说,发送方的IP地址是192.168.0.4,接收方的IP地址是124.192.132.236,这就是两个端点。
在这里插入图片描述
而在数据链路层,通信则是基于两台主机中安装的网卡和它们的MAC地址进行的。分析第14号数据包,在Packet Details面板中展开Ethernet II,可以看到发送方的地址是e4:70:b8:11:26:5a,而接收方的地址是04:95:e6:3a:16:e8,这两个地址就是通信中的端点。
在这里插入图片描述
在实际分析过程中,面对网络流量的时候,可以将问题定位到网络中的一个特定的端点上。可以在菜单栏中选择"Statistics"->"Endpoints"来打开Endpoints窗口:在这里插入图片描述
可以看到,这个窗口给出了端点中的非常多的有用数据。其中顶部的选项卡中,显示了当前捕获数据包中所有被支持的和识别的端点,每个选项卡都表示不同的协议。以Enternet选项卡为例,每列所表示的信息为:

  • Address:端点的地址
  • Packets:在捕获文件中包含该地址的数据包数量。
  • Bytes:数据包的字节数据。
  • Tx Packets:发送的数据包数量。
  • Tx Bytes:发送的数据包的字节数。
  • Rx Packets:接收的数据包数量。
  • Rx Bytes:接收的字节数
    在这个窗口中还包含有“Name resolution”的多选框,它可以在端点窗口中打开名字解析功能。

查看网络会话信息
  所谓的网络会话(conversation)可以理解为两个人之间的谈话,只不过网络会话描述的是两台主机(端点)之间进行的通信活动。对于TCP协议来说,最常见的会话就是连接是建立三次握手。可以在菜单栏"Statistics"->“Conversations"来打开Conversations窗口。
在这里插入图片描述
与Endpoints窗口相同,Conversations窗口中所列出的会话同样以不同的协议分布在不同的选项卡中,这可以通过顶部的选项卡进行切换。右击单击一个会话,选择"Apply as Filter”->"Selected"就可以创建一些非常使用的筛选器,比如显示由设备A发出的所有数据,设备B收到的所有数据,或者设备A与B之间的所有通信数据等。一旦选择了其中的某一项筛选条件,那么回到Wireshark主界面时,在筛选条件输入框中,自动会添加上刚才的条件:
在这里插入图片描述使用端点和会话窗口分析网络问题
  在排查网络问题的过程中,端点和会话窗口往往扮演非常重要的角色。当我们试图寻找网络中大规模流量的源头,或者查找哪台服务器最为活跃,这两个窗口往往就能告诉我们一切。

协议的分层统计
  当我们在分析一个很大的捕获文件时,往往想要知道文件中协议的分布情况,或者想要获取协议的多层结构信息。为了达到这个目的,可以利用Wireshark的"协议分层统计"功能,它是对网络进行基准分析的强有力的工具。例如:假设我们的网络中的ARP流量通常占百分之十,但某天经过抓包分析发现ARP的流量涨到了百分之五十,那么就可以知道一定是某个地方出了问题。此时,在菜单栏中选择"Statistics"->“Protocol Hierarchy”
在这里插入图片描述
这个对话框显示了捕获的文件中所包含的所有协议的树状分支。其中的每一行都
包含一个协议层次的统计值,每列的含义如下:

  • Protocol:协议的名称
  • %Packets:含有该协议的数据包的数量在捕获文件的所有数据包中所占的 比例
  • Packets:含有该协议的数据包的数量
  • %Bytes:含有该协议的字节数目在捕获文件的所有字节数目中所占的比例
  • Bytes:含有该协议的字节数
  • MBits/s:协议的带宽(相对于捕获时间)

想要获取更为详细的说明,也可以点击左下角 的“Help”按钮,从而打开帮助文档。

Wireshark特性
  Wireshark最为强大的功能之一就是协议解析功能,也是我们最为常用的功能。尽管我们往往不会注意这个功能,但是它却一直实实在在地影响着我们的分析过程。协议的解析是由Wireshark的协议解析器完成的,它可以将网络上获取的原始二进制数据包进行拆分,变成相关协议的不同区段,以便于我们的分析。比如我们之前接触过多次的TCP协议,一旦Wireshark捕获到该协议的数据包,就会自动分析,并且以TCP数据包的格式显示出来,告诉我们每一个数据段的意义。
  我们可以将Wireshark的协议解析器看作是网络原始数据流和Wireshark软件之间的翻译器。如果想要让Wireshark支持某个协议,那么它就必须拥有该协议的解析器。当然如果我们在实际的分析过程中遇到了新的协议,也可以使用C语言或者Python来自己编写一个解析程序。
  但是需要注意的是,Wireshark在进行协议解析的时候并不见得每次都会选择出正确的解析器,尤其是当网络上的一个协议使用了不同于标准的配置时,往往会出现错误的协议解析。一旦遇到这种情况,我们就需要更改Wireshark的协议解析方式。
  可以用鼠标的右键单击需要转换的数据包,选择"Decode As",就会弹出一个新的对话框。
  由于Wireshark是一款开源的软件,因此我们可以分析该软件的源代码来找出协议解析错误的原因。在其官方网站上,我们就可以下载到软件的源码。比如对于协议解析,我们可以在其epan/dissectors文件夹中找到协议解析器程序。每一个解析器程序都以packet-protocolname.c,即“数据包-协议名称”的形式命名。这些文件都有良好的注释,如果想深入研究Wireshark的原理,可以仔细研究一下这些源代码,从而在未来的分析中,开发出自己想要的功能。

追踪TCP Stream
  TCP流量可以说是我们日常分析中遇到最多的数据包了。而Wireshark为了方便我们分析,可以将TCP流量重组成易于阅读的形式,而不是一小块一小块地查看。右键单击任意一个TCP或HTTP数据包,并选择"Follow TCp Stream",此时TCP流就会在一个新窗口中显示出来:
在这里插入图片描述
在这里我们可以清晰地看到两台主机之间的绝大多数通信。

查看数据包的长度
  在使用Wireshark进行实际的分析时,往往可以从一组或者一个数据包的大小中,获取很多的信息。一般来说,以太网上的帧的大小为1518个字节,除去以太网、IP以及TCP等的头部信息,还剩下1460个字节,这些字节可以供应用层协议来使用。知道了这些,我们就可以通过一个捕获文件中数据包长度的分布情况,来对流量进行分析。

了解专家信息
  整个网络中的TCP信息,都会被Wireshark的专家信息所记录,如丢包或者网络阻塞等。针对于每个协议的解析器,都会有一些专家信息,我们在分析的时候,可以通过专家信息窗口来查看使用该协议的数据包中一些特定状态的错误、警告以及提示等信息。
专家信息窗口可以通过菜单栏的“Analyze”->“Expert Info”来打开:

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Wireshark 是一个开源的网络协议分析工具,它可以用于捕获和分析网络流量。以下是一些使用 Wireshark 的基本步骤: 1. 下载和安装:首先,你需要从 Wireshark 官方网站(https://www.wireshark.org/)下载并安装适合你操作系统的版本。 2. 打开 Wireshark:安装完成后,打开 Wireshark 应用程序。 3. 选择网络接口:在 Wireshark 主界面的上方,可以看到一个接口列表。选择你想要捕获流量的网络接口,例如无线网卡或以太网卡。 4. 开始捕获:点击“开始捕获”按钮即可开始捕获流量。你可以选择设置捕获过滤器来过滤特定的流量类型或目标。 5. 分析捕获的数据:Wireshark 会以实时模式显示捕获的数据包。你可以通过点击每个数据包来查看其详细信息,包括源和目标地址、协议类型、载荷等。 6. 应用过滤器:Wireshark 提供了强大的过滤功能,可以帮助你仅显示感兴趣的数据包。你可以使用过滤表达式或预设过滤器来筛选数据。 7. 分析协议:Wireshark 可以解析和显示多种协议,包括 TCP、UDP、HTTP、DNS 等。通过查看协议分析,你可以了解网络通信中的具体细节和问题。 8. 导出和保存数据:如果你想保存捕获的数据供以后分析使用,可以将数据导出为 pcap 文件格式。 以上是使用 Wireshark 的基本步骤,你可以根据自己的需求和兴趣进一步探索 Wireshark 的高级功能和特性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值