当前位置: 首页 > news >正文

Wireshark 的基本使用

Wireshark 是一款功能强大的开源网络协议分析器,用于捕获和交互式浏览计算机网络上的数据包。它被广泛应用于网络故障排除、网络协议分析、软件和通信协议开发以及教育等领域。

在这里插入图片描述
在这里插入图片描述

Wireshark 的基本使用

Wireshark 是一个图形用户界面 (GUI) 工具,其使用相对直观。

1. 安装 Wireshark
  • Linux (Debian/Ubuntu):
    sudo apt update
    sudo apt install wireshark
    # 可能需要将您的用户添加到 wireshark 用户组,以便无需 root 权限即可捕获
    sudo usermod -aG wireshark $USER
    # 之后您可能需要注销并重新登录才能使更改生效
    
  • Windows/macOS:
    从 Wireshark 官网 下载对应操作系统的安装包并按照提示安装。在 Windows 上安装时,通常会同时安装 Npcap(或旧版 WinPcap),这是进行数据包捕获所必需的驱动程序。
2. 启动 Wireshark

安装完成后,您可以在应用程序菜单中找到并启动 Wireshark。

3. 选择捕获接口

启动 Wireshark 后,您会看到一个欢迎界面,列出了您计算机上所有的网络接口(例如以太网卡、Wi-Fi 网卡、回环接口等)。

  • 选择您想要捕获流量的接口。 例如,如果您通过 Wi-Fi 连接互联网,就选择您的 Wi-Fi 网卡;如果您通过有线连接,就选择以太网卡。
  • 通常,接口旁边会有实时流量图,您可以根据流量图判断哪个接口正在传输数据。
  • 双击 您要捕获的接口,或者选中接口后点击左上角的蓝色鲨鱼鳍图标(“Start capturing packets”)。
4. 开始捕获数据包

一旦选择了接口并开始捕获,您会看到数据包以列表的形式实时显示在 Wireshark 主窗口中。

  • 红色方块图标: 停止捕获。
  • 蓝色鲨鱼鳍图标: 开始捕获(如果当前未捕获)。
  • 圆形箭头图标: 重新启动捕获(会清空当前捕获到的数据)。
5. Wireshark 界面概览

Wireshark 的主界面通常分为三个主要面板:

  • 数据包列表面板 (Packet List Pane - 上方):

    • 显示捕获到的所有数据包的摘要信息,包括:
      • No. (序号): 数据包的编号。
      • Time (时间): 数据包被捕获的时间(相对于捕获开始的时间)。
      • Source (源地址): 发送数据包的 IP 地址或 MAC 地址。
      • Destination (目的地址): 接收数据包的 IP 地址或 MAC 地址。
      • Protocol (协议): 数据包使用的协议(如 TCP, UDP, HTTP, DNS 等)。
      • Length (长度): 数据包的字节长度。
      • Info (信息): 数据包的简要描述。
    • 点击列表中的任何数据包,下面的面板会显示该数据包的详细信息。
  • 数据包详细信息面板 (Packet Details Pane - 中间):

    • 显示选中数据包的详细协议层次结构。您可以展开或折叠各个协议层(如以太网层、IP 层、TCP 层、HTTP 层等),查看每个协议头中的字段和值。
    • 这对理解协议如何工作以及发现异常非常有用。
  • 数据包字节面板 (Packet Bytes Pane - 下方):

    • 显示选中数据包的原始字节数据(十六进制和 ASCII )。
    • 当您在数据包详细信息面板中选择一个字段时,这个面板会突出显示该字段对应的原始字节。
6. 过滤数据包

捕获大量数据包后,找到您感兴趣的数据包可能很困难。Wireshark 提供了强大的过滤功能:

  • 捕获过滤器 (Capture Filters): 在开始捕获之前设置,用于只捕获符合特定条件的数据包,从而减少捕获文件的体积。在选择接口的界面输入。

    • 示例:
      • host 192.168.1.1:只捕获与 IP 地址 192.168.1.1 相关的数据包。
      • port 80:只捕获端口 80 的流量(通常是 HTTP)。
      • tcp:只捕获 TCP 协议的流量。
      • udp:只捕获 UDP 协议的流量。
      • src host 192.168.1.1 and dst port 22:从源主机 192.168.1.1 到目的端口 22 的流量。
  • 显示过滤器 (Display Filters): 在捕获过程中或捕获结束后设置,用于只显示符合特定条件的数据包,不影响捕获文件的内容。在主窗口顶部的“Apply a display filter…”输入框中输入。

    • 示例:

      • http:只显示 HTTP 协议的流量。
      • dns:只显示 DNS 协议的流量。
      • ip.addr == 192.168.1.1:只显示源或目的地址为 192.168.1.1 的流量。
      • tcp.port == 80:只显示源或目的端口为 80 的 TCP 流量。
      • http.request:只显示 HTTP 请求。
      • http.response.code == 200:只显示 HTTP 状态码为 200 的响应。
      • !arp:不显示 ARP 流量。
      • tcp.flags.syn == 1 and tcp.flags.ack == 0:显示 TCP SYN 包。
      • contains "password":显示包含 “password” 字符串的数据包 (需要注意大小写和编码)。
    • 使用方法: 在显示过滤器输入框中输入表达式,然后按回车键或点击右侧的“Apply”按钮。如果过滤器语法错误,输入框会变成红色。

