以太网 MAC 帧格式

news/2025/3/16 13:37:10/

文章目录

以太网 MAC 帧格式

以太网技术的正式标准是 IEEE 802.3,它规定了以太网传输数据的帧结构,我们可以把以太网 MAC层理解成高速公路,我们必须遵循它的规则才能在上面通行,以太网 MAC 层帧格式如下图所示
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以太网传输数据时按照上面的顺序从头到尾依次被发送和接收,我们下面进一步解释各个区域

  • 前导码(Preamble):为了实现底层数据的正确阐述,物理层使用 7 个字节同步码(0 和 1 交替(55- 55-55-55-55-55-55))实现数据的同步。
  • 帧起始界定符(SFD,Start Frame Delimiter):使用 1 个字节的 SFD(固定值为 0xd5)来表示一帧的开始,即后面紧跟着传输的就是以太网的帧头。
  • 目的 MAC 地址:即接收端物理 MAC 地址,占用 6 个字节。MAC 地址从应用上可分为单播地址、组播地址和广播地址。单播地址:第一个字节的最低位为 0,比如 00-00-00-11-11-11,一般用于标志唯一的设备;组播地址:第一个字节的最低位为 1,比如 01-00-00-11-11-11,一般用于标志同属一组的多个设备;广播地址:所有 48bit 全为 1,即 FF-FF-FF-FF-FF-FF,它用于标志同一网段中的所有设备。
  • 源 MAC 地址:即发送端物理 MAC 地址,占用 6 个字节。
  • 长度/类型:上图中的长度/类型具有两个意义,
    • 当这两个字节的值小于 1536(十六进制为 0x0600)时,代表该以太网中数据段的长度;
    • 如果这两个字节的值大于 1536,则表示该以太网中的数据属于哪个上层协议,
      • 例如 0x0800 代表 IP 协议(网际协议)
      • 0x0806 代表 ARP 协议(地址解析协议)等。
  • 数据:以太网中的数据段长度最小 46 个字节,最大 1500 个字节。最大值 1500 称为以太网的最大传输单元(MTU,Maximum Transmission Unit),之所以限制最大传输单元是因为在多个计算机的数据帧排队等待传输时,如果某个数据帧太大的话,那么其它数据帧等待的时间就会加长,导致体验变差,这就像一个十字路口的红绿灯,你可以让绿灯持续亮一小时,但是等红灯的人一定不愿意的。另外还要考虑网络I/O 控制器缓存区资源以及网络最大的承载能力等因素,因此最大传输单元是由各种综合因素决定的。为了避免增加额外的配置,通常以太网的有效数据字段小于 1500 个字节。
  • 填充域,由于协议要求整个 MAC 数据包的长度至少为 64 字节(接收到的数据包如果少于 64 字节会被认为发生冲突,数据包被自动丢弃),当数据段的字节少于 46 字节时,在填充域会自动填上无效数据,以使数据包符合长度要求。
  • 帧检验序列(FCS,Frame Check Sequence):为了确保数据的正确传输,在数据的尾部加入了 4 个字节的循环冗余校验码(CRC 校验)来检测数据是否传输错误。CRC 数据校验从以太网帧头开始即不包含前导码和帧起始界定符。通用的 CRC 标准有 CRC-8、CRC-16、CRC-32、CRC-CCIT,其中在网络通信系统中应用最广泛的是 CRC-32 标准。

以太网帧间隔

以太网相邻两帧之间的时间间隔,即帧间隙(IFG,InterpacketGap)。帧间隙的时间就是网络设备和组件在接收一帧之后,需要短暂的时间来恢复并为接收下一帧做准备的时间,IFG 的最小值是 96 bit time,即在媒介中发送 96 位原始数据所需要的时间,在不同媒介中 IFG 的最小值是不一样的。不管 10M/100M/1000M 的以太网,两帧之间最少要有 96bit time,IFG 的最少间隔时间

