【网络】网络抓包与协议分析

news2024/11/21 23:42:06

网络抓包与协议分析

一. 以太网帧格式分析

这是以太网数据帧的基本格式,包含目的地址(6 Byte)、源地址(6 Byte)、类型(2 Byte)、数据(46~1500 Byte)、FCS(4 Byte)。

  1. Mac 地址类型

    分为单播地址、组播地址、广播地址。

    单播地址:是指第一个字节的最低位是 0 的 MAC 地址。

组播地址: 是指第一个字节的最低位是 1 的 MAC 地址。

在这里插入图片描述

广播地址:广播地址是发送至网络上所有设备的特殊地址,全为1(FF:FF:FF:FF:FF:FF)。
在这里插入图片描述

  • OUI(Organizationally-Unique Identifier): 厂商代码
  1. 头部信息

    目的Mac地址:标识帧的接收者,6个字节;

    源Mac地址:标识帧的发送者,6个字节;

    以太类型:指示帧中数据的类型,2个字节,例如:IPv4 (0x0800)、ARP (0x0806)。
    在这里插入图片描述

  2. 长度

    以太网帧的头部位14个字节,以太帧尾占4个字节,所搭载的数据长度位461500个字节。总的长度应为641518字节。

  3. 封装

    以太网帧将上层协议的数据封装在帧的数据部分,并通过类型(2 Byte)进行标识。

二. ARP协议分析

2.1 ARP数据包分析

在这里插入图片描述

我们通过Wireshark随机抓取一个ARP数据包,并分析其格式:

在这里插入图片描述

比如抓到的这个ARP数据包:

  • 由于ARP是网络层的协议,故前面14个字节为底层(数据链路层)封装的以太帧头:分别表示目的Mac(广播)、源Mac、类型(0x0806:ARP)。

  • 接下来是ARP协议的内容:
    在这里插入图片描述

  • 在最后,有一串0来补全,让数据帧长度满足最小长度64字节。

在这里插入图片描述

此处是补全为60个字节,加上以太帧尾4个字节,达到64个字节。

2.2 ARP协议工作过程

当主机 A 需向主机 B 发送数据且在 ARP 缓存中未找到 B 的 IP 与 MAC 对应关系时,A 广播 ARP 请求报文,包含 A 的 IP、MAC 及 B 的 IP。网络中只有 B 响应请求,以单播发回包含自己 IP、MAC 及 A 的 IP、MAC 的应答报文。A 收到应答后将 B 的 IP 与 MAC 对应关系存入 ARP 缓存。

三. ICMP协议分析

ICMP(Internet Control Message Protocol)即互联网控制报文协议,是 TCP/IP 协议族的一个子协议。
通过Ping程序,我们能够很容易地抓取到ICMP数据包。

3.1 ICMP格式:

在这里插入图片描述

  • Type字段表示ICMP消息的类型;
  • Code字段表示ICMP消息类型细分的子类型;
  • Checksum字段表示ICMP报文的校验和。
3.2 ICMP抓包

我们可以在命令提示符种Ping某个公网地址,就会产生ICMP报文。
在这里插入图片描述
此处的ICMP类型就是Echo请求报文。

3.3 ICMP功能
  1. 确认IP包是否成功到达目的地址
  2. 通知在发送过程中IP包被丢弃的原因

四.抓取DNS数据并分析UDP协议

dns是一个应用层协议,其传输层有时会使用TCP协议,有时会使用UDP协议。对于个人用户来说,大部分的使用场景都是UDP协议。

  • UDP使用场景:一般的域名解析查询,例如查询一个网站的 IP 地址等操作,通常使用 UDP 进行通信。

  • TCP使用场景:主要用于DNS服务器同步数据。

抓取DNS数据

在这里插入图片描述

在抓取的DNS数据中,前14个字节为以太帧头,接下来20个字节为IPv4头,接下来8个字节为UDP头,其余的为DNS数据。

UDP协议分析

在这里插入图片描述

UDP头长度为8个字节,依次为源端口(2 Byte)、目的端口(2 Byte)、数据总长度(2 Byte)、校验和(2 Byte)。

在这里插入图片描述

五. TCP协议分析

在这里插入图片描述

抓取TCP报文段

