学习笔记

1、Wireshark简介

Wireshark是一款网络和协议分析工具

Wireshark最基本的功能是理解网络抓包的信息。Wireshark一手包办了对抓包数据的解析,并把数据以一个个分组包的形式,清晰地呈现在我们面前。

从技术上讲,分组数据包根据数据解析在哪一层又分为:

  • 数据帧(Frame):起始点和目的点都是数据链路层
  • 数据包(Packet):起始点和目的点都是网络层
  • 数据报(Datagram):使用UDP的、起始点和终止点都是传输层
  • 数据段(Segment):使用TCP的、起始点和目的点都是传输层

2、Wireshark工作原理

  • Wireshark首先通过网卡捕获数据,然后把捕获到的数据按照层级解析为帧、段或数据报,识别每一层数据从哪里开始,到哪里结束。
  • Wireshark根据地址、协议、数据等上下文信息来解析和展示数据。
  • Wireshark里负责解析数据包的是它的解析器(dissectors)模块

在无线网络的捕获模式下,为了让Wireshark查看和捕获网段内全部的数据包,而不只是它所在机器的数据包,需要将网卡设置为promiscuous模式(监控模式)。

3、Wireshark应用场景

  • 适合
    • 查找有明确网络问题的故障源头
    • 在通信设备之间,过滤出特定的协议或数据流
    • 要分析网络里的某个时间段、某个协议标签、某个特定二进制数据
  • 不适合
    • 判断哪些设备和协议最耗流量
    • 大象的网络流量示意图
    • 追踪两台设备之间的对话

4、Wireshark用户界面

Wireshark界面

独立思考

1. 网卡在promiscuous模式下,能否捕捉非本网段下的数据包?

promiscuous模式的含义是指,一台机器的网卡能够接受所有经过他的数据包,而不论目标地址是不是它。也就是说只要数据包能到达它,它就可以抓到数据包。那么可以分为以下情况:

  • 有线网络,只要在同一网段下,即在路由器一个端口下(三层交换机还能划分vlan,三层交换机也可以做DHCP服务器),我们能抓到发到我们主机端口的数据包,即无论目的地址是不是我们自己,只要能到我们主机的端口的都能被捕获。
  • 有线网络,并不是能ping通我们的主机的信息都能被我们抓到。例如我们能ping通腾讯云上的服务器,但腾讯云服务器抓不到我们发送的全部包。即能ping通,仅代表两者之间网络可达,但并不一定能抓取全部通信包。
  • 无线网络,无线网络抓包主要看信道,而不是看网段,只要定位到某一个信道,那么这个信道下的802.11包都可以捕获。

Wireshark抓包的流程中第一步就是通过网卡捕获数据,那么抓到的数据一定要能经过我们的网卡才能被捕获,有线网络由于受介质限制只能抓到本网段/本VLAN下的数据包,无线网络由于介质是信道所以可以抓到本信道下所有的数据包。

一家公司如果有很多大楼,每个大楼中通常有很多的AP,用户的终端设备通过接入AP来接入网络,这些AP可能接入一个汇聚路由器,之后汇聚路由器上接一个AC。汇聚路由器为三层交换机,这样可以做到划分VLAN。AC可以单独布置,也可以作为路由器的一个模块,而且它也可以划分VLAN,不过它下接了一个汇聚路由器,可以用汇聚路由器进行划分。至于一个大楼中不采用路由器,是因为大型路由器造价高昂。

2. 不同VLAN下的同一网段可以通信嘛?

VLAN是二层的概念,只是对二层加上了tag,做到了隔离通信。

一个二层网络可以被划分为多个不同的广播域,一个广播域对应一个特定的用户组,默认情况下不同的广播域是相互隔离的,这样的一个广播域成为一个VLAN。

所以不同VLAN下的同一网段一般情况下不能互相通信。

3. 为什么Wireshark不适合追踪两台设备的对话、给出网络流量示意图?

由问题一可知,想要抓到流量需要在能够抓到包的环境下,这一点就已经很难满足。如果这一点满足了,当自己的设备启用监听模式,抓到的数据包量是巨大的,那么处理过程中就极有可能没有足够时间处理所有的包,导致跟踪过程中丢失部分数据包,这是因为这些数据包很少,而总数据包量很大,跟踪这些很难抓到的包无异于大海捞针。

网络流量示意图是对网络流量的测绘,一般在网关上会有对流量的统计,Wireshark本身缺少统计功能,而且Wireshark一般用于已经掌握很多信息之后的检测工作,当手中掌握信息很少时,使用Wireshark进行统计会对抓包机器产生巨大的压力,更何况要进行网络流量的统计。网关则是每个数据包的必经之路,每次只需检测部分信息统计之后放行即可,Wireshark还需要对地址、协议、数据等上下文进行分析,会由于进行解析而产生极大的运算量。

产生过的疑问

  1. 网卡在promiscuous模式下,能否捕捉无线网络中非本网段下的数据包?
  2. 不同VLAN下的同一网段可以通信嘛?
  3. 为什么Wireshark不适合追踪两台设备的对话、给出网络流量示意图?