计算方法如下:

  • 10Mbit/s 最小时间为:96*100ns = 9600ns;
  • 100Mbit/s 最小时间为:96*10ns = 960ns;
  • 1000Mbit/s 最小时间为:96*1ns = 96ns。

参考

  • https://blog.csdn.net/yindq1220/article/details/138027595
  • 正点原子《开拓者之FPGA开发指南V3.2》
  • LwIP应用开发实战指南—基于STM32

http://www.ppmy.cn/news/1579574.html

相关文章

鸿蒙系统liteos_m开发环境配置

在工作中开发基于HC32F4A0的鸿蒙liteos_m的操作系统移植时,开发环境选的命令行模式,官方的参考请看链接《快速入门概述》 在ubuntu18.04环境中安装时,安装库和工具集时官方提供的安装库的指令无法进行安装,部分库应该是有安装顺序…

Java泛型程序设计使用方法

Java泛型程序设计是Java语言中一项强大的特性&#xff0c;它允许你编写更加通用和类型安全的代码。以下是Java泛型程序设计的使用方法和技巧&#xff1a; 1. 基本概念 泛型类&#xff1a;可以定义一个类&#xff0c;其中的某些类型是参数化的。 public class Box<T> {pr…

2019年蓝桥杯第十届CC++大学B组真题及代码

目录 1A&#xff1a;组队&#xff08;填空5分_手算&#xff09; 2B&#xff1a;年号字符&#xff08;填空5分_进制&#xff09; 3C&#xff1a;数列求值&#xff08;填空10分_枚举&#xff09; 4D&#xff1a;数的分解&#xff08;填空10分&#xff09; 5E&#xff1a;迷宫…

使用 Elasticsearch 构建多模式 RAG 系统:哥谭市的故事

作者&#xff1a;来自 Elastic Alex Salgado 学习如何构建一个多模态检索增强生成 (RAG) 系统&#xff0c;该系统集成文本、音频、视频和图像数据&#xff0c;以提供更丰富的、具有上下文的信息检索。 在这篇博客中&#xff0c;你将学习如何使用 Elasticsearch 构建一个多模态 …

目前人工智能的发展,判断10年、20年后的人工智能发展的主要方向,或者带动的主要产业

根据2025年的最新行业研究和技术演进趋势&#xff0c;结合历史发展轨迹&#xff0c;未来10-20年人工智能发展的主要方向及带动的产业将呈现以下六大核心趋势&#xff1a; 一、算力革命与底层架构优化 核心地位&#xff1a;算力将成为类似“新能源电池”的基础设施&#xff0c;…

Prosys OPC UA Gateway:实现 OPC Classic 与 OPC UA 无缝连接

在工业自动化的数字化转型中&#xff0c;设备与系统之间的高效通信至关重要。然而&#xff0c;许多企业仍依赖于基于 COM/DCOM 技术的 OPC 产品&#xff0c;这给与现代化的 OPC UA 架构的集成带来了挑战。 Prosys OPC UA Gateway 正是为解决这一问题而生&#xff0c;它作为一款…

从点灯开始的51单片机生活

陵谷纷纭新事改&#xff0c;筑台土石未应迟。 目录 sfr与sbit&#xff1f;不靠定时器的delay_ms延时函数所谓寄存器 sfr与sbit&#xff1f; 这第一课咱们主要来先理解一下sfr与sbit&#xff0c;以下可能是咱们这些新手朋友常见的点灯代码&#xff1a; #include<regx52.h&g…

MATLAB直方图全解析

直方图&#xff08;Histogram&#xff09;是数据可视化中最基础的图表之一&#xff0c;用于直观展示连续数据的分布特征。在MATLAB中&#xff0c;直方图不仅支持快速生成&#xff0c;还具备强大的数学运算和高度可定制的视觉效果&#xff0c;能够满足科研、工程和商业分析的多样…