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

本文转自公众号,欢迎关注
基于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个部分
其中
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地址的定义如下
  位域 功能 说明
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
序号 字段 大小(字节) 功能 说明
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层作为无效帧就丢弃了。
五. 总结
调试以太网,mac帧的格式是必须要了解的,使用wireshark可以方便解析,但是有时我们是直接驱动代码中打印原始数据,此时则需要手动去解析。


三星Note8什么时候上市?三星Note8消息小汇总:8月发布,跑分、配置曝光!
国产工控机在工业物流中的创新应用:引领产业升级与智能化发展
FPGA凭什么得到这么多关注和重视?
正点原子开拓者FPGA:数码管静态显示实验
意法半导体STM8S基本型系列最新微控制器通过最高125°C温度测试
基于DWC_ether_qos的以太网驱动开发-MAC帧格式介绍
18个月不卡的EMUI5.0正式到来!华为P9用户的新年大礼!
蓝牙耳机什么牌子好?2019最强四大蓝牙耳机品牌!
如何解决大数据的大规模存储问题?
三星Galaxy M31手机后置相机采用四摄像头+闪光灯设计
汽车电子市场需求爆发,手机供应链迎来转折点
mBot教育机器人套件演示
配电系统设计工具为向电动汽车的过渡铺平道路
数字PAM系统中接收器的采样和测量
90系列三极管参数
2025年变频器市场规模将达883亿元
HI-FI蓝牙收发一体方案
张飞电子:Protel99se画线工具栏操作
电路分析方法汇总
高薪大数据工程师必备——实战项目经验