Wireshark网络协议分析 - Wireshark速览

news/2024/12/22 19:08:45/

在我的博客阅读本文

文章目录

  • 1. 版本与平台
  • 2. 快速上手
    • 2.1. 选择网络接口进行捕获(Capture)
    • 2.2. 以Ping命令为例进行抓包分析
    • 2.3. 设置合适的过滤表达式
    • 2.4. 数据包详情
    • 2.5. TCP/IP 四层模型
  • 3. 参考资料

1. 版本与平台

Wireshark是一个开源的网络数据包分析器,本文基于Windows11平台,Wireshark使用的是4.2.0版本,有官方的中文支持。

Untitled

2. 快速上手

2.1. 选择网络接口进行捕获(Capture)

打开Wireshark第一步需要选择一个网络接口:

Untitled

这里可以根据实际情况选择一个接口,笔者这里是WLAN上网的环境,重点看一下两个接口:

  • WLAN:无线局域网流量接口
  • adapter for loopback traffic capture:回环流量接口

举2个例子。

场景一:

我本地启动了一台tcp服务器,它的地址端口是127.0.0.1:9820;同时,我在本地9821端口启动了一台tcp客户端连接这个服务器,他的流量路径是:

127.0.0.1:9821 → 127.0.0.1:9820

此时,流量无需经过外部网关转发,是一个纯粹的系统内部端口直连流量,这种情况下就应该使用adapter for loopback traffic capture接口进行捕获。

场景二:

如果我是本地电脑访问比如https://masaiqi.com这种公网的网站,需要通过WLAN接口访问路由器进而访问,应该使用WLAN接口进行捕获。

2.2. 以Ping命令为例进行抓包分析

我这里选择的是捕获WLAN接口,执行以下命令:

ping masaiqi.com

在WireShark中我们有以下结果:

Untitled

2.3. 设置合适的过滤表达式

WLAN接口是我们本地访问公网的接口,所有流量都将被拦截,我们首先需要通过过滤器去定位我们需要的流量。

我们知道,Ping命令主要包含两个过程,DNS Query + ICMP。

因此,可以看到在WireShark的过滤表达式我们输入了以下过滤条件,即DNS协议或者ICMP协议:

dns or ((_ws.col.protocol == "ICMP") )

当表达式正确时,Wireshark会显示绿色,反之则是红色。

2.4. 数据包详情

这部分是Wireshark的核心部分,以序号1167这行数据为例,点击后WireShark显示如下:

Untitled

主要分为两部分:

  • 绿圈部分则为原始的二进制数据流,当然这里Wireshark采用了十六进制进行展示。
  • 红色方框为原始二进制数据流的具体含义,Wireshark很贴心的帮我们“翻译”原始二进制数据流。当鼠标放在红圈的某一行数据时,Wireshark会在绿圈中用蓝色背景色提示你这里对应原始数据流的哪一部分数据。

点开“Domain Name System”:

Untitled

根据笔者的观察,这里分为两种字段:

  • 直接展示的字段,比如Flags,直接值就是0x0100,和原始数据流一一对应。
  • 用中括号包裹的字段,比如[Name Length],这种一般是字节流没有直接表示,而是Wireshark根据当前上下文(可能不止当前的包)推断出来的。

数据包详情中有部分数据Wireshark会帮我们显示在Info列中,比如这里我们从封包内容读出是DNS查询masaiqi.com,数据包的Info列中也有相关内容展示。

2.5. TCP/IP 四层模型

封包详情中这部分数据刚好对应TCP/IP四层模型中的模型层次(原谅笔者草率的图)

Untitled

TCP/IP 四层模型,是分析Wireshark数据帧(数据包)的基础知识。

关于网络的框架模型普遍存在两套理解,即OSI七层模型与TCP/IP四层模型,本质上只是考虑问题的维度不一样,二者的关系如下:

Untitled