在这里插入图片描述

  • 比如抓到的这个TCP数据段,可以观察到源端口、目的端口、序号、确认序号等信息。

  • 但我们也发现现在呢不再是6个标志位,而是9个标志位。我们抓取的是FINACK为1的数据段,这应该是在延时应答与捎带应答的机制下,被动接收断开连接的一方将“两次挥手”合并导致的。

  • 此处抓到的TCP数据段,头部长度为20个字节,即没有选项。但我们依然可以看到一些选项的踪迹,比如此处的窗口扩展因子 ( Window size scaling factor)就是选项的一部分,因为没有选项,故此处是未知的。

    在这里插入图片描述

六. HTTP协议分析

为了更方便的抓取到HTTPS的数据包,我们使用Fiddler进行抓包,比如抓到的学校的办事大厅的数据包:

HTTP的头部是以文本形式 (键值对) 进行组织的,比如此处用到了GET方法、协议是HTTP/1.1、Host是ehall.dlut.edu.cn。也可以看到客户端携带Cookie作为个人身份标识来访问服务器。

在这里插入图片描述

同时,我们也能看到返回的HTTP数据,第一行依次为 协议、状态码、状态。

七. 思考及感悟

  1. 使用了显示过滤器后,Wireshark 的抓包工作量会减少吗?

不会,Wireshark 的显示过滤器是在数据包已经被捕获后,对已捕获的数据包进行筛选显示,它并不影响抓包的过程。

  1. MAC 帧的长度和 IP 数据报的长度有怎样的关系?

MAC帧是在IP数据包的头部和尾部分别加上帧头(14 Byte)和帧尾(4 Byte)。

MAC 帧长度在以太网中最小 64 字节,最大 1518 字节。IP 数据报长度可变,若过长可能需分片封装在多个 MAC 帧中;若过短可能需填充以满足 MAC 帧最小长度要求。

  1. 心得感悟

常常使用Wireshark、Fiddler等抓包工具有助于我们更好的理解网络中各个层次的结构,让我们对网络有更好的理解。

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

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

相关文章

RabbitMQ的工作队列在Spring Boot中实现(详解常⽤的⼯作模式)

上文着重介绍RabbitMQ 七种工作模式介绍RabbitMQ 七种工作模式介绍_rabbitmq 工作模式-CSDN博客 本篇讲解如何在Spring环境下进⾏RabbitMQ的开发.(只演⽰部分常⽤的⼯作模式) 目录 引⼊依赖 一.工作队列模式 二.Publish/Subscribe(发布订阅模式) …

python学习_3.正则表达式

来源:B站/麦叔编程 1. 正则表达式的7个境界 假设有一段文字: text 身高:178,体重:168,学号:123456,密码:9527要确定文本中是否包含数字123456,我们可以用in运算符,也可以使用inde…

Python学习------第十天

