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

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

网络抓包与协议分析

一. 以太网帧格式分析

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

相关文章:

  • 【vue3+Typescript】unapp+stompsj模式下替代plus-websocket的封装模块
  • MySQL学习/复习10视图/用户/权限/语言连接数据库
  • 【MySQL】MySQL数据库基础
  • 计算机网络:运输层 —— TCP 的超时重传机制
  • VM虚拟机装MAC后无法联网,如何解决?
  • 【从零开始的LeetCode-算法】3232. 判断是否可以赢得数字游戏
  • 【运维项目经历|048】Terraform 云基础设施自动化部署项目
  • 01.01、判定字符是否唯一
  • apache中的Worker 和 Prefork 之间的区别是什么?
  • 第一讲,Opencv计算机视觉基础之计算机视觉概述
  • 力扣——动态规划
  • Google 推出 Android 16 开发者预览版 1 - 新功能一览
  • Redis基本的全局命令
  • 相机光学(四十四)——ALL-PD和PDAF
  • torch矩阵乘 mm bmm matmul区别
  • 光猫、路由器、交换机之连接使用(Connection and Usage of Optical Cats, Routers, and Switches)
  • vmware集群 vSAN HCL 数据库
  • 51c大模型~合集75
  • 【团购核销】抖音生活服务商家应用快速接入①——基础工作
  • BERT--公认的里程碑
  • Unity Dots下的动画合批工具:GPU ECS Animation Baker
  • 一文解决Latex中的eps报错eps-converted-to.pdf not found: using draft setting.
  • 【AI大模型引领变革】探索AI如何重塑软件开发流程与未来趋势
  • 《软件工程-北京大学》 学习笔记
  • elasticsearch介绍和部署
  • Apache Paimon】-- 6 -- 清理过期数据