贝博恩创新科技网

Wireshark 2.0.2教程,如何快速上手抓包分析?

Wireshark 2.0.2 完整教程:从入门到精通

目录

  1. 前言:什么是 Wireshark?
  2. 第一步:安装与准备
  3. 第二步:认识主界面
  4. 第三步:捕获数据包
  5. 第四步:分析数据包(核心)
    • 1 使用过滤器
    • 2 解读数据包详情
    • 3 查看原始数据
  6. 第五步:实战演练
    • 1 场景一:排查网页打不开的问题
    • 2 场景二:分析 DNS 查询过程
  7. 第六步:高级技巧与进阶
    • 1 设置捕获过滤器
    • 2 导出和保存数据
    • 3 跟流
  8. 第七步:常见问题与注意事项

前言:什么是 Wireshark?

Wireshark 是一款开源的、跨平台的网络协议分析器,你可以把它想象成网络的“X光机”或“听诊器”,它能够捕获你计算机与网络之间传输的所有数据包,并以可读的方式展示出来,让你清晰地看到网络中到底发生了什么。

Wireshark 2.0.2教程,如何快速上手抓包分析?-图1
(图片来源网络,侵删)

主要用途:

  • 网络故障排查:定位网络延迟、丢包、连接失败等问题。
  • 性能分析:分析网络带宽使用情况,找出性能瓶颈。
  • 安全审计:检测网络攻击、异常流量或恶意软件通信。
  • 协议学习:通过查看真实的数据包,深入理解各种网络协议(如 HTTP, DNS, TCP/IP)的工作原理。

第一步:安装与准备

在开始之前,你需要确保以下几点:

  1. 下载与安装

    • 访问 Wireshark 官方网站:https://www.wireshark.org/
    • 在 2.0.2 发布时期,你可以直接在 "Download" 页面找到对应的安装包,你可以下载最新版,其核心操作与 2.0.2 基本相同。
    • 安装时,务必勾选 "Install WinPcap" 选项,WinPcap 是一个数据包捕获库,没有它,Wireshark 无法在 Windows 上捕获网络流量。
  2. 以管理员身份运行

    Wireshark 2.0.2教程,如何快速上手抓包分析?-图2
    (图片来源网络,侵删)

    捕获网络数据包需要修改网络接口的设置,这通常需要管理员权限,每次启动 Wireshark 时,建议右键点击图标,选择“以管理员身份运行”。

  3. 选择正确的网络接口

    • 这是最关键的一步,你需要告诉 Wireshark 在哪个网络连接上监听流量。
    • 打开 Wireshark 后,主界面上方会显示你计算机上所有的网络接口(如以太网、Wi-Fi)。
    • eth0以太网:通常代表有线连接。
    • wlan0WLAN:通常代表无线 Wi-Fi 连接。
    • Loopback: lo:代表本地回环地址(127.0.0.1),用于本机进程间通信,一般用于调试本地服务。
    • 点击你想要分析的那个接口左边的蓝色小鱼图标,开始捕获数据。

第二步:认识主界面

Wireshark 2.0.2 的主界面分为三个主要部分,从上到下依次是:

  1. 工具栏

    Wireshark 2.0.2教程,如何快速上手抓包分析?-图3
    (图片来源网络,侵删)

    提供了最常用的快捷操作,如开始/停止捕获、重新开始捕获、打开/保存文件等。

  2. 数据包列表

    • 这是界面的核心区域,它会列出所有捕获到的数据包,每行代表一个数据包。
    • 列信息:默认包含 编号时间戳源地址目标地址协议长度信息等,你可以通过右键点击列标题来自定义显示哪些列。
    • 操作:点击任意一行,下方的“数据包详情”区域就会显示该数据包的详细信息。
  3. 数据包详情

    • 当你在“数据包列表”中选中一个数据包后,这里会以树状结构展示该数据包的协议分层信息。
    • 一个 HTTP 请求的数据包,会先显示 Frame(物理帧),然后是 Ethernet II(以太网帧头),Internet Protocol Version 4 (IP),Transmission Control Protocol (TCP),最后是 Hypertext Transfer Protocol (HTTP)。
    • 操作:点击每一层(如 HTTP),下方的“数据包字节”区域就会显示该层协议的原始数据。
  4. 数据包字节

    • 这是最底层的区域,以十六进制和 ASCII 码两种形式展示选中数据包的原始内容。
    • 左边是十六进制,右边是对应的 ASCII 字符,中间的竖线 () 标识了可打印字符的范围。
    • 操作:当你点击“数据包详情”中的某个字段时,这里对应的字节区域会高亮显示,让你能直观地看到协议字段与原始数据的对应关系。

