Wireshark网络抓包分析使用详解

序言

之前学计网还有前几天备考华为 ICT 网络赛道时都有了解认识 Wireshark,但一直没怎么专门去用过,也没去系统学习过,就想趁着备考的网络相关知识还没忘光,先来系统学下整理点笔记~

什么是抓包?抓包就是将网络传输发送与接收的数据包进行截获、分析、重发、编辑、转存等操作,也用来检查网络安全。在我们做接口测试的时候,经常需要验证发送的消息是否正确,或者在出现问题的时候,查看手机客户端发送给 server 端的包内容是否正确,就需要用到抓包工具。而工程师和程序常用的抓包工具有哪些呢?

Sniffmaster 是在 Windows ,mac和linux上运行的程序,专门用来捕获 HTTP , HTTPS和tcp,udp 的;Wireshark 能获取各类网络协议包,但是不能解密所以 Wireshark 看不懂 HTTPS 中的内容,可以运行在 Windows、Linux 和 Mac OS 上;Linux 还有个轻量级的命令行抓包工具是 tcpdump 。本人学过一点 Linux 但没了解 mac OS 这边,因此本文是主要重点分析 Wireshark,然后简单介绍 Fiddler 和 tcpdump 的使用。

学习之前最好先了解计网的网络协议和分包 等核心知识,便于理解:

一、Wireshark

1、Wireshark 认识

(1)基本信息

Wireshark 是目前最流行、功能强大的网络协议图形化分析工具 ,用于捕获和分析网络数据包,以深入了解网络流量,广泛应用于网络故障诊断、安全分析、软件开发和学习网络协议等场景。

  • 开发者 :由 Gerald Combs 开发,现由社区和 Wireshark 基金会维护。
  • 开源 :Wireshark 是免费且开源的软件,支持多种平台(Windows、macOS、Linux 等)。
  • 官网 :https://www.wireshark.org/
  • 支持的协议 :Wireshark 支持数百种网络协议(如 HTTP、TCP、UDP、DNS、SSL/TLS 等),并不断更新支持新协议。

(2)Wireshark 的功能

  • 数据包捕获 :捕获通过网络接口传输的数据包或实时流量,支持有线、无线、蓝牙等多种类型的网络。
  • 协议解码 :提供对网络协议的解码和详细分析。
  • 数据包分析 :允许查看数据包的各层内容(链路层、网络层、传输层和应用层)并支持检测和分析网络异常。
  • 数据过滤 :在捕获数据时仅抓取特定条件的流量;在已捕获的数据中筛选感兴趣的内容。
  • 图形化展示 :提供网络流量统计图、I/O 图、协议分布图等,帮助用户直观分析流量。
  • 数据导出与共享 :数据捕获可以保存为多种格式,如 .pcap、.csv 等,可以被其他网络分析工具读取。

(3)Wireshark 抓包捕获原理

Wireshark 的抓包功能依赖底层的数据链路层 访问权限,使用WinPCAP/Npcap 作为接口直接与网卡进行数据报文交换**。使用的环境大致分为两种,一种是电脑直连网络的单机环境,另外一种就是应用比较多的即连接交换机的网络环境。

单机情况 :Wireshark 直接抓取本机网卡的网络流量,默认正常工作模式,适用于分析本地通信;

交换机情况 :Wireshark 通过端口镜像ARP 欺骗 等方式获取局域网中的网络流量。

  • 端口镜像:利用交换机的接口作为镜像端口 SPAN,将局域网指定接口或 VLAN 的流量复制到镜像端口,Wireshark 运行在连接镜像端口的电脑上,从而可以捕获这里的数据流量(无法抓取加密流量)。
  • ARP 欺骗:使用工具(如 EttercapArpspoof )发送伪造的 ARP 响应,欺骗局域网中的目标设备将其流量发送到攻击者的设备,Wireshark 伪装成中间人(MITM)捕获流量后再将数据转发给真正的网关。

