以太网中的各种帧结构
帧结构(Ethernet Frame Structure)介绍
以太网信号帧结构(Ethernet Signal Frame Structure),有被称为以太网帧结构,一般可以分为两类 —— 数据帧和管理帧。
按照 IEEE 802.3,ISO/IEC8803-3 系列标准规范,数据帧还可以分为基本数据帧、虚拟局域网(VLAN,Virtual Local Area Network)采用的扩展帧、G bit Ethernet 中的扩充帧、突发帧(Burst Frame)以及帧标志类型放在客户数据区域中的 IEEE 802.3 帧等。
管理帧可包括用于与 PHY 层器件之间交换状态信息,实现控制与配置的管理帧,和用于防止网络拥塞的暂停帧(Pause Frame)等。
1. 数据帧
1.1 基本帧
基本帧(Base Frame)的结构如下图所示,各区域说明如下:
(1) 帧前序(Preamble):这个区域是:“1”、“0” 交替的 56 bit 数据;
(2) 帧起始符 SOF(Start of Frame Delimiter):固定值为 10101011 的 8 bit 数据,用于表示一帧的开始;
(3) MAC 目的地址与源地址(Destination & Source MAC Address):前三个字节是 IEEE 分配给各产商的地址,后三个字节是个产商自行决定的。源地址总是唯一的,而目的地址可以是单播(Unicast)地址、多播(Multicast)地址或者广播(Broadcast)地址;
【注】 关于MAC地址,请参考下文。
(4) 帧长度 / 类型(L/T,Length/Type):这个区域占用两个字节,其功能是用于表示 MAC 帧内不包括任何填充的数据字段长度或 MAC 帧内数据字段的数据类型。若这个区域的取值小于等于 1500 字节,则这个区域表示的是 MAC 帧内数据字段长度(客户数据区域字节数)。若这个区域的取值大于 1500 字节,则表示客户数据要到达的上册协议类型(客户数据类型区域);
【注】当帧长度 / 类型(L/T)区域只作为帧长度标志区域使用时,称为 IEEE802.3 帧,则这个区域长度小于或等于 1500 字节;而此区域作为帧类型区域时,则称其为 Ethernet-II 帧或者 DIX 帧,此时 L/T 的值大于 1500 字节。
(5) MAC 客户数据(MAC Client Data):即数据段区域,一般在 46~1500 字节之间;
(6) 填充区(Pad):填充区占用的字节数根据需要而定。这个区域的功能是确保帧尺寸不少于 64 字节。当从 MAC 目的地址到帧校验区整个数据帧尺寸少于 64 字节时,利用该区域将帧尺寸填充到 64 字节。因为尺寸小于 64 字节的帧属于违法帧,在接收端会被自动丢弃。如果帧尺寸已经达到 64 字节,则该区域占用的字节数应为零;
(7) 帧校验序列(FCS,Frame Check Sequence):这个区域占用 4 个字节,其功能是用于整个帧的差错校验。在帧的源端,从 MAC 的目的地址到填充区在全帧范围内进行循环冗余校验(CRC-32)计算,将计算结果放入源帧的此区域中,在帧的接收端,重新计算 CRC-32 的值,并进行对比。若一致则传输过程中无误码产生,否则帧中有误码产生。
这里应明确,MAC 客户数据区数据最低不能少于 46 个字节,而最高不能大于 1500 字节;网络 MAC 帧的尺寸最短不能少于 64 字节,而最长不能大于 1518 字节,这里不包括帧前序(Preamble)和帧起始符(SOF,Start of Frame Delimiter)两个区域,共占用 18 字节。
1.2 虚拟网采用的一种扩展帧结构
IEEE 802.3ac 标准有规范了在以太网上运行的虚拟局域网(VLAN,Virtual Local Area Network)采用的一种扩展帧结构。VLAN 协议允许将标识符或 “TAG” 插入以太网帧结构中,如下图所示:
在上述 VLAN 以太网扩展帧结构中,增加的 VLAN 标记 4 字节分为两部分。前两个字节由 “802.1Q 标记类型” 组成,被固定为 0x8100,为预留长度 / 类型区域,主要是赋予 VLAN 标记。其后两字节分为以下三个功能区域:
(1) 前 3 bit 是用户优先权标志区,用于对该帧分配的优先级指示;
(2) 最后 1 bit 是格式符合规定的指示符(CFI,Canonical Format Indicator),在以太网帧结构中用于指示路由选择信息区域(RIF,Routing Information Field);
(3) 剩余 12 bit 是 VLAN 帧标识符,他是以太网 VLAN 帧的唯一标志。加入 VLAN 标记后,使得 802.3ac 标准帧的最大长度由 1518 字节扩大到 1522 字节。
1.3 G bit 以太网的帧结构
在 1988 年,又制定了针对于 G bit 以太网的 IEEE 802.3z 标准规范,其帧结构图下图所示:
G bit 以太网 IEEE 802.3z 标准规范的扩充帧结构是在原 IEEE 802.3 标准规范的以太网信号的基本帧结构基础后面增加一个扩充区域,其目的是使帧长最短不少于 512 字节(从目的地址到填充区),从而保证发生的碰撞(冲突)可以传播到网上的每个节点。扩充区 bit 并非是数据,其作用仅仅是扩大了占用载体最短要求时间。
1.4 帧间间隙
以太网设备必须允许在传输帧之间有一个最小空载周期时间,这就是所称的帧间间隙 IFG(Inter-Frame Gap)或称为包间间隙 IPG(Inter-Packet Gap)。
其提供的这段间隙时间,使设备得到恢复,以便设备为接收下一帧做必要的准备。IEEE 标准规范帧间的最小间隔为不少于 96 bit 占用的时间,具体如下表所示:
2. 管理帧
2.1 基本管理帧
这是用于 PHY(物理层器件)与 STA(站管理实体)之间通信的管理帧(Management Frame),也称为基本管理帧(Base Management Frame)。ISO/IEC、IEEE 标准规范的有线以太网管理数据流的帧结构,其帧长通常为 8 个字节,即 64 bit,如下图所示。管理帧前后都可以是空载状态(IDLE)。
(1) 管理帧前序(Preamble):占用 4 个字节,为连续 32 个逻辑 “1”,对应于管理数据的 32 个时钟周期。管理帧前序用于连续监视管理接口管理,并从而为管理接口给出接收管理数据做准备的时间;若帧前序出现则标志 STA 处理的开始。管理接口有抑制管理帧前序的能力,以便缩短管理帧的长度,从而使 STA 可以尽快访问管理寄存器。
(2) 管理帧起始符(SOF):占用 2 bit,为固定值 “01”;
(3) 管理帧操作码(OP):占用 2 bit,10b 表示读取管理寄存器,01b 表示写管理寄存器,00b 和 11b 无效;
(4) 管理帧 PHY 地址(PHYAD):占用 5 bit;
(5) 管理帧寄存器地址(REGAD):占用 5 bit;
(6) 帧换向区 TA(Turnaround Field):占用 2 bit;
(7) 管理帧数据(Data):占用 2 个字节,即 16 bit。
2.2 暂停帧
在全双工通信工作模式下,以太网标准规范为了实现对数据流量的控制,规范了一种所谓的暂停帧。
这是应用发送暂停帧(Pause Frame)的方法,通告所有发送数据的站点暂停发送帧信息,防止链路发生拥塞。暂停帧仅适用于全双工通信,并不适用于半双工通信。
链路两端都可以向对端发送暂停帧,并且在对端暂停发送状态时,仍然可以向其发送暂停帧,以便延长对端停发 MAC 帧数据时间。
在全双工通信模式下,链路两端也可以只有一方支持暂停帧,而另一方不支持。只是不支持的一方无法解释其收到的暂停帧。可以通过自动协商原理了解对方端是否具备支持暂停帧的能力。
暂停帧的结构图如下图所示:
(1)目的地址(DA):可以使单播地址,也可以使广播地址 01-80-C2-00-00-01;
(2)类型区(L/T):固定值 88-08,表示此帧为 MAC 介质介入控制帧;
(3)暂停标志(MAC 操作码):固定值 00-01,表示此帧为暂停帧;
(4)MAC 控制参数:设定延时时间,取值范围为 00-00 到 FF-FF,时间单位为时隙(Slot Time);
(5)备用区域:占用 42 bit,无意义。用于使暂停帧长度满足最小帧的要求。
MAC 地址介绍
网络设备的 MAC 地址是全球唯一的。MAC 地址长度为 48 比特,通常用十六进制表示。MAC 地址包含两部分:前 24 比特是组织唯一标识符(OUI,OrganizationallyUniqueIdentifier),由 IEEE 统一分配给设备制造商。
注: 例如,Lattice 的地址为 00-D0-BD。后 24 位序列号是厂商分配给每个产品的唯一数值,由各个厂商自行分配(这里所说的产品可以是网卡或者其他需要 MAC 地址的设备)。
注: 详细信息请参考:http://standards.ieee.org/develop/regauth/oui/oui.txt
局域网上的帧可以通过三种方式发送。
第一种是广播,表示帧从单一的源发送到共享以太网上的所有主机。
广播帧的目的 MAC 地址为十六进制的 FFFFFFFFFFFF,所有收到该广播帧的主机都要接收并处理这个帧。
广播方式会产生大量流量,导致带宽利用率降低,进而影响整个网络的性能。
当需要网络中的所有主机都能接收到相同的信息并进行处理的情况下,通常会使用广播方式。
如下图所示:
第二种是单播,指从单一的源端发送到单一的目的端。
每个主机接口由一个 MAC 地址唯一标识,MAC 地址的 OUI 中,第一字节第 8 个比特表示地址类型。
对于主机 MAC 地址,这个比特固定为 0,表示目的 MAC 地址为此 MAC 地址的帧都是发送到某个唯一的目的端。
在冲突域中,所有主机都能收到源主机发送的单播帧,但是其他主机发现目的地址与本地 MAC 地址不一致后会丢弃收到的帧,只有真正的目的主机才会接收并处理收到的帧。
如下图所示:
第三种是组播,指给一组特定的主机(多播组)发送数据
组播比广播更加高效,组播转发可以理解为选择性的广播,主机侦听特定组播地址,接收并处理目的 MAC 地址为该组播 MAC 地址的帧。
组播 MAC 地址和单播 MAC 地址是通过第一字节中的第 8 个比特区分的。组播 MAC 地址的第 8 个比特为 1,而单播 MAC 地址的第 8 个比特为 0。
当需要网络上的一组主机(而不是全部主机)接收相同信息,并且其他主机不受影响的情况下通常会使用组播方式。
如下图所示:
此外,还有一些特殊的专用 MAC 地址,具体请查阅:
https://standards.ieee.org/products-services/regauth/grpmac/public.html
注:对上文原文中图片做了清晰度增强,下文做了图片替换。
原文来源
via:
上文: 以太网扫盲 —— 帧结构(Ethernet Frame Structure)介绍 Felix 发表于 2019/6/15 16:15:36
https://blog.chinaaet.com/justlxy/p/5100064174
下文: 以太网扫盲 ——MAC 地址介绍 Felix 发表于 2019/6/17 15:12:47
http://blog.chinaaet.com/justlxy/p/5100064182
相关文章:

以太网中的各种帧结构
帧结构(Ethernet Frame Structure)介绍 以太网信号帧结构(Ethernet Signal Frame Structure),有被称为以太网帧结构,一般可以分为两类 —— 数据帧和管理帧。 按照 IEEE 802.3,ISO/IEC8803-3 …...

C++入门基础题:数组元素逆序(C++版互换方式)
1.题目: 数组元素逆置案例描述: 请声明一个5个元素的数组,并且将元素逆置. (如原数组元素为:1,3,2,5,4;逆置后输出结果为:4,5,2,3,1) 2.图解思路: 3.代码演示: #include<iostream>using namespace std;int main(){int a…...

3款自己电脑就可以运行AI LLM的项目
AnythingLLM、LocalGPT和PrivateGPT都是与大语言模型(LLM)相关的项目,它们允许用户在本地环境中与文档进行交互,但它们在实现方式和特点上存在一些差异。AnythingLLM使用Pinecone和ChromaDB来处理矢量嵌入,并使用OpenA…...

各云厂商取消免费一年期SSL证书
目录 第一次削减SSL证书有效期: SSL证书单次签发有效期可能再次削减: 目前市场趋势显现: 各类削减政策意味着什么: 上有政策、下有对策—怎么实现超长SSL证书有效期: 如何申请全自动化部署的SSL证书:…...

