0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于DWC_ether_qos的以太网驱动开发-MAC帧格式介绍

嵌入式USB开发 来源:嵌入式Lee 作者:嵌入式Lee 2023-08-30 09:23 次阅读

本文转自公众号,欢迎关注

基于DWC_ether_qos的以太网驱动开发-MAC帧格式介绍 (qq.com)

一.前言

以太网驱动,应用,编写调试等开发时,往往会抓包分析,此时有必要了解MAC帧的格式以便进行分析,我们参考标注文档对其进行一个整理备忘。

《802.3-2000_part1.pdf》的3. Media access control frame structure规定了使用CSMA/CD MAC的数据通信系统的两种帧格式:

基本MAC帧格式

对基本MAC帧格式的扩展,Tagged MAC帧,即携带QTag前缀的帧。

二.基本MAC帧格式

基本MAC帧格式如下,包括9个部分

wKgZomTtSJaABjpaAALBTTqyRbY287.png

其中

OCTETS表示8位,

1.字节的低位先发送,除了CRC31校验域是高位先发送按照bit流x31, x30,…, x1, x0发送,即x0是最后发送字节的最后发送位。

2.多字节数据按照大端解析,高字节在前先发送

各部分详细介绍如下:

序号 字段 大小(字节) 功能 说明
1 PREAMBLE 7 前导字段 用于PLS (PHYSICAL LAYER SIGNALING)实现和接收帧保持同步(前导和SFD发送时有冲突也会发送完全部前导和SFD)
10101010 10101010 10101010 10101010 10101010 10101010 10101010即0x55序列
2 SFD 1 帧开始定界符 10101011即0xD5
3 DESTINATION ADDRESS
(DA)
6 目的地址字段 目的站的地址。它可以是单播或多播(包括广播)地址。
全1是广播地址。
见后面MAC地址部分说明。
4 SOURCE ADDRESS
(SA)
6 源地址字段 发送帧站点的地址。CSMA/CD MAC子层不解释源地址字段。
5 LENGTH/TYPE 2 长度/类型字段 如果小于等于maxValidFrame=maxUntaggedFrameSize(1518)-18=1500则表示MAC CLIENT DATA区域长度
如果大于等于0x0600则表示帧类型。
6 MAC CLIENT DATA / 数据 MAC+DATA范围 46~1500字节
7 PAD / 填充 填充,使得DESTINATION ADDRESS~FCS满足最小帧长64字节。
8 FRAME CHECK SEQUENCE
(FCS)
4 CRC32校验值,校验DA到PAD区域之间的数据。生成多项式。
G(x) = x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1
注意FCS是x31最先发,x0最后发.
9 EXTENSION / 扩展域 0~(slotTime–minFrameSize) bits长
1000 Mb/s 半双工才有

2.1 MAC地址

48位MAC地址的定义如下

wKgaomTtSJaARThaAAGsmemNOUE520.png
位域 功能 说明
1 I/G 地址类型 LSB即最先发出的bit
区分是单播还是组播地址:
0:即I individual 为单播地址,
1:即G group 为组播地址。
注意本位只针对目的地址,对于源地址始终是0.
2 U/L 区分本地或全局地址:
0:即U universal为全局地址,
1:即L locally为本地地址。
广播地址该位是1.
3 46-BIT ADDRESSS

地址类型:

1 Individual Address
单播地址
地址和网络中特定的一个站点对应。
2 Group Address
组播地址
Multicast-Group Address多播地址 通过更高级别的约定与一组逻辑相关的站相关联的地址。
Broadcast Address广播地址 一种可区分的预定义多播地址,它总是表示给定LAN上所有站点的集合。
全1是广播地址

2.2无效帧

满足以下一个以上的条件

1.帧长度与长度/类型字段中指定的长度值不一致。如果长度/类型字段表示类型值,则假定帧长度与该字段一致,在此基础上不应视为无效帧。

2.长度不是八位的整数倍。

3.CRC32校验错误。

4.无效MAC帧的内容不得传递给LLC或MAC控制子层。无效MAC帧的出现可以被传送到网络管理。

三.Tagged MAC帧格式

标签的MAC帧是对普通MAC帧的扩展,在原来的基础上SA后添加了4字节的Qtag。见标准IEEE P802.1Q

wKgZomTtSJaAW9M6AAK1WX5DbC4156.png
序号 字段 大小(字节) 功能 说明
1 PREAMBLE 7 前导字段 同基本MAC帧
2 SFD 1 帧开始定界符 同基本MAC帧
3 DESTINATION ADDRESS 6 目的地址字段 同基本MAC帧
4 SOURCE ADDRESS 6 源地址字段 同基本MAC帧
5 LENGTH/TYPE = 802.1QTagType 2 QTag长度/类型
固定为0x8100表示802.1Q
Tag Protocol Type。
6 TAG CONTROL INFORMATION 2 QTag控制信息
a) A 3-bit User Priority field,
b) A Canonical Format Indicator (CFI), and
c) A 12-bit VLAN Identifier.
7 LENGTH/TYPE 2 长度/类型字段 插入QTag之前的MAC帧的原始长度/类型。
同基本MAC帧
8 MAC CLIENT DATA / 数据 同基本MAC帧
9 PAD / 填充 同基本MAC帧
对于填充,最小64字节的帧长可以包含4字节的TAG也可以不包含,不包含TAG则实际帧长是64字节了。
10 FRAME CHECK SEQUENCE 4 同基本MAC帧
11 EXTENSION / 扩展域 同基本MAC帧

四.wireshark中的帧解析

比如如下是一个arp请求包,wireshark可以解析其不同字段,比如左下侧点击Type右边数据0806即高亮。Wireshark抓包中不显示前导,帧开始符和FCS,因为前二者是固定的,FCS错误则收不到,MAC层作为无效帧就丢弃了。