数据容器-----元组 定义格式,特点,相关操作 元组一旦定义,就无法修改 元组内只有一个数据,后面必须加逗号 """ #元组 (1,"hello",True) #定义元组 t1 (1,"hello") t2 () t3 tuple() prin…

nodejs基于微信小程序的云校园的设计与实现

摘 要 相比于传统的校园管理方式,智能化的管理方式可以大幅提高校园的管理效率,实现了云校园管理的标准化、制度化、程序化的管理,有效地防止了云校园信息的不规范管理,提高了信息的处理速度和精确度,能够及时、准确地…

Excel——宏教程(精简版)

一、宏的简介 1、什么是宏? Excel宏是一种自动化工具,它允许用户录制一系列操作并将其转换为VBA(Visual Basic for Applications)代码。这样,用户可以在需要时执行这些操作,以自动化Excel任务。 2、宏的优点 我们可以利用宏来…

绿光一字线激光模组:工业制造与科技创新的得力助手

在现代工业制造和科技创新领域,绿光一字线激光模组以其独特的性能和广泛的应用前景,成为了不可或缺的关键设备。这种激光模组能够发射出一条明亮且精确的绿色激光线,具有高精度、高稳定性和长寿命的特点,为各种精密加工和测量需求…

Python Turtle绘图:重现汤姆劈树的经典瞬间

Python Turtle绘图:重现汤姆劈树的经典瞬间 🦀 前言 🦀🐞往期绘画🐞🐋 效果图 🐋🐉 代码 🐉 🦀 前言 🦀 《汤姆与杰瑞》(Tom and Jerr…

Oracle - 多区间按权重取值逻辑 ,分时区-多层级-取配置方案(二)

Oracle - 多区间按权重取值逻辑 ,分时区-多层级-取配置方案https://blog.csdn.net/shijianduan1/article/details/133386281 某业务配置表,按配置的时间区间及组织层级取方案,形成报表展示出所有部门方案的取值; 例如&#xff0…

DataGear 5.2.0 发布,数据可视化分析平台

DataGear 企业版 1.3.0 已发布,欢迎体验! http://datagear.tech/pro/ DataGear 5.2.0 发布,图表插件支持定义依赖库、严重 BUG 修复、功能改进、安全增强,具体更新内容如下: 重构:各模块管理功能访问路径…

详解八大排序(一)------(插入排序,选择排序,冒泡排序,希尔排序)

文章目录 前言1.插入排序(InsertSort)1.1 核心思路1.2 实现代码 2.选择排序(SelectSort)2.1 核心思路2.2 实现代码 3.冒泡排序(BubbleSort)3.1 核心思路3.2 实现代码 4.希尔排序(ShellSort&…

02 —— Webpack 修改入口和出口

概念 | webpack 中文文档 | webpack中文文档 | webpack中文网 修改入口 webpack.config.js (放在项目根目录下) module.exports {//entry设置入口起点的文件路径entry: ./path/to/my/entry/file.js, }; 修改出口 webpack.config.js const path r…

《InsCode AI IDE:编程新时代的引领者》

《InsCode AI IDE:编程新时代的引领者》 一、InsCode AI IDE 的诞生与亮相二、独特功能与优势(一)智能编程体验(二)多语言支持与功能迭代 三、实际应用与案例(一)游戏开发案例(二&am…

ubuntu 16.04 中 VS2019 跨平台开发环境配置

su 是 “switch user” 的缩写,表示从当前用户切换到另一个用户。 sudo 是 “superuser do” 的缩写,意为“以超级用户身份执行”。 apt 是 “Advanced Package Tool” 的缩写,Ubuntu中用于软件包管理的命令行工具。 1、为 root 用户设置密码…

[Docker#11] 容器编排 | .yml | up | 实验: 部署WordPress

目录 1. 什么是 Docker Compose 生活案例 2. 为什么要使用 Docker Compose Docker Compose 的安装 Docker Compose 的功能 使用步骤 核心功能 Docker Compose 使用场景 Docker Compose 文件(docker-compose.yml) 模仿示例 文件基本结构及常见…

C++时间复杂度与空间复杂度

一、时间复杂度(Time Complexity) 1. 概念 时间复杂度是用来衡量算法运行时间随着输入规模增长而增长的量级。它主要关注的是算法执行基本操作的次数与输入规模之间的关系,而非具体的运行时间(因为实际运行时间会受硬件、编程语…

【Linux】【Shell】Shell 基础与变量

Shell 基础 Shell 基础查看可用的 Shell判断当前 Shell 类型 变量环境变量查看环境变量临时环境变量永久环境变量PATH 变量 自定义变量特殊赋值(双引号、单引号、反撇号) 预定义变量bashrc Shell 基础 Shell 是一个用 C 语言编写的程序,相当于是一个翻译&#xff0c…

【SpringBoot】26 实体映射工具(MapStruct)

Gitee 仓库 https://gitee.com/Lin_DH/system 介绍 现状 为了让应用程序的代码更易于维护,通常会将项目进行分层。在《阿里巴巴 Java 开发手册》中,推荐分层如下图所示: 每层都有对应的领域模型,即不同类型的 Bean。 DO&…

理解和选择Vue的组件风格:组合式API与选项式API详解

目录 前言1. Vue 的两种组件风格概述1.1 选项式 API:直观且分块清晰1.2 组合式 API:灵活且逻辑集中 2. 深入理解组合式 API 的特点2.1 响应式变量与函数式编程2.2 逻辑组织更清晰2.3 更好的代码复用 3. 应用场景分析:如何选择 API 风格3.1 适…

Windows和mac OS共用VMware虚拟机

在Windows下使用VMware Workstation Pro创建的虚拟机,是以文件夹形式存储在硬盘中的,在mac OS中对应的虚拟机产品是VMware Fusion,那么在Windows下创建的虚拟机怎么在mac OS中使用呢? 在下图中我们可以看到,Windows 1…

【K8S系列】Kubernetes Pod节点ImagePullBackOff 状态及解决方案详解【已解决】

在 Kubernetes 中,当某个 Pod 的容器无法从指定的镜像仓库拉取镜像时,Pod 的状态会变为 ImagePullBackOff。这通常是因为指定的镜像不存在、镜像标签错误、认证失败或网络问题等原因。 以下是关于 ImagePullBackOff 的详细分析及解决方案。 1. ImagePullBackOff 状态分析 1.…