Wireshark 使用教程:网络分析从入门到精通

一、引言

在网络技术的广阔领域中,网络协议分析是一项至关重要的技能。Wireshark 作为一款开源且功能强大的网络协议分析工具,被广泛应用于网络故障排查、网络安全检测以及网络协议研究等诸多方面。本文将深入且详细地介绍 Wireshark 的使用方法,帮助你快速掌握这一强大工具。

二、Wireshark 简介

Wireshark 是一个免费且开源的网络协议分析器,它能够深入捕获和分析网络数据包。无论是学习网络技术的新手,还是经验丰富的网络工程师,Wireshark 都能为他们提供深入了解网络运行机制的能力。通过直观的图形界面,用户可以轻松地查看网络数据包的详细信息,包括源地址、目的地址、协议类型以及数据包内容等。

三、安装与启动

(一)安装

  1. 首先,访问 Wireshark 官方网站(https://www.wireshark.org/download.html),根据你的操作系统下载对应的安装包。Wireshark 支持 Windows、Mac OS、Linux 等多种主流操作系统,确保选择与你系统匹配的版本。
  1. 下载完成后,运行安装程序,按照安装向导的提示进行操作。在安装过程中,你会遇到一些可选择的设置:
    • 安装路径:默认情况下,Wireshark 会安装在系统盘的特定目录下,如 Windows 系统的 “C:\Program Files\Wireshark” 。你可以点击 “浏览” 按钮选择其他磁盘和目录进行安装,比如安装在空间充足的 D 盘,以避免系统盘空间不足影响系统性能。
    • 组件选择:通常有 Wireshark 主程序、TShark(Wireshark 的命令行版本)、USBpcap(用于捕获 USB 数据包,一般用户较少用到)等组件。一般保持默认勾选的组件即可满足大多数用户的日常使用需求。若你对命令行操作有一定了解且可能会在命令行环境下使用 Wireshark,可勾选 TShark 组件。完成设置后,直接点击 “下一步” 即可完成安装。

(二)启动

安装完成后,在开始菜单(Windows 系统)或应用程序列表(Mac 系统)中找到 Wireshark 的快捷方式,点击即可启动。启动后,你将看到 Wireshark 的主界面。

四、界面介绍

(一)菜单栏

菜单栏包含了各种操作选项,如文件的打开、保存,数据包的捕获、分析设置等。通过菜单栏,你可以完成几乎所有的 Wireshark 操作。例如:

  • 文件(File):在此菜单下可以进行打开已有的捕获文件(.pcapng 或.pcap 格式)、保存当前捕获的数据包、打印数据包等操作。
  • 捕获(Capture):包含开始捕获、停止捕获、设置捕获选项等功能。
  • 分析(Analyze):用于设置分析相关的参数,如启用或禁用特定协议的分析、设置显示过滤器等。

(二)工具栏

工具栏提供了一些常用功能的快捷按钮,例如开始捕获、停止捕获、打开已捕获文件等。这些按钮使得你可以快速执行常见操作,提高工作效率。其中:

  • 绿色三角形图标为 “开始捕获” 按钮,点击它可直接开始在选定接口上捕获数据包。
  • 红色正方形图标是 “停止捕获” 按钮,用于停止正在进行的数据包捕获。
  • 文件夹图标用于 “打开已捕获文件”,方便你快速加载之前保存的数据包文件进行分析。

(三)接口列表

在 Wireshark 主界面的中间部分,你会看到一个接口列表。这里列出了计算机上所有可用的网络接口,包括以太网接口、无线网络接口等。在进行数据包捕获之前,需要选择一个要捕获数据包的接口。每个接口都有其对应的名称和描述,例如 “Ethernet0” 可能是计算机的有线网络接口,“Wi-Fi” 则是无线网络接口。选择时需根据实际需要捕获数据包的网络环境来确定,如你要分析家庭无线网络中的数据包,就应选择 “Wi-Fi” 接口。

(四)数据包列表窗格

当你开始捕获数据包后,捕获到的数据包会以列表形式显示在这个窗格中。每个数据包都有一行记录,显示了数据包的编号、捕获时间、源地址、目的地址、协议类型以及数据包的简要信息。其中:

  • 数据包编号:按照捕获的先后顺序对数据包进行编号,方便在大量数据包中定位特定数据包。
  • 捕获时间:精确记录数据包被捕获的时间,对于分析网络事件的时间顺序非常重要。
  • 源地址和目的地址:显示数据包发送方和接收方的 IP 地址或 MAC 地址,有助于判断数据的流向和通信双方。
  • 协议类型:明确数据包所使用的网络协议,如 TCP、UDP、HTTP、DNS 等。
  • 数据包简要信息:根据协议类型显示数据包的关键信息,如 HTTP 数据包可能显示请求的 URL 或响应状态码。

(五)数据包详细信息窗格

当你在数据包列表窗格中选择一个数据包时,这个窗格会显示该数据包的详细信息。包括数据包的各个协议层的结构、字段值以及对应的解释。这对于深入分析数据包的内容和协议结构非常有帮助。例如,对于一个 TCP 数据包,你可以看到:

  • 源端口(Source Port):标识发送方应用程序使用的端口号,不同的应用程序通常使用特定的端口号,如 HTTP 协议默认使用 80 端口,HTTPS 使用 443 端口。
  • 目的端口(Destination Port):标识接收方应用程序使用的端口号。
  • 序列号(Sequence Number):用于标识 TCP 数据包在数据流中的位置,确保数据包按正确顺序重组。
  • 确认号(Acknowledgment Number):用于确认已收到对方发送的数据包,保证数据传输的可靠性。

对于一个 HTTP 数据包,你可以查看其:

  • 请求方法(Request Method):常见的有 GET(用于获取资源)、POST(用于提交数据)等。
  • 请求 URL(Request URL):显示请求的具体资源路径。
  • 响应状态码(Response Status Code):如 200 表示请求成功,404 表示资源未找到等。

(六)数据包字节数据窗格

此窗格显示了数据包的原始字节数据。对于需要查看数据包原始内容的高级用户来说,这个窗格提供了最直接的方式。在这里,你可以看到数据包以十六进制和 ASCII 码两种形式呈现的数据,通过分析这些原始数据,可以更深入地了解数据包的构成和内容,特别是在分析一些自定义协议或排查网络安全问题时非常有用。

五、捕获数据包

(一)选择捕获接口

在开始捕获数据包之前,首先要选择一个要捕获数据包的接口。在接口列表中,找到你想要捕获数据包的网络接口,例如以太网接口 “Ethernet0” 或者无线网络接口 “Wi-Fi”。点击该接口,然后点击工具栏上的 “开始捕获” 按钮(通常是一个绿色的三角形图标),或者选择菜单栏中的 “捕获”->“开始”。

(二)设置捕获选项

在开始捕获之前,你还可以对捕获选项进行一些设置。点击菜单栏中的 “捕获”->“选项”,弹出 “捕获选项” 对话框。在这里,你可以设置捕获的接口、捕获文件的保存位置、捕获过滤器等。

  1. 捕获文件:设置捕获的数据包保存的文件路径和文件名。如果不设置,捕获的数据包将只显示在 Wireshark 界面中,不会保存到文件。你可以点击 “浏览” 按钮选择保存的目录,文件名可以自行命名,建议使用有意义的名称,如 “20241201 - office - network - capture.pcapng” ,方便后续查找和识别。
  1. 捕获过滤器:使用捕获过滤器可以只捕获符合特定条件的数据包。例如,你只想捕获来自某个 IP 地址的数据包,可以设置捕获过滤器为 “ip.src == 192.168.1.100”。捕获过滤器的语法有多种规则:
    • 协议过滤:如 “tcp” 表示只捕获 TCP 协议的数据包,“udp” 表示只捕获 UDP 协议的数据包。
    • IP 地址过滤:“ip.src == 192.168.1.100” 表示只捕获源 IP 地址为 192.168.1.100 的数据包,“ip.dst == 192.168.1.200” 表示只捕获目的 IP 地址为 192.168.1.200 的数据包。
    • 端口过滤:“tcp.srcport == 8080” 表示只捕获源端口为 8080 的 TCP 数据包,“udp.dstport == 53” 表示只捕获目的端口为 53(DNS 协议常用端口)的 UDP 数据包。
    • 逻辑运算符:“&&” 表示与,如 “ip.src == 192.168.1.100 && tcp.dstport == 80” 表示只捕获源 IP 地址为 192.168.1.100 且目的端口为 80 的数据包;“||” 表示或,如 “ip.src == 192.168.1.100 || ip.src == 192.168.1.101” 表示捕获源 IP 地址为 192.168.1.100 或者 192.168.1.101 的数据包;“!” 表示非,如 “!http” 表示捕获除 HTTP 协议之外的数据包。

(三)开始捕获

完成上述设置后,点击 “开始” 按钮,Wireshark 就会开始捕获所选接口上的数据包。捕获过程中,数据包列表窗格会实时显示捕获到的数据包。当你想要停止捕获时,点击工具栏上的 “停止捕获” 按钮(通常是一个红色的正方形图标),或者选择菜单栏中的 “捕获”->“停止”。

六、分析数据包

(一)使用显示过滤器

显示过滤器是 Wireshark 中非常强大的功能,它可以帮助你从大量的捕获数据包中快速筛选出符合特定条件的数据包。显示过滤器的语法与捕获过滤器类似,但功能更加强大。在 Wireshark 界面的左上角有一个 “显示过滤器” 输入框,你可以在其中输入过滤器表达式。

例如:

  • 显示所有 TCP 协议的数据包:tcp
  • 显示源 IP 地址为 192.168.1.100 的数据包:ip.src == 192.168.1.100
  • 显示目的端口为 80 的 HTTP 协议数据包:http && tcp.dstport == 80

显示过滤器除了基本的协议、地址、端口过滤和逻辑运算外,还支持更复杂的过滤规则。比如,你可以通过 “frame.len> 1000” 来显示长度大于 1000 字节的数据包,这对于分析网络中大数据包的传输情况很有帮助;还可以使用 “ip.addr == 192.168.1.100” 来显示与 192.168.1.100 这个 IP 地址相关的所有数据包,包括源地址或目的地址是该 IP 的数据包。

(二)查看数据包详细信息

在数据包列表窗格中选择一个数据包后,数据包详细信息窗格会显示该数据包的详细内容。你可以展开各个协议层,查看每个字段的具体值和含义。例如,对于一个 TCP 数据包,你可以查看其源端口、目的端口、序列号、确认号等信息;对于一个 HTTP 数据包,你可以查看其请求方法(GET、POST 等)、请求 URL、响应状态码等信息。此外,还可以查看数据包的其他详细信息,如 TCP 的窗口大小(Window Size),它表示发送方能够接收的字节数,反映了网络的拥塞情况;HTTP 的头部字段(Header Fields),如 User - Agent(用于标识客户端的类型和版本)、Content - Type(用于指定数据的类型,如 application/json 表示数据是 JSON 格式)等,这些信息对于深入分析网络通信和排查问题都非常关键。

(三)跟踪流

在分析网络连接时,跟踪流功能非常有用。当你选择一个 TCP 或 UDP 数据包后,右键点击该数据包,在弹出的菜单中选择 “追踪流”->“TCP 流” 或 “UDP 流”。Wireshark 会将该连接的所有数据包按顺序排列,并以文本形式显示在一个新的窗口中,方便你查看整个连接的通信过程。在跟踪流的窗口中,你可以清晰地看到数据的发送和接收顺序,以及请求和响应的具体内容。例如,对于 HTTP 协议的 TCP 流,你可以看到完整的 HTTP 请求和响应消息,包括请求头、请求体、响应头和响应体,这对于分析 Web 应用的交互过程和排查相关问题非常直观和有效。

七、常用过滤器语法

(一)协议过滤器

  • 显示所有 HTTP 协议的数据包:http
  • 显示所有 DNS 协议的数据包:dns
  • 显示所有 ARP 协议的数据包:arp

(二)IP 地址过滤器

  • 显示源 IP 地址为 192.168.1.100 的数据包:ip.src == 192.168.1.100
  • 显示目的 IP 地址为 192.168.1.200 的数据包:ip.dst == 192.168.1.200

(三)端口过滤器

  • 显示源端口为 8080 的数据包:tcp.srcport == 8080
  • 显示目的端口为 22 的数据包:tcp.dstport == 22

(四)逻辑运算符

  • 与(&&):用于连接多个条件,只有所有条件都满足时才显示数据包。例如,显示源 IP 地址为 192.168.1.100 且目的端口为 80 的数据包:ip.src == 192.168.1.100 && tcp.dstport == 80
  • 或(||):用于连接多个条件,只要有一个条件满足就显示数据包。例如,显示源 IP 地址为 192.168.1.100 或目的 IP 地址为 192.168.1.200 的数据包:ip.src == 192.168.1.100 || ip.dst == 192.168.1.200
  • 非(!):用于取反条件。例如,显示不是 HTTP 协议的数据包:!http

此外,还有一些其他的过滤语法,如针对以太网帧的过滤,“eth.src == 00:11:22:33:44:55” 可以显示源 MAC 地址为 00:11:22:33:44:55 的以太网帧;针对 ICMP 协议的过滤,“icmp.type == 8” 可以显示 ICMP 请求(类型 8)的数据包,“icmp.type == 0” 则显示 ICMP 响应(类型 0)的数据包。

八、保存与导出捕获数据

(一)保存捕获文件

在捕获完成后,你可以将捕获的数据包保存为文件,以便后续分析。选择菜单栏中的 “文件”->“保存” 或 “文件”->“另存为”,选择保存的文件路径和文件名。Wireshark 默认的保存文件格式为.pcapng,这种格式可以完整地保存捕获的数据包信息,包括数据包的原始数据、捕获时间、接口信息等。如果你需要与其他工具或用户共享捕获数据,也可以选择保存为.pcap 格式,该格式是一种更通用的数据包捕获文件格式,被许多网络分析工具所支持。

(二)导出特定数据包

如果你只需要导出部分数据包,可以使用显示过滤器筛选出这些数据包,然后选择菜单栏中的 “文件”->“导出分组”->“作为”。在弹出的对话框中,选择保存的文件路径和文件名,同时可以选择导出的文件格式,如文本文件、CSV 文件等。导出为文本文件时,数据包的内容会以文本形式呈现,便于查看和编辑;导出为 CSV 文件则适合用于数据分析和统计,你可以将其导入到 Excel 等软件中进行进一步处理,例如统计不同协议的数据包数量、分析数据包的大小分布等。

九、总结

通过本文的详细介绍,相信你已经对 Wireshark 的基本使用方法有了较为全面的了解。从安装启动、界面认识,到数据包的捕获与分析,再到过滤器的使用以及数据的保存导出,Wireshark 提供了丰富而强大的功能来帮助我们深入研究网络协议和排查网络问题。随着不断的学习和实践,你将能够更加熟练地运用 Wireshark,挖掘网络数据包背后的更多信息。

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

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

相关文章

nvim 打造成可用的IDE(2)

上一个 文章写的太长了, 后来再写东西 就一卡一卡的,所以新开一个。 主要是关于 bufferline的。 之前我的界面是这样的。 这个图标很不舒服有。 后来发现是在这里进行配置。 我也不知道,这个配置 我是从哪 抄过来的。 测试结果&#xff1…

升级 SpringBoot3 全项目讲解 — 为什么 SpringBoot3 应该抛弃 Maven,搭配 Gradle 来使用?

学会这款 🔥全新设计的 Java 脚手架 ,从此面试不再怕! 随着 Spring Boot 3 的发布,许多开发者开始考虑如何将现有项目升级到最新版本。Spring Boot 3 带来了许多新特性,包括对 Java 17 的支持、更好的性能优化以及对 G…

如何优化Elasticsearch大文档查询?

记录一次业务复杂场景下DSL优化的过程 背景 B端商城业务有一个场景就是客户可见的产品列表是需要N多闸口及各种其它逻辑组合过滤的,各种闸口数据及产品数据都是存储在ES的(有的是独立索引,有的是作为产品属性存储在产品文档上)。 在实际使用的过程中&a…

openCvSharp 计算机视觉图片找茬

一、安装包 <PackageReference Include"OpenCvSharp4" Version"4.10.0.20241108" /> <PackageReference Include"OpenCvSharp4.runtime.win" Version"4.10.0.20241108" /> 二、准备两张图片 三、编写代码 using OpenCv…

实战:FRP内网穿透部署-支持ssh、web访问

目录 1 准备工作2 公网服务器部署server端2.1 frps.ini配置 3 内网客户端部署client端3.1 frpc.ini配置&#xff08;内网服务器01&#xff09;3.2 frpc.ini配置&#xff08;内网服务器02&#xff09; 4 服务启动脚本4.1 公网服务器 server4.2 内网服务器 client 2 systemctl常见…

Uniapp中实现加载更多、下拉刷新、返回顶部功能

一、加载更多&#xff1a; 在到达底部时&#xff0c;将新请求过来的数据追加到原来的数组即可&#xff1a; import {onReachBottom } from "dcloudio/uni-app";const pets ref([]); // 显示数据function network() {uni.request({url: "https://api.thecatap…

Flutter:封装ActionSheet 操作菜单

演示效果图 action_sheet_util.dart import package:ducafe_ui_core/ducafe_ui_core.dart; import package:flutter/material.dart; import package:demo/common/index.dart;class ActionSheetUtil {/// 底部操作表/// [context] 上下文/// [title] 标题/// [items] 选项列表 …

【Rust练习】28.use and pub

练习题来自&#xff1a;https://practice-zh.course.rs/crate-module/use-pub.html 1 使用 use 可以将两个同名类型引入到当前作用域中&#xff0c;但是别忘了 as 关键字. use std::fmt::Result; use std::io::Result;fn main() {}利用as可以将重名的内容取别名&#xff1a;…

Nginx 可观测性最佳实践

Nginx 介绍 Nginx 是一个开源、轻量级、高性能的 HTTP 和反向代理服务器&#xff0c;也可以用于 IMAP/POP3 代理服务器。Nginx 因其采用的异步非阻塞工作模型&#xff0c;使其具备高并发、低资源消耗的特性。高度模块化设计也使得 Nginx 具备很好的扩展性&#xff0c;在处理静…

《汽车维护与修理》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答&#xff1a; 问&#xff1a;《汽车维护与修理》是不是核心期刊&#xff1f; 答&#xff1a;不是&#xff0c;是知网收录的正规学术期刊。 问&#xff1a;《汽车维护与修理》级别&#xff1f; 答&#xff1a;国家级。主管单位&#xff1a;中国汽车维修行业协会 …

PHP智慧小区物业管理小程序

&#x1f31f;智慧小区物业管理小程序&#xff1a;重塑社区生活&#xff0c;开启便捷高效新篇章 &#x1f31f; 智慧小区物业管理小程序是一款基于PHPUniApp精心雕琢的智慧小区物业管理小程序&#xff0c;它犹如一股清新的科技之风&#xff0c;吹进了现代智慧小区的每一个角落…

洛谷P4868 Preprefix sum

洛谷传送门 题目描述 前缀和&#xff08;prefix sum&#xff09;&#x1d446;&#x1d456;。 前前缀和&#xff08;preprefix sum&#xff09;则把 &#x1d446;&#x1d456; 作为原序列再进行前缀和。记再次求得前缀和第 &#x1d456; 个是 &#x1d446;&#x1d446…

机器学习中的凸函数和梯度下降法

一、凸函数 在机器学习中&#xff0c;凸函数 和 凸优化 是优化问题中的重要概念&#xff0c;许多机器学习算法的目标是优化一个凸函数。这些概念的核心思想围绕着优化问题的简化和求解效率。下面从简单直观的角度来解释。 1. 什么是凸函数&#xff1f; 数学定义 一个函数 f…

Windows图形界面(GUI)-QT-C/C++ - Qt控件与布局系统详解

公开视频 -> 链接点击跳转公开课程博客首页 -> ​​​链接点击跳转博客主页 目录 Qt布局系统(Layouts) 布局管理器基础 高级布局技巧 嵌套布局 设置间距和边距 常用控件详解 按钮类控件 QPushButton (标准按钮) QRadioButton (单选按钮) QCheckBox (复选框) …

深入理解 ECMAScript 2024 新特性:字符串 isWellFormed 方法

ECMAScript 2024 引入了一个新的字符串实例方法&#xff1a;String.prototype.isWellFormed。这一新增功能是为了帮助开发者更容易地验证字符串是否为有效的 Unicode 文本。本文将详细介绍这一方法的使用场景、实现原理及其在实际应用中的价值。 String.prototype.isWellFormed…

生产管理看板助力节能科技公司实现数据自动化管理

在节能科技公司的生产过程中&#xff0c;数据管理的自动化是提高生产效率和产品质量的关键。然而&#xff0c;许多公司在数据记录、展示、对比和存档方面仍面临诸多痛点&#xff0c;如产品检测数据无法自动记录、缺乏直观的产线状态展示、检测数据对比繁琐耗时&#xff0c;以及…

【C++】B2112 石头剪子布

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述游戏规则&#xff1a;输入格式&#xff1a;输出格式&#xff1a;输入输出样例&#xff1a;解题分析与实现 &#x1f4af;我的做法实现逻辑优点与不足 &#x1f4af…

两分钟解决 :![rejected] master -> master (fetch first) , 无法正常push到远端库

目录 分析问题的原因解决 分析问题的原因 在git push的时候莫名遇到这种情况 若你在git上修改了如README.md的文件。由于本地是没有README.md文件的&#xff0c;所以导致 远端仓库git和本地不同步。 将远端、本地进行合并就可以很好的解决这个问题 注意&#xff1a;直接git pu…

微服务之松耦合

参考&#xff1a;https://microservices.io/post/architecture/2023/03/28/microservice-architecture-essentials-loose-coupling.html There’s actually two different types of coupling: runtime coupling - influences availability design-time coupling - influences…

hot100_240. 搜索二维矩阵 II

hot100_240. 搜索二维矩阵 II 直接遍历列减行增 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,4,7,1…