第三步:捕获数据包

  1. 选择接口:如上所述,点击你想监听的网络接口旁的蓝色小鱼图标。
  2. 开始捕获:图标会变成红色方块,表示正在捕获,所有经过该接口的网络流量都会被记录下来。
  3. 产生流量:为了捕获到有用的数据,你需要进行一些网络活动。
    • 打开浏览器,访问一个网站(如 www.google.com)。
    • ping 一个地址(在命令行中输入 ping baidu.com)。
    • 发送一封邮件。
  4. 停止捕获:点击红色的方块按钮,停止捕获。

你的“数据包列表”中应该充满了数据包,如果你没有使用过滤器,列表可能会非常庞大。


第四步:分析数据包(核心)

面对成千上万个数据包,如何快速找到你关心的信息?答案是:过滤器

1 使用过滤器

Wireshark 有两种过滤器:

  • 捕获过滤器:在数据包被捕获之前就进行过滤,只捕获你感兴趣的包,优点是效率高,占用资源少,缺点是设置语法复杂。
  • 显示过滤器:在数据包被捕获之后,在界面中进行过滤,优点是语法简单直观,功能强大,是日常分析中最常用的工具。

显示过滤器语法(重点): 在 Wireshark 顶部的显示过滤器输入框中输入表达式。

  • 按协议过滤:这是最常用的方式。

    • http:只显示 HTTP 协议的数据包。
    • dns:只显示 DNS 协议的数据包。
    • tcp:只显示 TCP 协议的数据包。
    • arp:只显示 ARP 协议的数据包。
  • 按 IP 地址过滤

    • ip.addr == 192.168.1.100:只显示源地址或目标地址为 168.1.100 的包。
    • ip.src == 192.168.1.100:只显示源地址为 168.1.100 的包。
    • ip.dst == 8.8.8.8:只显示目标地址为 8.8.8 (Google DNS) 的包。
  • 按端口号过滤

    • tcp.port == 80:只显示源或目标端口为 80 (HTTP) 的 TCP 包。
    • tcp.srcport == 443:只显示源端口为 443 (HTTPS) 的 TCP 包。
    • udp.port == 53:只显示端口为 53 (DNS) 的 UDP 包。
  • 组合过滤

    • http and ip.addr == 192.168.1.100:显示主机 168.1.100 的所有 HTTP 流量。
    • tcp.port == 80 or tcp.port == 443:显示所有 HTTP 或 HTTPS 流量。

提示:输入过滤器时,Wireshark 会自动提示可用的字段和语法,善用这个功能!

2 解读数据包详情

假设我们过滤出了 http 流量,并选中一个数据包,查看其“数据包详情”部分:

  1. Frame:物理层信息,如捕获长度、到达时间等。
  2. Ethernet II:数据链路层(OSI 第二层),包含了源 MAC 地址和目标 MAC 地址。
  3. Internet Protocol Version 4:网络层(OSI 第三层),包含了源 IP 地址和目标 IP 地址。
  4. Transmission Control Protocol:传输层(OSI 第四层),包含了源端口、目标端口,以及 TCP 的标志位(如 SYN, ACK, FIN)。
  5. Hypertext Transfer Protocol:应用层(OSI 第七层),这里是 HTTP 协议的具体内容,GET /index.html HTTP/1.1 请求。

通过点击每一层,你可以自底向上地理解一个数据包的封装过程。

3 查看原始数据

在“数据包字节”区域,你可以看到最原始的 16 进制数据,当你选中“数据包详情”中的某个字段时,这里对应的字节会高亮,这对于调试或理解协议字段的具体编码方式非常有帮助。


第五步:实战演练

排查网页打不开的问题

  1. 启动捕获:选择你的网络接口,开始捕获。
  2. 尝试访问:在浏览器中输入一个你无法访问的网址(或一个能访问的用于对比)。
  3. 停止捕获:访问失败后,停止捕获。
  4. 分析流量
    • 在显示过滤器中输入 dns,看看有没有 DNS 查询请求。
      • 如果有 No such name 或类似的错误响应,说明是 DNS 解析失败。
      • 如果没有 DNS 请求,说明浏览器根本没有发起域名解析。
    • DNS 正常,过滤 httphttps
      • 查看是否有 TCP 三次握手(SYN -> SYN/ACK -> ACK)成功建立。
      • 如果握手失败,可能是网络问题或防火墙阻止了连接。
      • 如果握手成功,查看是否有 HTTP GET 请求和服务器返回的 200 OK 响应,如果收到 404 Not Found500 Internal Server Error,则是 Web 服务器的问题。

