以太网 MAC 帧格式

文章目录

    • 以太网 MAC 帧格式
    • 以太网帧间隔
    • 参考

本文为笔者学习以太网对网上资料归纳整理所做的笔记,文末均附有参考链接,如侵权,请联系删除。

以太网 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.mzph.cn/bicheng/73532.shtml

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

相关文章

pycharm配置镜像源【pycharm最新版(23.2.5及以上)方法】

经常遇到pycharm中无法安装或者安装慢的问题,纠结了好久,终于找到这个解决办法了。 为什么要配置镜像源: 因为Python的包管理工具pip一般从PyPI(Python Package Index)下载安装包,但是PyPI位于国外&#x…

驾驭 DeepSeek 科技之翼,翱翔现代学习新天际

在当今这个信息爆炸的时代,学习的方式和途径正在经历着前所未有的变革。人工智能技术的飞速发展,为我们的学习带来了全新的机遇和挑战。DeepSeek 作为一款强大的大语言模型,凭借其卓越的性能和丰富的功能,为现代学习注入了新的活力…

科普:WOE编码与One-Hot编码

WOE编码是业务逻辑与统计建模的结合,适合强业务导向的场景; One-Hot编码是数据驱动的特征工程,适合追求模型性能的场景。 编码方式核心价值典型案例WOE编码保留变量预测能力,适配线性模型银行违约预测逻辑回归One-Hot编码释放特征…

Python----数据分析(Pandas一:pandas库介绍,pandas操作文件读取和保存)

一、Pandas库 1.1、概念 Pandas是一个开源的、用于数据处理和分析的Python库,特别适合处理表格类数 据。它建立在NumPy数组之上,提供了高效的数据结构和数据分析工具,使得数据操作变得更加简单、便捷和高效。 Pandas 的目标是成为 Python 数据…

Type-C:智能家居的电力革命与空间美学重构

在万物互联的时代浪潮中,家居空间正经历着从功能容器到智慧终端的蜕变。当意大利设计师安东尼奥奇特里奥提出"消失的设计"理念二十年后,Type-C充电技术正以润物无声的方式重塑着现代家居的形态与内核,开启了一场静默的居住革命。 【…

C++ 左值(lvalue)和右值(rvalue)

在 C 中,左值(lvalue)和右值(rvalue)是指对象的不同类别,区分它们对于理解 C 中的表达式求值和资源管理非常重要,尤其在现代 C 中涉及到移动语义(Move Semantics)和完美转…

【含文档+PPT+源码】基于SpringBoot和Vue的编程学习系统

项目介绍 本课程演示的是一款 基于SpringBoot和Vue的编程学习系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系统 3.该项…

关于新奇的css

background: linear-gradient(154deg, #07070915 30%, hsl(var(--primary) / 30%) 48%, #07070915 64%); filter: blur(100px); background: linear-gradient(154deg, #07070915 30%, hsl(var(--primary) / 30%) 48%, #07070915 64%); 这是一个线性渐变背景设置,角度…

Maxscript如何通过单击现有按钮添加新按钮?

创建一个按钮,你可以单击它,然后添加一个新按钮。 你必须创建一个动态UI,使用maxscript UI元素,将卷展栏构建为字符串,然后评估该字符串并打开新的卷展栏以更新你的UI;使用RolloutCreator(请参阅帮助文件)帮助您构建卷展栏,并打开新的卷展栏以更新您的UI,看下面的示…

Android控件Selector封装优化指南:高效实现动态UI效果

本文详细介绍了如何在Android开发中优化selector的封装,涵盖Button、TextView、ImageView、CheckBox、RadioButton等常见控件的动态效果实现。通过结合Material Design组件、矢量图、Ripple效果以及动画Selector,提供了一套现代化、高性能的解决方案&…

pytest+allure+jenkins

本地运行参考:pytestallure 入门-CSDN博客 jenkins运行如下: 安装插件:allure 配置allure安装目录 配置pytest、allure 环境变量 配置流水线 进行build,结果如下 ,点击allure report 查看结果

C#核心笔记——(五)框架概述

.NET Ftamework中几乎所有功能都是通过大量的托管类型提供的。这些类型组织在层次化的命名空间中,并打包为一套程序集,与CLR一起构成了.NET平台。 有些.NET类型是由CLR直接使用的,且对于托管宿主环境而言是必不可少的。这些类型位于一个名为…

phpstudy+phpstorm+xdebug【学习笔记】

配置PHPStudy 配置PHPSTORM phpstorm选择PHP版本 配置DEBUG 设置服务器 编辑配置 学习参考链接::https://blog.csdn.net/m0_60571842/article/details/133246064

Vue:Vue+TS学习笔记

文章目录 前文Vue 3学习 Vue3 的重要性变更内容 底层逻辑选项式 API 和组合式 API体验组合式 API很多钩子组件通信 和 TS 结合开发为什么要用 TS? 正式上手 Vuets 开发给 ref 添加类型标记。ref, reactive, computed 综合代码模板引用类型传值写法 解决问题: 第三方包想要有类…

ACwing—01背包(暴力bfs+dp+递归+记忆化搜索算法)

问题 有 N件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。 输入格式 第一行两个整数&#xff0c…

洛谷 P2801 教主的魔法 题解

之前学过 莫队 算法,其运用了分块思想;但是我居然是第一次写纯种的分块题目。 题意 给你一个长度为 n n n 的序列 a a a(一开始 ∀ a i ∈ [ 1 , 1000 ] \forall a_i\in[1,1000] ∀ai​∈[1,1000])。要求执行 q q q 次操作&…

leetcode 75.颜色分类(荷兰国旗问题)

题目描述 题目分析 本题是经典的「荷兰国旗问题」,由计算机科学家 Edsger W. Dijkstra 首先提出。 要想单独解决这道题本身还是很简单的,统计0、1、2的数量然后按顺序赋值,或者手写一个冒泡排序,whatever。 但是在这一题中我们主…

rc4算法简单介绍及实现

0. 介绍 RC4是一种流密码&#xff0c;但因为安全性问题已经被弃用。 1. 算法描述 1.1 初始化 Key为生成的随机密钥&#xff1a;1-256B S为一数组&#xff1a;256B T为辅助数组&#xff1a;keylenB for (int i 0;i < 256;i) {S[i] i;T[i] S[i % keylen]; }1.2 初始化…

OpenEuler20.3 安装 Elasticsearch7.17

1、下载elasticsearch wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.17-linux-x86_64.tar.gz wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.17-linux-x86_64.tar.gz.sha512 shasum -a 512 -c elasticsea…

单元测试知识总结

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、什么是单元测试&#xff1f; 单元测试是指&#xff0c;对软件中的最小可测试单元在与程序其他部分相隔离的情况下进行检查和验证的工作&#xff0c;这里的…