自动化测试高级控件交互方法:TouchAction、触屏操作、点按,双击,滑动,手势解锁!
在自动化测试领域中,TouchAction 是一种非常强大的工具,它允许我们模拟用户在设备屏幕上的各种触摸事件。这种模拟不仅限于简单的点击操作,还包括滑动、长按、多点触控等复杂的手势。 点按与双击 点按和双击是触屏设备上最基本的操作之一。…...

leetcode165.解密数字
题目表述: 这道题目和斐波那契数列以及跳台阶问题十分相似。 斐波那契数列:0、1、1、2、3、5, 8、13、21、34 …… leetcode跳台阶问题:1、1、2、3、5, 8、13、21、34....... 这类题目的特点都是第N项的结果等于前两项的和。 但是解密数…...

对为什么react需要时间分片,vue3不需要的浅学习
1、时间分片 时间分片指在让应用在cpu进行大量计算时也能与用户交互,但时间分片只能对大量cpu计算进行优化,无法优化复杂DOM操作,因为要确保用户正在操作的界面是最新。 web卡顿的场景: 1、cpu计算量不大,但dom操作…...

电脑干货分享 · 删除资源管理器导航栏 OneDrive 及 3D 对象
Win10资源管理器的左侧导航栏默认有一个OneDrive的项,但由于微软龟速的原因,OneDrive在国内基本很少有人使用,我们动手给它KO了! 网上有很多这类的教程,但都是要手动修改注册表,对于小白来说,有…...