对于TCP/IP四层模型来说:

  • Application(应用层):用户直接与之交互的层,负责处理具体的应用程序细节。包括HTTP等协议(本例中使用域名查询服务)
  • Transport(传输层):负责在源点和目的地之间提供端到端的通信。包括TCP协议,UDP协议。(本例中使用UDP协议)
  • Internet(网络层,网络互连层):负责在网络中传输数据包。包括互联网协议(IP)。(本例中的IP协议,源ip与目标IP)
  • Network(网络接口层):负责在以太网、WiFi 这样的底层网络上发送原始数据包,工作在网卡这个层次,使用 MAC 地址来标识网络上的设备。(本例中是网络设备的MAC地址,源设备MAC地址与目标MAC地址)

这里仅快速了解一下TCP/IP四层模型的知识,不结合实例来说就是死记硬背了,后续会结合具体的封包内容,按协议不同单独分析。

3. 参考资料

  • 林沛满 -《Wireshark网络分析就这么简单》
  • 刘超 ——《趣谈网络协议》

http://www.ppmy.cn/news/1337838.html

相关文章

Word莫名其妙开启兼容模式将其永久取消的方法

这是因为Word模板文件被意外更改了 找到Word模板文件,目录在C:\Users\15976\AppData\Roaming\Microsoft\Templates 15976替换成你自己的用户名,不确定的就先点进C/Users看一看, AppData是隐藏文件夹,显示隐藏文件夹才能看见&am…

记录:Ubuntu 18.04 X86 上通过CMake 指定编译器工具链交叉编译。

最好是通过 cmake 命令行来设置,要不然你只有在 CMakeFiles.txt 里面自己写判断语句了。 要用 cmake 交叉编译,必须设置连接器,要不然会使用当前系统的 ld,就是 /usr/bin/ld。 但是其它平台是不会ld上的,elf格式都不…

软件价值3-A*算法寻路

A*算法(A-star算法)是一种启发式搜索算法,主要用于在图或网络中找到从起始节点到目标节点的最佳路径。它结合了Dijkstra算法的广度优先搜索和贪婪最优优先搜索的特点,通过估算从起始节点到目标节点的代价来指导搜索方向。 A*算法…

【PWN · ret2syscall】[CISCN 2023 初赛]烧烤摊儿

好久未做ret2syscall 一、题目分析 漏洞点,栈溢出: 然而到该漏洞点,需要“花钱”买下店铺。个人所有的零钱不够。 利用整数溢出(emmmm这里应该不算溢出漏洞,而是代码逻辑不规范,商品个数不能为负数&#x…

Observability:在 Elastic Stack 8.12 中使用 Elastic Agent 性能预设

作者:来自 Elastic Nima Rezainia, Bill Easton 8.12 中 Elastic Agent 性能有了重大改进 最新版本 8.12 标志着 Elastic Agent 和 Beats 调整方面的重大转变。 在此更新中,Elastic 引入了 Performance Presets,旨在简化用户的调整过程并增强…

LeetCode2670. 找出不同元素数目差数组:哈希表(预处理)

【LetMeFly】2670.找出不同元素数目差数组:哈希表(预处理) 力扣题目链接:https://leetcode.cn/problems/find-the-distinct-difference-array/ 给你一个下标从 0 开始的数组 nums ,数组长度为 n 。 nums 的 不同元素…

Spring | Spring的“数据库开发“ (Srping JDBC)

目录: Spring JDBC1.Spring JDBC的核心类 ( JdbcTemplate类 )2.Srping JDBC 的配置3.JdbcTemplate类的“常用方法”execute( ):直接执行“sql语句”,没有返回值update( ) :“增删改”,返回 “影响的行数”query( ) : “…

Android --- Content Provider是使用示例,通俗易懂

当两个应用程序之间需要共享数据时,可以通过 Content Provider 来实现。在这个示例中,我们将创建一个简单的 Content Provider,让 App_B 暴露人口总数的数据,并由 App_A 来获取这个数据。 首先,我们来创建一个简单的示…