Wireshark 的捕获机制是监听并复制数据包流经指定接口的数据 供分析使用。

  • 监听指定接口的数据流 :Wireshark 会监控用户选择的网络接口(以太网、Wi-Fi 等)上的数据流。
  • 复制数据包到本地分析 :Wireshark 不会对网络上的实际数据包产生影响,而是将通过接口捕获到的数据包复制到本地内存中,并将其按照时间顺序记录。捕获到的数据包会被存储在内存或临时文件中,并可保存为 .pcap 文件供后续分析,若选不保存则是删除本地复制的数据包无法恢复。

(4)Wireshark 捕获主要模式(决定网卡能够接收到的数据包范围

正常模式 (Normal Mode):网卡只会捕获发送给自身的特定数据包如单播、广播和多播数据包,适合抓取与主机直接相关的流量排查本地问题

混杂模式 (Promiscuous Mode):网卡会捕获经过网络接口的所有数据包 ,可用于分析局域网内的整体通信流量 ,能查看其他主机的通信。

监视模式 (Monitor Mode):主要用于无线网络分析 802.11 协议,能够截获未与网卡关联的所有无线数据帧 (包括管理帧、控制帧和数据帧),用于调试 Wi-Fi 网络问题并测试无线网络的安全性。

(5)Wireshark 的特点

  • 跨平台支持 :支持 Windows、macOS、Linux 等操作系统。
  • 协议支持广泛 :Wireshark 支持从常见的 HTTP、DNS 到专有的工业协议。
  • 用户友好界面 :提供直观的 GUI 和强大的过滤器系统。
  • 可扩展性 :支持通过 Lua 编写插件,扩展 Wireshark 的功能。
  • 实时捕获与离线分析 :既可实时捕获流量,也可分析离线的捕获文件。

(6)安装下载

官网下载地址:Wireshark · Go Deep

下载安装 Windows x64 版本

下载完成后接着一路按照软件提示 Next 安装即可。

2、Wireshark 界面详解(Windows)

(1)Wireshark 界面认识

打开 Wireshark,主界面如下:

(2)接口列表详细分析

选择菜单栏上的“捕获”点击“选项”可以查看所有可用接口详细配置信息选项:

Wireshark 显示的捕获接口信息主要包括以下列

  • 接口名称 :每个网络接口的名称(如“本地连接 *数字”)。
  • 流量 :实时显示当前接口上的流量活动(波动的流量曲线)。
  • 链路层 :接口使用的链路层协议类型(如 Ethernet)。
  • 混杂模式 :是否启用混杂模式以捕获接口上所有的网络流量。
  • 捕获长度缓冲区监控模式 :Wireshark 捕获的相关设置和当前状态。

Wireshark 显示的各类接口的详细介绍

本地连接 数字* ”接口通常是 Windows 系统中虚拟接口或未激活的网络接口 ,可以通过设备管理器禁用。

vEthernet (WSL) ”是 WSL 创建的虚拟网络接口,用于连接 WSL 环境与主机网络并监控 WSL 应用产生的流量,IP 地址为 172.17.128.1,这通常是 WSL 的虚拟网络子网范围。

WLAN ”接口是无线网络适配器(Wi-Fi 网卡),IP 地址 192.168.2.103,用于捕获 Wi-Fi 网络中的流量。

以太网2 ”可能是本机的物理有线网卡(Ethernet),IP 地址 192.168.56.1,这通常是虚拟化软件(如 VirtualBox、VMware)创建的虚拟网络适配器,常用于虚拟机通信。

vEthernet (Default Switch) ”是 Hyper-V 虚拟化环境创建的默认交换机接口,IP 地址 172.19.176.1,通常是 Hyper-V 虚拟网络的默认子网,用于捕获 Hyper-V 虚拟机与主机或网络之间的通信流量。

Adapter for loopback traffic capture ”是环回接口,IP 地址 127.0.0.1,用于捕获本地通信流量。

Raw IP ”表示直接捕获 IP 层流量,而不依赖具体的链路层协议。

这些接口主要用于远程捕获或特定环境下的网络数据分析:

Cisco Remote Capture ”接口用于与 Cisco 设备(如路由器或交换机) 建立远程连接,从设备中抓取网络数据包,可以分析其流量或调试网络配置问题。要求有管理员权限配置 Cisco 设备并启用远程数据捕获功能。

Event Tracing for Windows (ETW) Reader ”接口可以捕获与 Windows 内核相关的网络流量或事件信息 ,利用 Windows 系统的事件跟踪机制提供对系统内部网络事件的捕获能力。

Random Packet Generator ”是一个模拟接口,用于生成随机的网络数据包,不涉及实际的网络通信 ,仅用于测试或验证数据包解码功能,常用于开发者或协议分析。

SSH Remote Capture ”通过 SSH 协议 连接远程设备,从中捕获数据包。

UDP Listener Remote Capture ”接口用于监听来自远程设备通过 UDP 协议发送的流量

Wi-Fi Remote Capture ”接口用于远程捕获 Wi-Fi 网络 流量,用于无线网络性能分析或调试。

(3)双击“WLAN”后进入如下页面开始抓包:

图示以 WLAN 抓 TCP 数据包为例

左上角红框点击即停止抓包,最左上角“文件”选择“保存”即可以保存抓包的数据,这是最基础的抓包。

从上图可知 Wireshark 操作的主界面包含 6 个部分:

  • 菜单栏:用于调试、配置
  • 工具栏:常用功能的快捷方式
  • 过滤栏:指定过滤条件过滤数据包,如上图过滤位置选了 tcp 筛选数据包
  • 数据包列表:核心区域,每一行就是一个数据包
  • 数据包详情:数据包的详细数据
  • 数据包字节:数据包对应的十六进制字节流和 ASCII 码

(4)菜单栏与工具栏与过滤栏

菜单栏位于主界面的顶部,提供全面的调试和配置选项 ,包括捕获、分析、统计和导出。

  • File(文件): 打开/保存捕获文件、导出数据包或退出程序。
  • Edit(编辑): 配置首选项、搜索数据包或清除屏幕。
  • View(视图): 定制界面布局,例如显示/隐藏工具栏、过滤栏等。
  • Capture(捕获): 设置捕获参数(选择网络接口、过滤规则等),并启动/停止捕获。
  • Analyze(分析): 应用显示过滤器、启用协议解析器或重新组装流。
  • Statistics(统计): 查看网络统计(如 IO 图表、协议层统计、端点分析等)。
  • Telephony(电话): 分析 VoIP 和 SIP 协议的流量(如 RTP 流、呼叫分析)。
  • Help(帮助): 查看帮助文档、协议参考以及关于 Wireshark 的信息。

工具栏位于菜单栏下方,提供一些常用功能的快捷方式 ,方便用户快速操作。

  • Start(开始捕获): 开始实时捕获网络流量。
  • Stop(停止捕获): 停止当前捕获。
  • Open(打开): 加载保存的捕获文件。
  • Save(保存): 将当前捕获会话保存为 .pcap 或其他格式。
  • 捕获接口选择: 选择要监控的网络接口。
  • 过滤: 应用过滤条件快速缩小分析范围。
  • 流重组: 快速查看 TCP 或 UDP 的上下文流量。
  • 其他: 包括统计功能、清除显示、显示或隐藏面板等。

过滤栏位于工具栏下方,用于设置过滤条件进行数据包列表过滤 ,支持多种形式过滤并实时显示过滤器是否有效(输入框变为绿色表示有效,红色表示无效)。

  • 基础协议 : 如 tcp、udp、icmp。
  • 条件组合 : 使用逻辑运算符如 and、or、not。
  • 字段过滤 : 如 ip.src == 192.168.1.1(过滤源 IP 是 192.168.1.1 的数据包)。

(5)数据包列表 Packet List Pane

按时间顺序排列显示捕获到的数据包 ,每一行代表一个数据包,每个数据包包含编号、时间戳、源地址、目标地址、协议、长度以及数据包信息。不同协议的数据包使用了不同的颜色区分显示,可以在菜单栏“视图”的“着色规则”里查看。

  • 编号(No.): 数据包的序号,从 1 开始。
  • 时间(Time): 数据包捕获的时间戳(相对时间或绝对时间,用户可配置)。
  • 源地址(Source): 数据包的源 IP 地址或主机名。
  • 目的地址(Destination): 数据包的目的 IP 地址或主机名。
  • 协议(Protocol): 数据包使用的协议(如 TCP、UDP、HTTP)。
  • 长度(Length): 数据包的大小(以字节为单位)。
  • 信息(Info): 数据包的简要信息(如 HTTP 请求类型、TCP 标志等)。

(6)数据包详情 Packet Details Pane

位于数据包列表下方,用于显示当前选中的数据包的详细协议层次结构解析信息

此过滤的是 tcp 所以最高到传输层

  • Frame(帧): 显示数据包的物理层基本信息(捕获时间、长度等)。
  • Ethernet(以太网): 解析数据链路层以太网帧头部信息(MAC 地址、帧类型)。
  • IP(网络层): 显示 IP 地址、TTL、标志位等。
  • TCP/UDP(传输层): 显示端口号、序列号等。
  • 应用层协议: 如 HTTP、DNS、TLS 的具体内容。

(7)数据包字节 Dissector Pane

位于界面的最下方或侧右边,显示当前选中数据包的原始数据字节流 ,可以检查协议字段的实际值。

字节流点击十六进制部分会和对应的ASCII部分的内容高亮

  • 十六进制视图: 显示数据包的二进制内容,每个字节以十六进制表示。
  • ASCII 视图: 显示数据包内容的 ASCII 表示(若不可见则显示 .)。
  • 实时定位: 点击数据包详情中的某字段,字节流中会高亮对应的内容。

3、常用基础界面操作

(1)设置显示列

数据包列表中有一些默认显示的列,我们可以添加、删除、修改显示的列。

想要在数据包列表中显示某一个字段,可以在数据包详情右键选中这个数据字段“添加为列”即可。

按 Ctrl + Shift + I 也可以实现同样的效果

  • 隐藏字段列 :在显示列的任意位置右键取消列的高亮勾选即可。
  • 删除字段列 :在指定的列名位置右键点击最下方的“Remove this Column”。

(2)设置时间

默认精确到微秒,打开工具栏的“视图”选“时间显示格式”即可设置不同格式

(3)标记和导出数据包

对于某些比较重要的数据包,可以选中右键选择最上面的“标记/取消标记”设置成高亮显示。

按 Ctrl + M 也可以实现同样的效果,按两次可以取消标记

保存全部数据包:菜单栏的“文件”和工具栏的“保存捕获文件”都可以默认保存所有已经抓取的数据包。

导出一或多个数据包:菜单栏的“文件”选择“导出特定分组”,仅选中分组是只保存选中的数据包;仅已标记分组是在当前捕获数据包中有标记时可用与多个选择,范围则也是可以多个选择。

(4)进一步分析数据包

除了单机数据包列表在数据包详情查看完整信息外,我们还可以右键列表对应的数据包选择“追踪流”查看该数据流的详细内容

一组完整的请求-响应对的数据包信息

4、过滤操作详解

Wireshark 提供了两个过滤器:抓包过滤器和显示过滤器,两者过滤思路不同。

(1)抓包过滤器(Capture Filter)

通过设置抓包过滤器,Wireshark 仅抓取符合条件的数据包 ,其他的会被直接丢弃,常用于高负载网络流量场景下减少数据存储压力和后续分析时间。

  • 作用时间 :在数据包进入捕获阶段时过滤。
  • 性能优势 :通过减少需要捕获的数据包数量,降低了存储和处理的负担。
  • 基于BPF 语法:简单但功能有限。

BPF 有四个元素可以自由组合:

  • 类型 Type:host、net、port、portrange、ether 等。
  • 方向 Dir:src、dst、src and dst、src or dst。
  • 协议 Proto:tcp、udp、http、icmp、arp、broadcast 和 multicast 等。
  • 逻辑运算符:and、or、not、!=、>、<、= 等。

BPF 语法的过滤器表达式:

[protocol] [direction] [host/port/net] [value]host 192.168.1.1         // 只抓取与 IP 地址 192.168.1.1 相关的所有数据包(包括源和目标)
tcp dst port 80          // 只抓取目标端口是 TCP 端口 80(HTTP)的数据包
!port 80               // 不抓取端口为 80 的数据包
!brocast               // 不抓取广播包
net 192.168.0.0/16       // 只抓取属于 192.168.0.0/16 子网的所有流量
tcp port 443 and src net 10.1.0.0/24  // 只抓取源网络为 10.1.0.0/24 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/73396.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安心联车辆管理平台源码价值分析

安心联车辆管理平台源码的价值可从技术特性、功能覆盖、市场适配性、扩展潜力及商业化支持等多个维度进行分析。以下结合实际应用进行详细解读&#xff1a; 一、技术架构与开发优势 主流技术栈与高性能架构 源码采用成熟的前后端分离架构&#xff0c;后端基于Java技术&#xff…

【操作系统】Docker如何使用-续

文章目录 1、概述2、巩固知识2.1、基础命令2.2、容器管理2.3、镜像管理2.4、网络管理2.5、Compose 3、常用命令 1、概述 在使用Docker的过程中&#xff0c;掌握常用的命令是至关重要的。然而&#xff0c;随着时间的推移&#xff0c;我们可能会遗忘一些关键的命令或对其用法变得…

ElementUI el-menu导航开启vue-router模式

有没有小伙伴遇到这么一种情况&#xff1a;ElementUI el-menu导航中&#xff0c;开启vue-router 的模式后&#xff0c;点击触发事件而不进行路由跳转&#xff1f; 别慌&#xff01;下面直接说解决方案&#xff1a; 借助路由守卫进行判断 给el-menu绑定切换事件&#xff0c;给…

【leetcode hot 100 17】电话号码的字母组合

分析&#xff1a;当设计关键字“所有组合”时&#xff0c;要考虑深度优先遍历、广度优先遍历&#xff08;层次遍历&#xff09;&#xff0c;其中&#xff1a; 深度优先搜索&#xff1a; 自顶向下的递归实现深搜定义子问题在当前递归层结合子问题结果解决原问题 广度优先搜索 利…

Vue 2 探秘:visible 和 append-to-body 是谁的小秘密?

&#x1f680; Vue 2 探秘&#xff1a;visible 和 append-to-body 是谁的小秘密&#xff1f;&#x1f914; 父组件&#xff1a;identify-list.vue子组件&#xff1a;fake-clue-list.vue 嘿&#xff0c;各位前端探险家&#xff01;&#x1f44b; 今天我们要在 Vue 2 的代码丛林…

C++学习之路:从头搞懂配置VScode开发环境的逻辑与步骤

目录 编辑器与IDE基于vscode的C开发环境配置1. 下载vscode、浅尝编译。番外篇 2. 安装插件&#xff0c;赋能编程。3. 各种json文件的作用。c_cpp_properties.jsontask.jsonlaunch.json 总结&&彩蛋 编辑器与IDE 上一篇博客已经介绍过了C程序的一个编译流程&#xff0c;从…

PPT 转高精度图片 API 接口

PPT 转高精度图片 API 接口 文件处理 / 图片处理&#xff0c;将 PPT 文件转换为图片序列。 1. 产品功能 支持将 PPT 文件转换为高质量图片序列&#xff1b;支持 .ppt 和 .pptx 格式&#xff1b;保持原始 PPT 的布局和样式&#xff1b;转换后的图片支持永久访问&#xff1b;全…

VSCode 抽风之 两个conda环境同时在被激活

出现了神奇的(toolsZCH)(base) 提示符&#xff0c;如下图所示&#xff1a; 原因大概是&#xff1a;conda 环境的双重激活&#xff1a;可能是 conda 环境没有被正确清理或初始化&#xff0c;导致 base 和 toolsZCH 同时被激活。 解决办法就是 &#xff1a;conda deactivate 两次…

git | 回退版本 并保存当前修改到stash,在进行整合。[git checkout | git stash 等方法 ]

目录 一些常见命令&#xff1a; git 回退版本 一、临时回退&#xff08;不会修改历史&#xff0c;可随时回到当前版本&#xff09; 方法1&#xff1a;git checkout HEAD~1 问题&#xff1a;处于 detached HEAD 状态下提交的&#xff0c;无法直接 git push ✅ 选项 1&…

如何使用 Postman 进行接口测试?

使用 Postman 这一工具&#xff0c;可以轻松地进行接口测试。以下是一份简单的使用教程&#xff0c;帮助你快速上手。 Postman 接口测试教程&#xff1a;详细步骤及操作技巧

写作软件新体验:让文字创作更高效

一、开篇引入:写作难题的破解之道 在当今信息爆炸的时代,写作成为了我们生活和工作中不可或缺的一部分。然而,面对繁琐的写作任务,我们时常感到力不从心,甚至陷入创作的瓶颈。那么,有没有一款软件能够帮助我们破解这一难题,让文字创作变得更加高效和轻松呢?答案是肯定…

大模型思维链COT:Chain-of-Thought Prompting Elicits Reasoningin Large Language Models

一、TL&#xff1b;DR 探索了COT&#xff08;chain-of-thought prompting&#xff09;通过一系列的中间推理步骤来显著的提升了LLM的复杂推理能力在三个大型语言模型上的实验表明&#xff0c;思维链提示能够提升模型在一系列算术、常识和符号推理任务上的表现解释了一下为什么…

systemd-networkd的配置文件的优先级 笔记250325

systemd-networkd的配置文件的优先级 systemd-networkd的配置文件优先级规则如下&#xff1a; 1. 目录优先级 配置文件按以下目录顺序加载&#xff08;优先级从高到低&#xff09;&#xff1a; /etc/systemd/network&#xff08;用户自定义配置&#xff0c;最高优先级&#x…

详细说明windows系统函数::SetUnhandledExceptionFilter(ExceptionFilter)

::SetUnhandledExceptionFilter(ExceptionFilter); 是 Windows 编程中用于设置顶层未处理异常过滤器的关键 API 调用。它属于 Windows 结构化异常处理&#xff08;SEH, Structured Exception Handling&#xff09;机制的一部分&#xff0c;主要用于捕获那些未被程序内部处理的异…

决策树算法详解:从西瓜分类到实战应用

目录 0. 引言 1. 决策树是什么&#xff1f; 1.1 生活中的决策树 1.2 专业版决策树 2. 如何构建决策树&#xff1f; 2.1 关键问题&#xff1a;选哪个特征先判断&#xff1f; 2.1.1 信息熵&#xff08;数据混乱度&#xff09; 2.1.2 信息增益&#xff08;划分后的整洁度提…

超融合服务器是什么

超融合服务器的定义与背景 超融合服务器&#xff08;Hyperconverged Infrastructure, HCI&#xff09;是一种通过软件定义技术&#xff0c;将计算、存储、网络和虚拟化功能整合到单一硬件平台中的IT基础设施解决方案。其核心目标是通过资源的高度集成和统一管理&#xff0c;简…

【网络层协议】NAT技术内网穿透

IP地址数量限制 我们知道&#xff0c;IP地址&#xff08;IPv4&#xff09;是一个4字节32位的整数&#xff0c;那么一共只有2^32也就是接近43亿个IP地址&#xff0c;而TCP/IP协议栈规定&#xff0c;每台主机只能有一个IP地址&#xff0c;这就意味着&#xff0c;一共只有不到43亿…

时隔多年,终于给它换了皮肤,并正式起了名字

时隔多年&#xff0c;终于更新了直播推流软件UI&#xff0c;并正式命名为FlashEncoder。软件仍使用MFC框架&#xff0c;重绘了所有用到的控件&#xff0c;可以有效保证软件性能&#xff0c;也便于后续进一步优化。 下载地址&#xff1a;https://download.csdn.net/download/Xi…

代码随想录第六十二天| Floyd 算法精讲 A * 算法精讲 (A star算法) 最短路算法总结篇

Floyd 算法精讲 题目描述 小明希望在公园散步时找到从一个景点到另一个景点的最短路径。给定公园的景点图&#xff0c;包含 N 个景点和 M 条双向道路&#xff0c;每条道路有已知的长度。小明有 Q 个观景计划&#xff0c;每个计划包含一个起点和终点&#xff0c;求每个计划的最…

如何避免测试环境不稳定导致的误报

避免测试环境不稳定导致误报的核心方法包括搭建独立稳定的测试环境、使用环境监控工具、建立环境变更管理机制、定期维护更新测试环境以及提升团队的环境管理意识。 其中&#xff0c;搭建独立稳定的测试环境尤为关键。独立的测试环境能有效隔离其他环境的干扰&#xff0c;保证测…