wKgaomTtSJeANZt4AARavX0sH6w877.png

五.总结

调试以太网,MAC帧的格式是必须要了解的,使用wireshark可以方便解析,但是有时我们是直接驱动代码中打印原始数据,此时则需要手动去解析。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 以太网
    +关注

    关注

    40

    文章

    5371

    浏览量

    171024
  • 驱动
    +关注

    关注

    12

    文章

    1824

    浏览量

    85167
  • Mac
    Mac
    +关注

    关注

    0

    文章

    1099

    浏览量

    51363
收藏 人收藏

    评论

    相关推荐

    基于DWC_ether_qos以太网驱动开发-MDIO驱动编写与测试

    本文转自公众号欢迎关注 基于DWC_ether_qos以太网驱动开发-MDIO驱动编写与测试 一.前言
    的头像 发表于 08-30 09:37 3603次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-MDIO<b class='flag-5'>驱动</b>编写与测试

    基于DWC_ether_qos以太网驱动开发-描述符链表介绍

    本文转自公众号欢迎关注 一.描述符概述 1.0 前言 对于DWC Ethernet QoS驱动的编写来说,初始化完成之后,核心操作就是DMA的描述符链表配置(linked list
    的头像 发表于 08-30 09:39 4348次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-描述符链表<b class='flag-5'>介绍</b>

    基于DWC_ether_qos以太网驱动开发-数据流验证过程

    转自公众号欢迎关注 https://mp.weixin.qq.com/s/klrHhaLMM_0W3FGVwHXFkA 基于DWC_ether_qos以太网驱动开发-数据流验证过程
    的头像 发表于 08-31 08:41 1886次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-数据流验证过程

    基于DWC_ether_qos以太网驱动开发-收发驱动编写与调试

    本文转自公众号,欢迎关注 基于DWC_ether_qos以太网驱动开发-收发驱动编写与调试 (qq.com) https://mp.wei
    的头像 发表于 09-05 08:47 2207次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-收发<b class='flag-5'>驱动</b>编写与调试

    基于DWC_ether_qos以太网驱动开发-无OS环境移植LWIP

    本文转自公众号欢迎关注 基于DWC_ether_qos以太网驱动开发-无OS环境移植LWIP (qq.com) https://mp.weixin.qq.com/s
    的头像 发表于 09-06 08:40 1490次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-无OS环境移植LWIP

    基于DWC_ether_qos以太网驱动开发-LWIP的堆管理介绍

    本文转自公众号欢迎关注 基于DWC_ether_qos以太网驱动开发-LWIP的堆管理介绍 (qq.com) https://mp.wei
    的头像 发表于 09-08 08:40 1198次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-LWIP的堆管理<b class='flag-5'>介绍</b>

    基于DWC_ether_qos以太网驱动开发-RTOS环境移植LWIP与性能测试

    本文转自公众号,欢迎关注 基于DWC_ether_qos以太网驱动开发-RTOS环境移植LWIP与性能测试 (qq.com) https://mp.weixin.qq.com/s
    的头像 发表于 09-11 11:20 1909次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-RTOS环境移植LWIP与性能测试

    基于DWC_ether_qos以太网驱动开发-LWIP在PC上进行开发调试

    本文转自公众号欢迎关注 基于DWC_ether_qos以太网驱动开发-LWIP在PC上进行开发调试 (qq.com) https://mp
    的头像 发表于 09-11 08:40 1892次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-LWIP在PC上进行<b class='flag-5'>开发</b>调试

    基于DWC_ether_qos以太网驱动开发-LWIP的ARP模块介绍

    TCP/IP通讯第一步需要先调通ARP,否则TCP/IP包都不知道MAC地址要发给谁。这一篇来基于LWIP的ARP实现进行相关的分析。
    的头像 发表于 09-18 09:34 1744次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-LWIP的ARP模块<b class='flag-5'>介绍</b>

    设计软件核心以太网服务质量数据手册免费下载

    本文描述Synopsys设计软件核心以太网服务质量DWC以太网QoS核心5.10A。DWC以太网
    发表于 10-23 08:00 16次下载
    设计软件核心<b class='flag-5'>以太网</b>服务质量数据手册免费下载

    DesignWare核心以太网服务质量数据本

      本文档介绍Synopsys DesignWare核心以太网服务质量(DWC_Ethernet_qos)核心,5.10a。DWC_Ethernet_qos实现了与
    发表于 03-31 15:11 3次下载

    DesignWare核心以太网MAC通用评估数据手册

    DesignWare核心以太网MAC通用评估数据手册免费下载。作为DWC eth千兆GMAC详细参考文档使用
    发表于 03-31 15:13 3次下载

    基于DWC_ether_qos以太网驱动开发-包过滤

    以太网上数据非常多,如果所有数据都接收交给软件去处理软件负载会非常重,所以一般只需要接收发给自己的数据即可
    的头像 发表于 09-02 09:19 1616次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-包过滤

    基于DWC_ether_qos以太网驱动开发-描述符格式介绍

    前面我们介绍了描述符链表的工作模式,重点是了解环形链表是如何环形的,以及相关的寄存器。驱动编写就需要更进一步,了解描述符的具体内容,即4个描述符的每个字段的含义。
    的头像 发表于 09-04 14:14 2379次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-描述符<b class='flag-5'>格式</b><b class='flag-5'>介绍</b>

    以太网格式和功能详解

    以太网(Ethernet Frame)是以太网(Ethernet)协议用于在局域(LAN)中传输数据的基本单位。理解以太网
    的头像 发表于 10-08 10:03 1071次阅读