10、IEEE802.3和Ethernet II帧的区别, 0x0806 ARP协议分析

2023-05-16

一、IEEE802.3和Ethernet II帧的区别

在这里插入图片描述

概念:
1、以太网上使用两种标准帧格式。第一种是上世纪80年代提出的DIX v2格式,即Ethernet II格式。第二种是1983年提出的IEEE 802.3格式。

2、两种格式得区别在于Ethernet 格式种包含一个Type字段,标识以太网帧处理完之后将被发送到哪个上层协议进行处理,IEEE 802.3格式种,同样位置是长度字段。

3、Ethernet II 格式相对使用广泛。

4、从Type/Length字段值可以区分两种帧类型:当Type字段值小于等于1500(0x05DC)时,帧使用的是IEEE 802.3格式。当Type字段值大于等于1536(0x0600)时,帧使用的是Ethernet II格式

Ethernet II格式

在这里插入图片描述

Ethernet II格式中Data字段长度在46-1500B,故以太网数据帧的长度在64(6+6+2+46+4)-----1518(6+6+2+1500+4)字节之间;

DMAC:目的MAC地址。字段长度6个字节,标识帧的接收者;
SMAC:源MAC地址。字段长度6个字节,标识帧的发送者;
Type:类型字段,字段长度2个字节,用于标识数据字段种包含的高层协议。

0x0800 代表 IP协议帧;
0x0806 代表ARP协议帧;
Data:数据字段是网络层数据,最小长度必须为46字节;
FCS:循环冗余校验字段,提供了一种错误检测机制,字段长度为4个字节;

IEEE802.3

在这里插入图片描述
Length字段定于了Data字段包含的字节数;
LLC(Logical Link Control)逻辑链路控制,由目的服务访问点DSAP(Destination Service Access Point)、源服务访问点SSAP(Source Service Access Point)和Control字段组成;
SSAP(Source Service Access Point)和Control字段组成;
SNAP(Sub-network Access Protocol)由机构代码(Org Code)和类型Type字段组成。Org Code三个字节都为0。Type字段的含义与Ethernet II中Type字段相同;

IEEE802.3帧根据DSAP和SSAP字段的取值,又可以分为以下几类:
1、当DSAP和SSAP都取特定值0xff时,802.3帧就变成了Netware-ETHERNET帧,用来承载NetWare类型的数据;

2、当DSAP和SSAP都取特定值0xaa时,802.3帧就变成了ETHERNET_SNAP帧。此帧可以用于传输多种协议。

3、DSAP和SSAP其他的取值均为纯IEEE802.3帧

故可以说4种以太网帧。

二、0x0806 ARP协议分析

1、基本概念
ARP(Address Resolution Protocol) 即地址解析协议,用于实现从IP地址到MAC地址映射。

2、 ARP工作流程
(1):同一网段ARP工作流程分析

在这里插入图片描述

(1.1) PC1 要和PC3 通行,首先查看自己的ARP表,查看其中是否包含PC3的MAC地址信息,如果找到对应关系,直接利用ARP表中的MAC地址对IP数据包进行封装。并将数据包发送给PC3。

(1.2)如果PC1在ARP表中未找到PC3对应的MAC地址,则先缓存数据报文,然后利用广播方式(目标MAC地址FF:FF:FF:FF:FF:FF)发送一个ARP报文请求,ARP请求中的发送端MAC地址分别是PC1的IP地址和MAC地址,接收端的IP地址为PC3的IP地址,MAC地址全为0,因为ARP请求报文是以广播方式发送,所以该网段上的所有主机都可以接收到该请求包,但只有其IP地址与目的IP地址一致的PC3才会对该请求进行处理。

(1.3)PC3将ARP请求报文中的发送端(即PC1)的IP地址和MAC地址存入自己的ARP表中。然后以单播方式向PC1发送一个ARP相应报文,应答报文中就包含了自己的MAC地址,也就是原来在请求报文中要请求的目的MAC地址。