分析 DNS 查询过程

  1. 启动捕获,过滤器输入 dns
  2. 在命令行执行 nslookup www.baidu.com
  3. 停止捕获
  4. 在数据包列表中,你会看到一系列的 DNS 请求和响应。
  5. 选中第一个 DNS 请求包
    • 在“数据包详情”中,展开 Domain Name System
    • 你会看到 Queries 部分,里面有 www.baidu.com 的查询记录,查询类型通常是 A(IPv4 地址)。
    • 再看 Answers 部分,这里包含了百度服务器的 IP 地址(如 181.38.148)。
  6. 分析后续包:有时 DNS 查询不是一蹴而就的,可能会有多个请求,或者涉及到 NS(域名服务器)记录等。

第六步:高级技巧与进阶

1 设置捕获过滤器

当你只需要捕获特定流量时,使用捕获过滤器可以极大减少数据量,避免硬盘写满,并提高性能。 语法基于 libpcap/WinPcap,与 tcpdump 类似。

  • 示例
    • 只捕获与特定 IP 的通信:host 192.168.1.100
    • 只捕获特定端口的流量:port 80
    • 只捕获 TCP 流量:tcp
    • 只捕获来自某个网段的流量:src net 192.168.1.0/24
    • 组合使用:tcp and port 80 and host 192.168.1.100

注意:捕获过滤器的语法比显示过滤器严格,不支持 and/or 等复杂逻辑,需要用 && 和 。

2 导出和保存数据

  • 保存所有数据文件 -> 保存,可以选择保存为 .pcapng(推荐,Wireshark 新格式)或 .pcap(旧格式)。
  • 导出特定数据:选中一个或多个数据包(按住 CtrlShift 多选),右键选择 导出选中分组为...,可以保存为纯文本、CSV 等格式,方便在其他工具中分析。

3 跟流

这是 Wireshark 的一个强大功能,可以自动将属于同一个 TCP/UDP 会话的所有数据包重组并展示出来。

  • 操作:在“数据包列表”中,选中一个属于你感兴趣会话的数据包(比如一个 HTTP 请求包)。
  • 右键点击,选择 跟随 -> TCP 流 (或 UDP 流)。
  • Wireshark 会弹出一个新窗口,以原始文本的形式展示这个完整的会话内容,包括客户端的请求和服务器的响应,这对于分析应用层协议(如 HTTP, FTP, SMTP)的交互细节非常有用。

第七步:常见问题与注意事项

  • 为什么我捕获不到数据?

    • 权限问题:是否以管理员身份运行?
    • 接口问题:是否选择了正确的网络接口?
    • 流量问题:你的网络活动是否产生了流量?尝试 ping 一下。
    • 交换机问题:如果你在交换机上监听,默认只能捕获到广播包和发往本机的包,要捕获其他主机的流量,需要配置端口镜像。
  • 数据包太多,看不过来怎么办?

    • 立即使用显示过滤器:从一开始就使用过滤器(如 http, dns)来缩小范围。
    • 使用捕获过滤器:如果条件允许,在捕获前就设置好过滤规则。
  • 数据包的顺序和时间戳是什么意思?

    • Number:捕获的序号。
    • Time:精确到微秒的时间戳,用于分析网络延迟和乱序问题,默认是相对时间(从捕获开始算起),可以设置为绝对时间。

Wireshark 2.0.2 是一个功能极其强大的工具,掌握它的关键在于:

  1. 熟悉界面:理解列表、详情、字节三个部分的关系。
  2. 善用过滤器显示过滤器是你的日常利器,捕获过滤器是你的性能加速器。
  3. 理解分层:从物理层到应用层,逐层分析数据包的结构。
  4. 勤于实践:多尝试分析不同的网络场景,如浏览网页、发送邮件、使用聊天工具等,在实践中积累经验。

希望这份教程能帮助你顺利入门 Wireshark 2.0.2,网络世界纷繁复杂,而 Wireshark 就是你探索它最得力的伙伴,祝你学习愉快!

分享:
扫描分享到社交APP
上一篇
下一篇