无人机之穿越机注意事项篇
一、检查设备 每次飞行前都要仔细检查穿越机的每个部件,确保所有功能正常,特别是电池和电机。 二、遵守法律 了解并遵循你所在地区关于无人机的飞行规定,避免非法飞行。 三、评估环境 在飞行前检查周围环境,确保没有障碍物和…...

防御课第一次作业第一天笔记整理
网络安全概述 网络安全(Cyber Security)是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭受到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断 中国网络安全市场近年来只增不…...

Git协作
文章目录 Git协作冲突冲突的发生情况解决冲突如何处理冲突 1 分支1.1 什么是Git分支1.2 创建分支 2 切换分支2.1 指向分支2.2 暂存分支切换分支与未提交更改的处理使用 Stash 临时保存更改Stash 的工作原理:场景设定使用 Git Stash 3 远程分支3.1 快进合并快进合并的…...

Three.js机器人与星系动态场景(四):封装Threejs业务组件
实际在写业务的时候不会在每个组件里都写几十行的threejs的初始化工作。我们可以 将通用的threejs的场景、相机、render、轨道控制器等进行统一初始化。同时将非主体的函数提到组件外部,通过import导入进组件。将业务逻辑主体更清晰一些。下面的代码是基于reactthre…...

亚马逊云科技 Amazon Bedrock 构建 AI 应用体验
前言 大模型应用发展迅速,部署一套AI应用的需求也越来越多,从头部署花费时间太长,然而亚马逊科技全托管式生成式 AI 服务 Amazon Bedrock,Amazon Bedrock 简化了从基础模型到生成式AI应用构建的复杂流程,为客户铺设了…...

程序员标准简历模板
链接: https://pan.baidu.com/s/1yMXGSSNba15b9hMXjA39aA?pwdb4ev 提取码: b4ev 3年工作经验简历 链接: https://pan.baidu.com/s/1OO7n1lRL6AkhejxYC9IyDA?pwdfmvv 提取码: fmvv 优秀学员简历 链接: https://pan.baidu.com/s/106Vkw_ulOInI47_5mDySSg?pwduudc 提取码: uu...

物联网设计竞赛_10_Jetson Nano中文转汉语语音
在windows中pyttsx3可以让汉字文本输出中文语音,但是在jetson上只能用英文说话 import pyttsx3def hanyu(test):engine pyttsx3.init()rate engine.getProperty(rate)engine.setProperty(rate,125)engine.say(test)engine.runAndWait() hanyu(你好) #engine.save…...

XML Schema 指示器
XML Schema 指示器 1. 引言 XML Schema 是一种用于定义 XML 文档结构和内容的语言。它提供了一种强大的方式来描述 XML 文档中允许的元素、属性和数据类型。XML Schema 指示器是在 XML Schema 定义中使用的一些特殊元素和属性,它们用于指示 XML 处理器如何解析和验证 XML 文…...

iOS UITableView自带滑动手势和父视图添加滑动手势冲突响应机制探索
场景 我们有时候会遇到这样的一个交互场景:我们有一个UITableView 放在一个弹窗中,这个弹窗可以通过滑动进行展示和消失(跟手滑动的方式),然后这个UITableView放在弹窗中,并且可以滚动,展示一些…...

