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

网络抓包与协议分析

一. 以太网帧格式分析

这是以太网数据帧的基本格式,包含目的地址(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.rhkb.cn/news/475318.html

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

相关文章

el-cascader 使用笔记

1.效果 2.官网 https://element.eleme.cn/#/zh-CN/component/cascader 3.动态加载&#xff08;官网&#xff09; <el-cascader :props"props"></el-cascader><script>let id 0;export default {data() {return {props: {lazy: true,lazyLoad (…

一分钟学习数据安全——IAM数据安全的安当实践

数字化进程推进加速&#xff0c;数据已经成为企业最重要的资产。越来越多的企业引入IAM来加强数据安全&#xff0c;确保数据在生产、存储、使用过程中的身份安全。IAM&#xff08;Identity and Access Management&#xff0c;身份与访问管理&#xff09;主要用于管理和控制用户…

使用 Axios 拦截器优化 HTTP 请求与响应的实践

目录 前言1. Axios 简介与拦截器概念1.1 Axios 的特点1.2 什么是拦截器 2. 请求拦截器的应用与实践2.1 请求拦截器的作用2.2 请求拦截器实现 3. 响应拦截器的应用与实践3.1 响应拦截器的作用3.2 响应拦截器实现 4. 综合实例&#xff1a;一个完整的 Axios 配置5. 使用拦截器的好…

c语言数据结构与算法--简单实现线性表(顺序表+链表)的插入与删除

老规矩&#xff0c;点赞评论收藏关注&#xff01;&#xff01;&#xff01; 目录 线性表 其特点是&#xff1a; 算法实现&#xff1a; 运行结果展示 链表 插入元素&#xff1a; 删除元素&#xff1a; 算法实现 运行结果 线性表是由n个数据元素组成的有限序列&#xff…

LeetCode - #139 单词拆分

文章目录 前言摘要1. 描述2. 示例3. 答案题解动态规划的思路代码实现代码解析1. **将 wordDict 转换为 Set**2. **初始化 DP 数组**3. **状态转移方程**4. **返回结果** **测试用例**示例 1:示例 2:示例 3: 时间复杂度空间复杂度总结关于我们 前言 本题由于没有合适答案为以往遗…

【第4章 | 分类与逻辑回归】(python机器学习)

一、逻辑回归 1.1逻辑回归 二项逻辑回归 • Binomial logistic regression model是一种分类模型 • 由条件概率P(Y|X)表示的分类模型 • 形式化为logistic distribution • X取实数&#xff0c;Y取值1,0 特点&#xff1a; • 事件的几率odds&#xff1a;事件发生与事件不发生…

Python毕业设计选题:基于python的豆瓣电影数据分析可视化系统-flask+spider

开发语言&#xff1a;Python框架&#xff1a;flaskPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 系统首页 个人中心 管理员登录界面 管理员功能界面 电影管理 用户管理 系统管理 摘要…

Scala之Array数组

可修改的Array import scala.collection.mutable.ArrayBuffer //Array:数组 //可修改的&#xff1a;ArrayBuffer //不可修改的&#xff1a;Array object Test1 {//可修改的&#xff1a;ArrayBufferdef main(args: Array[String]): Unit {//1.新建val arr1 ArrayBuffer(1,2,3)…

贴代码框架PasteForm特性介绍之select,selects,lselect和reload

简介 PasteForm是贴代码推出的 “新一代CRUD” &#xff0c;基于ABPvNext&#xff0c;目的是通过对Dto的特性的标注&#xff0c;从而实现管理端的统一UI&#xff0c;借助于配套的PasteBuilder代码生成器&#xff0c;你可以快速的为自己的项目构建后台管理端&#xff01;目前管…

麒麟网络负载均衡与高可用方案实践

安装 teamd 包。 yum -y install teamd Copy 一、配置TEAMING 查看两个网卡信息 ifconfig Copy 注意&#xff1a;根据实际网卡设备名称情况调整代码&#xff01;不同环境下网卡名称略有不同&#xff01; 根据查询的结果&#xff0c;两张网卡设备名称分别为 enp0s2 和 enp…

Python学习29天

二分查找 # 定义函数冒泡排序法从大到小排列 def bbble_sort(list):# i控制排序次数for i in range(len(list) - 1):# j控制每次排序比较次数for j in range(len(list) - 1 - i):if list[j] < list[j 1]:list[j], list[j 1] list[j 1], list[j] # 定义二分查找函数 def…

路由协议——iBGP与EBGP

一、适用场景 1、企业需要连接总部与分部&#xff0c;但总部与分部运行着不同的路由协议&#xff0c;总部到分部有自建的专线&#xff0c;端到端的设备支持BGP路由协议。 2、网络运营商&#xff0c;如电信、联通、移动等&#xff0c;各区域的ip路由表庞大&#xff0c;若要完成…

09.事件风暴

学习视频来源&#xff1a;DDD独家秘籍视频合集 https://space.bilibili.com/24690212/channel/collectiondetail?sid1940048&ctype0 文章目录 概念组成部分具体场景事件风暴寻找聚合 改进具体流程 参考 概念 事件风暴是Alberto Brandolini 发明的一种头脑风暴方法&#x…

蓝队技能-应急响应篇日志自动采集日志自动查看日志自动化分析Web安全内网攻防工具项目

知识点&#xff1a; 1、应急响应-系统日志收集-项目工具 2、应急响应-系统日志查看-项目工具 3、应急响应-日志自动分析-项目工具 演示案例-蓝队技能-工具项目-自动日志采集&自动日志查看&自动日志分析 系统日志自动采集-观星应急工具(Windows系统日志) SglabIr_Co…

【C++】绘制内存管理的地图

生活是属于每个人自己的感受&#xff0c;不属于任何人的看法。 前言 这是我自己学习C的第二篇博客总结。后期我会继续把C学习笔记开源至博客上。 上一期笔记是关于C的类与对象础知识&#xff0c;没看的同学可以过去看看&#xff1a; 【C】面向对象编程的艺术之旅-CSDN博客https…

在 CentOS 系统上直接安装 MongoDB 4.0.25

文章目录 步骤 1&#xff1a;配置 MongoDB 官方源步骤 2&#xff1a;安装 MongoDB步骤 3&#xff1a;启动 MongoDB 服务步骤 4&#xff1a;验证安装步骤 5&#xff1a;可选配置注意事项 以下是在 CentOS 系统上直接安装 MongoDB 4.0.25 的详细步骤&#xff1a; 步骤 1&#x…

core 不可变类型 线程安全 record

当一个类型的对象在创建时被指定状态后&#xff0c;就不会再变化的对象&#xff0c;我们称之为不可变类型。这种类型是线程安全的&#xff0c;不需要进行线程同步&#xff0c;非常适合并行计算的数据共享。它减少了更新对象会引起各种bug的风险&#xff0c;更为安全。 System.D…

OceanBase Shell开放内核运维接口,运维更便捷

DBA在日常业务中面临着繁琐的运维管理任务&#xff0c;亟需高效的工具和灵活的解决方案帮助他们简化操作、提升效率。因此&#xff0c;命令行操作和维护工具&#xff08;CLI工具&#xff09;&#xff0c;因其高效、灵活、可远程管理以及技术深度等特点&#xff0c;成为DBA和开发…

基于Amazon Bedrock:一站式多模态数据处理新体验

目录 引言 关于Amazon Bedrock 基础模型体验 1、进入环境 2、发现模型及快速体验 3、打开 Amazon Bedrock 控制台 4、通过 Playgrounds 体验模型 &#xff08;1&#xff09;文本生成 &#xff08;2&#xff09;图片生成 关于资源清理 结束语 引言 在云计算和人工智能…

go 学习网站,go例子 go demo go学习视频

1. 代码例子&#xff1a; Go by Example 2. b站 视频&#xff1a; 尚硅谷视频&#xff1a; 004_尚硅谷_程序的基本概念_哔哩哔哩_bilibili 3. go技术文档&#xff1a; fmt Go语言中文文档