(1.4) PC1收到来自PC3的ARP响应报文之后,将PC3的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将原来缓存的IP数据包再次修改(在目的MAC地址字段填上PC3的MAC地址)后发送出去。

(2): 跨网段的ARP地址解析流程

(2.1) 如果主机A不知道网关的MAC地址(也就是主机A的ARP表中没有网关对应的MAC地址表项),则主机A先在本网段中发出一个ARP请求广播,ARP请求报文中的目的IP地址为网关的IP地址,代表其目的就是想获得网关的MAC地址。如果主机A已经知道网关的MAC地址,则略过此步。

(2.2) 网关收到ARP广播包后同样会向主机A发回一个ARP应答包。当主机A收到的应答包中获得网关的MAC地址后,在主机A向主机B发送的原报文的目的MAC地址字段填上网关的MAC地址后发给网关。

(2.3) 如果网关的ARP表中已有主机B对应的MAC地址,则网关直接将在来自主机A的报文中的目的MAC地址字段填上主机B的MAC地址后转发给B。

(2.4) 如果网关ARP表中没有主机B的MAC地址,网关会再次向主机B所在的网段发送ARP广播请求,此时目的IP地址为主机B的IP地址,当网关从收到来自主机B的应答报文中获得主机B的MAC地址后,就可以将主机A发来的报文重新再目的MAC地址字段填上主机B的MAC地址后发送给主机B。

3、协议格式
在这里插入图片描述

以太网目的地址: 目的主机的硬件地址。目的地址全为1表示广播地址
以太网源地址:源主机的硬件地址
帧类型:ARP:0x0806、 RARP:0x8035
硬件类型:表示硬件地址类型,ARP当前可用硬件类型如下:

类型含义备注类型含义备注
0x001以太网0x0012本地网
0x002实验性以太网0x0013超链路
0x003业务无线电 AX.250x0014SMDS
0x004Proteon ProNet令牌环0x0015帧中继
0x005ChaosNET0x0016ATM
0x006IEEE 802网0x0017HDLC(高级数据链路控制)
0x007ARCnet0x0018未指定
0x008超信道0x0019异步传输模式
0x009Lanstart0x0020串行线路
0x0010Autone短地址0x0021异步传输模式
0x0011Local talks

协议类型:IP类型:0x0800

硬件地址长度:对于以太网II来说,MAC地址作为硬件地址,因此该字段值为十六进制06

协议地址长度:对于IPv4来,IP地址长度位32个字节,因此该字段值为十六进制04

操作类型:ARP定义了两种操作:0x0001(请求)、0x0002(应答)

发送端以太网地址:对于以太网II来说,MAC地址作为硬件地址

发送端IP地址:对于IPv4来, 值为IPv4地址

目的以太网地址:对于以太网II来说,MAC地址作为硬件地址

目的IP地址:对于IPv4来, 值为IPv4地址

4、协议分析