RAG实践:ES混合搜索BM25+kNN(cosine)
1 缘起 最近在研究与应用混合搜索, 存储介质为ES,ES作为大佬牌数据库, 非常友好地支持关键词检索和向量检索, 当然,支持混合检索(关键词检索向量检索), 是提升LLM响应质量RAG(Retri…...

论文去AIGC痕迹:避免AI写作被检测的技巧
在数字化时代,AI正以其卓越的能力重塑学术写作的面貌。AI论文工具的兴起,为研究者们提供了前所未有的便利,但同时也引发了关于学术诚信和原创性的热烈讨论。当AI辅助写作成为常态,如何确保论文的独创性和个人思想的体现࿰…...

C#使用异步方式调用同步方法的实现方法
使用异步方式调用同步方法,在此我们使用异步编程模型(APM)实现 1、定义异步委托和测试方法 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Task…...

【Go系列】 Go语言的入门
为什么要学习Go 从今天起,我们将一同启程探索 Go 语言的奥秘。我会用简单明了的方式,逐一讲解 Go 语言的各个知识点,帮助你从基础做起,一步步深化理解。不论你之前是否有过 Go 语言的接触经验,这个系列文章都将助你收获…...

Dify 与 Xinference 最佳组合 GPU 环境部署全流程
背景介绍 在前一篇文章 RAG 项目对比 之后,确定 Dify 目前最合适的 RAG 框架。本次就尝试在本地 GPU 设备上部署 Dify 服务。 Dify 是将模型的加载独立出去的,因此需要选择合适的模型加载框架。调研一番之后选择了 Xinference,理由如下&…...

MICCAI 2024Centerline Boundary Dice Loss for Vascular Segmentation
MICCAI 2024 Centerline Boundary Dice Loss for Vascular Segmentation MICCAI 2024Centerline Boundary Dice Loss for Vascular Segmentation中心线边界Dice损失用于血管分割**摘要**:1. 引言相关工作: 2. 方法预备知识Dice的变化 3 实验3.1 数据集3.2 设置3.3 结…...

golang验证Etherscan上的智能合约
文章目录 golang验证Etherscan上的智能合约为什么要验证智能合约如何使用golang去验证合约获取EtherscanAPI密钥Verify Source Code接口Check Source Code Verification Status接口演示示例及注意事项网络问题无法调用Etherscan接口(最重要的步骤) golan…...

Visual Studio编译优化选项
目录 /O1 和 /O2 /Ox 内联函数 虚函数优化 代码重排 循环优化 链接时间优化 代码分割 数学优化 其他优化选项 在Visual Studio中,编译优化选项是用于提高程序性能的重要工具。编译器提供了多种优化级别和选项,可以根据不同的需要进行选择。 在…...

sql业务场景分析思路参考
1、时间可以进行排序,也可以用聚合函数对时间求最大值max(时间) 例如下面的例子:取最晚入职的人,那就是将入职时间倒序排序,然后limit 1 表: 场景:查找最晚入职员工的所有信息 se…...

Django权限系统如何使用?
Django的权限系统是一个强大而灵活的特性,允许你控制不同用户对应用程序中资源的访问。以下是使用Django权限系统的几个基本步骤: 1. 定义模型权限 在你的models.py文件中,你可以为每个模型定义自定义权限。这通过在模型的Meta类里设置perm…...

基于整体学习的大幅面超高分遥感影像桥梁目标检测(含数据集下载地址)
文章摘要 在遥感图像(RSIs)中进行桥梁检测在各种应用中起着至关重要的作用,但与其他对象检测相比,桥梁检测面临独特的挑战。在RSIs中,桥梁在空间尺度和纵横比方面表现出相当大的变化。因此,为了确保桥梁的…...

逻辑回归模型(非回归问题,而是解决二分类问题)
目录: 一、Sigmoid激活函数:二、逻辑回归介绍:三、决策边界四、逻辑回归模型训练过程:1.训练目标:2.梯度下降调整参数: 一、Sigmoid激活函数: Sigmoid函数是构建逻辑回归模型的重要激活函数&am…...

QT的OpenGL渲染窗QOpenGLWidget Class
Qt - QOpenGLWidget (class) (runebook.dev) 一、说明 QOpenGLWidget 类是用于渲染 OpenGL 图形的小部件。从Qt 5.4就开始退出,它对于OpenGL有专门的配合设计。 二、QOpenGLWidget类的成员 2.1 Public类函数 QOpenGLWidget(QWidget *parent nullptr,Qt…...