7. 保存和打开捕获文件
  • 保存: File -> SaveSave As...。通常保存为 .pcapng.pcap 格式。
  • 打开: File -> Open。您可以打开之前保存的捕获文件,或从其他工具(如 tcpdump)捕获的文件。
8. 分析功能(高级)
  • Follow TCP Stream (追踪 TCP 流): 右键点击一个 TCP 数据包,选择 Follow -> TCP Stream。这会弹出一个新窗口,显示该 TCP 连接中所有可打印的会话数据,非常有助于分析 HTTP 会话、FTP 会话等应用层数据。
  • 统计信息 (Statistics): Wireshark 提供了多种统计功能,如:
    • Protocol Hierarchy (协议分层): 查看各种协议在捕获中所占的比例。
    • Conversations (会话): 查看各种协议的会话列表,可以按 IP 地址、端口等排序。
    • Endpoint (端点): 列出所有参与通信的端点及其统计信息。
  • 专家信息 (Expert Information): Analyze -> Expert Information。Wireshark 会尝试识别捕获中的异常情况,如重传、重复 ACK、零窗口等,帮助您快速定位网络问题。
示例使用场景:
  • 查看网页访问:

    1. 选择您的网络接口。
    2. 开始捕获。
    3. 在浏览器中访问一个网页(例如 http://example.com)。
    4. 停止捕获。
    5. 在显示过滤器中输入 httpip.addr == your_web_server_ip
    6. 找到 HTTP GET 请求和 HTTP 200 OK 响应,右键点击 Follow -> TCP Stream 查看请求和响应的原始内容。
  • Ping 不通问题:

    1. 选择您的网络接口。
    2. 开始捕获。
    3. 在命令行中 ping other_host
    4. 停止捕获。
    5. 在显示过滤器中输入 icmp
    6. 查看是否有 ICMP 请求和响应,或者是否有 ICMP 错误消息。
  • DNS 解析问题:

    1. 选择您的网络接口。
    2. 开始捕获。
    3. 尝试访问一个域名。
    4. 停止捕获。
    5. 在显示过滤器中输入 dns
    6. 查看 DNS 查询和响应,确认解析是否成功。

重要提示:

  • 权限: 在 Linux 上,您可能需要 root 权限或将您的用户添加到 wireshark 组才能捕获数据包。
  • 混杂模式 (Promiscuous Mode): 默认情况下,Wireshark 会尝试将网卡设置为混杂模式,这意味着网卡会接收所有流经它的数据包,而不仅仅是发往本机的数据包。这对于网络分析至关重要。
  • 加密流量: Wireshark 无法直接解密 HTTPS 或其他加密协议的流量,除非您拥有相应的私钥并进行额外配置。
  • 法律与道德: 未经授权,请勿在您不拥有或未被授权的网络上捕获和分析数据包。

掌握这些基本操作,您就可以开始使用 Wireshark 进行网络分析了。随着实践的深入,您会发现它在网络故障排除和协议理解方面的巨大价值。

相关文章:

  • Spring Boot 项目中Http 请求如何对响应体进行压缩
  • 【Android Studio】新建项目及问题解决
  • RDMA技术详解:下一代高性能网络通信的核心
  • Karate 与Playwright的比较和融合
  • Vue 组件通信
  • SAP会计凭证抬头增强
  • MongoDB 安装实践:基于鲲鹏 ARM 架构 Ubuntu 环境
  • Linux x86_64架构下的四级分页机制详解
  • 使用 C/C++的OpenCV 将多张图片合成为视频
  • Proxy arp(代理 ARP)逻辑图解+实验详解+真机实践验证
  • 第16篇:数据库中间件多租户架构与动态数据源隔离机制
  • 社交机器人具身导航新范式!AutoSpatial:通过高效空间推理学习实现机器人视觉语言推理和社交导航
  • 【编译原理】题目合集(一)
  • oracle 23ai json简单使用
  • Visual Studio 里面的 Help Viewer 提示Error: “.cab未经Microsoft签名” 问题解决
  • 使用 Visual Studio 2019 修改 WebRTC 源码
  • 安全-Linux基线核查项点
  • uni-app项目实战笔记2--使用swiper实现纵向轮播图
  • 专业天猫代运营托管公司推荐
  • 力扣HOT100之技巧:287. 寻找重复数
  • 家具建设企业网站/宁波seo服务
  • 河北中石化建设网站/全网推广
  • 如何学做网站优化/品牌软文案例
  • 广州网站建设制作价格/1个百度指数代表多少搜索
  • 想接外包做网站/微信推广软件
  • 医院网站建设 价格低/新闻发布会