(1) 普通ARP
即通过ip地址获得MAC地址,即网络中通过IP寻找对应MAC地址信息。

  1. 请求包
    在这里插入图片描述
    解析:
    链路层解析:
    主机(54 89 98 ec 0f 66) 向局域网内发送广播(ff ff ff ff ff ff), 使用类型类型为 ARP (0806);
    网络层解析:
    该数据包的硬件地址类型为以太网(00 01), 使用IPv4(08 00)协议类型, 其中硬件地址长度为6个字节(以太网MAC地址长度), 协议地址长度为4字节(IPv4地址长度);该数据包为ARP请求包(0001), 数据包内容为 宿主机MAC地址为54 89 98 ec 0f 66 ,IP地址为 192.168.1.2(c0 a8 01 02) 向网络(ff ff ff ff ff ff)中请求IP地址为192.168.1.4(c0 a8 01 04的mac地址。该网络中主机收到该数据包请求根据包中发送方地址信息,更新自己ARP表信息,若该IP地址为自己IP地址,则对请求方进行回复,若非自己IP地址,则丢弃。

  2. 响应包
    在这里插入图片描述
    解析:
    链路层解析:
    主机(54 89 98 49 3a 78) 向主机发送响应消息(54 89 98 ec 0f 66), 使用类型类型为 ARP (0806)
    网络层解析:
    该数据包的硬件地址类型为以太网(00 01), 使用IPv4(08 00)协议类型, 其中硬件地址长度为6个字节(以太网MAC地址长度), 协议地址长度为4字节(IPv4地址长度);该数据包为ARP响应包(0002), 数据包内容为 宿主机MAC地址为54 89 98 49 3a 78,IP地址为 192.168.1.4(c0 a8 01 04) 向主机(54 89 98 ec 0f 66)发出的ARP请求数据包进行响应,接收方收到该响应包更新系统ARP表。

(2)免费ARP

免费ARP报文与普通ARP请求报文的区别在于普通的ARP请求报文,其ARP封装内的“目的IP地址”是其他机器的IP地址,而免费ARP的请求报文,其ARP封装内的“目的IP地址”是其自己的IP地址。免费ARP的数据包格式如下图所示:
在这里插入图片描述

免费ARP在实际环境中的一些应用:

  1. 免费ARP主要用于检测IP地址冲突

当一台主机发送了免费ARP请求报文后,如果收到了ARP响应报文,则说明网络内已经存在使用该IP 的主机。

  1. 利用免费ARP确认设备接口地址

一般的设备在网卡地址加载阶段都会向网络中发送免费的ARP报文(也有些安全设备为了安全起见,让设备在加载地址期间不向外发送免费ARP报文),当我们想知道某些设备的接口地址但又没有相应记录可查时,我们就可以利用设备的这种特性,抓取其免费ARP报文,从而分析出其接口使用的IP地址。

  1. 使用免费ARP报文,更新某些设备的ARP表项

  2. 利用免费ARP的攻击

  3. 网关设备利用免费ARP防止ARP攻击

(3)代理ARP(proxy ARP)
代理ARP是ARP协议的一个变种。对于没有配置缺省网关的计算机要和其他网络中的计算机实现通信,网关收到源计算机的 ARP 请求会使用自己的 MAC 地址与目标计算机的 IP地址对源计算机进行应答。代理ARP就是将一个主机作为对另一个主机ARP进行应答。它能使得在不影响路由表的情况下添加一个新的Router,使得子网对该主机来说变得更透明化。同时也会带来巨大的风险,除了ARP欺骗,和某个网段内的ARP增加,最重要的就是无法对网络拓扑进行网络概括。代理ARP的使用一般是使用在没有配置默认网关和路由策略的网络上的。
 1. 基本实现
 在这里插入图片描述
 2. 数据解析
 在主机192.168.2.2 上ping 主机 192.168.3.2 抓取数据包如下:
在这里插入图片描述

解析: 主机192.168.2.2 与主机 192.168.3.2 进行通行,先向发送广播包,请求网关MAC地址,网关收到该广播后发送单播给请求方告知自己的MAC地址信息。

抓取 192.168.3.0/24 网络侧数据包如下:
在这里插入图片描述

解析: 网关收到192.168.2.1 发送给192.168.3.2的信息,先检查自身MAC地址表若没有192.168.3.2 的MAC地址信息,则在192.168.3.0 网段进行广播请求192.168.3.2 的MAC地址信息,192.168.3.2收到网关的ARP请求信息,向网关发送单播告知自己的MAC地址信息。
 
5、ARP常用命令

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

10、IEEE802.3和Ethernet II帧的区别, 0x0806 ARP协议分析 的相关文章

  • 目标跟踪之ECO代码运行及原理简介

    论文地址 xff1a https arxiv org pdf 1611 09224 pdf 代码地址 xff1a https github com martin danelljan ECO ECO xff08 Efficient Convo
  • UAV123数据集下载、简介及配置

    UAV123主要由91个无人机视频组成 xff0c 其中有数个视频序列较长 xff0c 拆分成三四个较短的片段 xff0c 使用多次 xff0c 所以有123个groundtruth xff0c 其中包含20个长视频即UAV20L xff0
  • UAVDT:The Unmanned Aerial Vehicle Benchmark: Object Detection and Tracking数据集下载

    无人机数据集对于目标跟踪而言是一大挑战 xff0c 近年来 xff0c 正对无人机的数据集也越来越多 xff0c UAVDT是ICCV2018提出的一个数据集 xff0c 共包含80000帧图片 xff0c 不仅可以用于目标跟踪 xff0c
  • Linux编译opencv4.4.0报错“/usr/bin/ld: cannot find -lopencv_shape”

    opencv4 4 0下载地址 xff1a https sourceforge net projects opencvlibrary files 问题描述 安装完opencv4 4 0后编译C 43 43 代码显示找不到lib库文件 usr
  • 利用红外图像数据集FLIR Thermal Starter训练yolov5目标检测算法

    Yolov5代码 xff1a https github com ultralytics yolov5 数据集 xff1a https www flir com oem adas adas dataset form 运行环境 xff1a Ub
  • 目标跟踪之ICCV2021 Learning Spatio-Temporal Transformer for Visual Tracking代码复现

    代码地址 xff1a https github com researchmm Stark 论文地址 xff1a https arxiv org abs 2103 17154 一 配置环境 conda create n stark span
  • 目标跟踪之LTMU:High-Performance Long-Term Tracking with Meta-Updater环境配置及代码运行

    代码地址 xff1a https github com Daikenan LTMU 论文地址 xff1a High Performance Long Term Tracking with Meta Updater LTMU是CVPR2020
  • 英伟达NVIDIA Jetson系列产品刷机(SDK Manager)

    英伟达的TX NX AGX可以说是近几年边缘计算中非常牛的产品了 可Linux系统经常会出现安装某软件后系统环境崩掉的情况 xff0c 接着系统崩掉的机会 xff0c 记录一下Jetson AGX Xavier的刷机过程 准备 xff1a
  • seL4的编译和运行(OdroidXU3)

    seL4支持平台 seL4所在的git如下 xff1a https github com seL4 seL4 git 不过我们编译和运行seL4一般不只是用这个git xff0c 而是借助seL4test xff08 seL4的测试框架 x
  • 目标跟踪之Pysot系列代码训练(SiamRPN\SiamRPN++)

    代码地址 xff1a https github com STVIR pysot 环境配置参考博客 xff1a Siam系列跟踪算法工具包PySOT配置 一 数据集准备 Pysot系列跟踪器训练的时候 xff0c 首先将数据集进行裁剪 xff
  • 基于Paddle实现实例分割

    百度的Paddle这几年发展十分迅速 xff0c 而且文档十分齐全 xff0c 涉及到机器视觉的多个应用领域 xff0c 感觉还是非常牛的 xff0c 各种backbone xff0c 损失函数 数据增强手段以及NMS等 xff0c 整体感
  • 机器学习笔记: 时间序列 分解 STL

    1 前言 STL Seasonal and Trend decomposition using Loess 是以LOSS 作为平滑方式的时间序列分解 LOSS可以参考机器学习笔记 xff1a 局部加权回归 LOESS UQI LIUWJ的博
  • C++11 auto遍历

    C 43 43 11这次的更新带来了令很多C 43 43 程序员期待已久的for range循环 xff0c 每次看到javascript xff0c lua里的for range xff0c 心想要是C 43 43 能有多好 xff0c
  • C++ 文件的读写(fin && fout)

    如何让键盘输入字符保存在 txt文件中 如何让我们自己在键盘上输入的字符不仅仅在屏幕上显示 xff0c 而且还能保存在特定路径的文件中 xff0c 这让简单枯燥的控制台命令程序变得略有趣 首先 xff0c 先看看cin和cout对象 xff
  • 基本矩阵、本质矩阵和单应矩阵

    两幅视图存在两个关系 xff1a 第一种 xff0c 通过对极几何一幅图像上的点可以确定另外一幅图像上的一条直线 xff1b 另外一种 xff0c 通过上一种映射 xff0c 一幅图像上的点可以确定另外一幅图像上的一个点 xff0c 这个点
  • 矩阵零空间

    矩阵A的零空间就Ax 61 0的解的集合 零空间的求法 xff1a 对矩阵A进行消元求得主变量和自由变量 xff1b 给自由变量赋值得到特解 xff1b 对特解进行线性组合得到零空间 假设矩阵如下 xff1a 对矩阵A进行高斯消元得到上三角
  • VIO学习总结

    VIO xff08 visual inertial odometry xff09 即视觉惯性里程计 xff0c 有时也叫视觉惯性系统 xff08 VINS xff0c visual inertial system xff09 xff0c 是
  • 单应性(Homography)变换

    我们已经得到了像素坐标系和世界坐标系下的坐标映射关系 xff1a 其中 xff0c u v表示像素坐标系中的坐标 xff0c s表示尺度因子 xff0c fx fy u0 v0 xff08 由于制造误差产生的两个坐标轴偏斜参数 xff0c
  • senmantic slam mapping

    basicStructure hpp common h 定义一些常用的结构体 以及各种可能用到的头文件 xff0c 放在一起方便include 相机内参模型 增加了畸变参数 xff0c common headers h各种可能用到的头文件
  • Ubuntu 20.04 VNC 安装与设置

    原链接 VNC是一个远程桌面协议 按照本文的说明进行操作可以实现用VNC对Ubuntu 20 04进行远程控制 一般的VNC安装方式在主机没有插显示器的时候是无法使用的 下面的操作可以在主机有显示器和没有显示器时都能够正常工作 首先安装x1

随机推荐

  • opencv中类型转换问题

    记录一下最近困惑我的问题 方便以后查阅 在学习立体匹配算法中BM算法时 xff0c 出现在了关于类型转换的问题 xff1a disp convertTo disp8u CV 8U 255 numberOfDisparities 16 不知道
  • 最大似然估计MLE与贝叶斯估计

    最大似然估计 Maximum Likehood Estimation MLE 最大似然估计的核心思想是 xff1a 找到参数 的一个估计值 xff0c 使得当前样本出现的可能性最大 用当年博主老板的一句话来说就是 xff1a 谁大像谁 xf
  • 大疆Livox_mid 40雷达初体验

    为了解决无人车上镭神雷达FOV小而导致的车前3m内无法看到锥形桶问题 东家给公司邮寄了一台大疆的mid40雷达 不得不说 颜值真的高 光看颜值 就甩镭神几条街 昨天重新配置镭神的激光雷达 官方给的配置软件 真的是 用的我心碎啊 算了 不提了
  • 地铁供电系统的构成

    地铁供电系统一般划分为以下几部分 xff1a 外部电源 xff1b 主变电所 xff1b 牵引供电系统 xff1b 动力照明系统和杂散电流腐蚀防护系统 xff1b 电力监控系统 外部电源地铁供电系统的外部电源就是地铁供电系统主变电所供电的外
  • C++ Vector常用函数

    C 43 43 Vector常用函数 begin 函数 原型 xff1a iterator begin const iterator begin 功能 xff1a 返回一个当前vector容器中起始元素的迭代器 end 函数 原型 xff1
  • STM32使用ADC获取内部温度传感器数据输出(直接读取/DMA两种方式实现)

    STM32使用ADC获取内部温度传感器数据输出 xff08 直接读取 DMA两种方式实现 xff09 前言一 内部温度传感器的使用 xff1f 二 代码操作讲解1 直接读取2 DMA处理 总结 前言 STM32F1系列 xff08 本代码基
  • fp32/fp64精度,4/8字节16进制转float/double十进制

    1 IEEE 754 32位单精度浮点数 xff08 4字节 xff09 1 1 32位单精度浮点数 其中 xff0c 32位16进制数包括1位符号位 SIGN xff0c 8位指数位 EXPONENT 和 23位尾数位 MANTISSA
  • SVG绘制圆环进度条

    在我们的大屏可视化项目中 xff0c 经常会用到各种各样的图表 与传统的表格展示 枯燥的文字阐述相比 xff0c 图表展示则使用户看起来更加直观 数据的展示则更加一目了然 本文基于svg绘图技术结合前端技术栈vue xff0c 以工作中常用
  • Canvas绘制地图

    在我们的大屏可视化项目中 xff0c 地图数据可视化是最常见功能 地图数据可视化目前的实现方案有很多 xff0c 其中最具有代表性的莫过于使用echarts xff0c 引入一个js文件 xff0c 再加上一些简单的配置 xff0c 这样一
  • 滚动动画(跑马灯动画)的几种实现方式

    在大屏可视化应用中 xff0c 滚动动效 xff08 跑马灯效果 xff09 也是常见的一种数据展现方式 xff0c 本章节针对字幕滚动和列表滚动效果做一个小小的总结 xff0c 结合vue框架 xff0c 具体展示效果如下 xff0c 从
  • 如何在Ubuntu上安装CUDA

    原链接 在Ubuntu上安装CUDA一直是比较麻烦的事情 由于不同版本的CUDA对显卡驱动有着不同的需求 而在有些电脑上安装最新的Nvidia闭源显卡驱动会导致无法进入图形界面 CUDA中也自带了Nvidia的显卡驱动 xff0c 但是如果
  • 加载loading动画

    提起加载 xff08 loading xff09 效果 xff0c 想必大家都不会陌生 xff0c 在目前的移动端 PC端 各类app均广泛使用 xff0c 使用loading动画能显著提升用户的交互体检 xff0c 尤其是在页面加载速度比
  • CSS锥形渐变实现环形进度条

    10月份因为疫情原因 又开启了居家办公模式 xff0c 空闲之余 xff0c 与其选择 躺平 xff0c 不如去做一些有意义的事情 xff0c 内心的想法驱使着我去做些什么 xff0c 但是又没有合适的素材 xff0c 直到接手了最近的一个
  • CSS实现个性化水球图

    在可视化应用中 xff0c 水球图也是一种常见的数据展示形式 xff0c 关于使用CSS实现个性化水球 xff0c 在相当长的一段时间并没有找到比较简洁的实现方式 xff0c 因此在以往的可视化作品中 xff0c 大多采用echarts插件
  • CSS实现3D球面字符云

    在大屏可视化应用中 xff0c 使用3D的场景有很多 xff0c 复杂的交互动画通常是使用Three js或echarts gl来实现 xff0c 但是在一些简单的3D场景中 xff0c CSS也可以实现一些不错的展示效果 本文使用CSS相
  • CSS实现渐变仪表盘的简单尝试

    在 CSS锥形渐变实现环形进度条 一章中 xff0c 讲解了实现渐变进度条的一点思路 xff0c 基于此思路 xff0c 本章节尝试性的使用CSS实现一个简单的渐变仪表盘 xff0c 给大家提供一些借鉴 实现角向渐变 xff0c 不得不提一
  • 【opencv】OpenCV开发环境配置(C++)

    软件版本 opencv 4 7 0 windowsvisual studio 2022 环境配置 1 创建项目 打开VS 2022 xff0c 点击创建新项目 点击项目 gt 点击属性 2 添加包含目录 点击VC 43 43 目录 gt 点
  • 1、什么是网络前缀

    基础知识 xff1a 1 已知一个IP地址 xff0c 如何区分它是A类地址还是B类或者C类地址呢 A类地址 1 0 0 0 到126 0 0 0 0 0 0 0 和127 0 0 0保留 B 类地址 128 1 0 0到191 254 0
  • ZYNQ petalinux设置固定IP地址

    背景 xff1a zynq petalinux在开机自启动以后ifconfig设置ip xff0c 然后运行应用程序 xff1b 如果设备没有串口且程序在启动过程中用Wireshark抓取不到信息 xff0c 这时 xff0c 就要使用固定
  • 10、IEEE802.3和Ethernet II帧的区别, 0x0806 ARP协议分析

    一 IEEE802 3和Ethernet II帧的区别 概念 xff1a 1 以太网上使用两种标准帧格式 第一种是上世纪80年代提出的DIX v2格式 xff0c 即Ethernet II格式 第二种是1983年提出的IEEE 802 3格