目录
1. MAC 层的硬件地址
48 位的 MAC 地址
2. MAC 帧的格式
以太网 V2 的 MAC 帧格式
无效的 MAC 帧
IEEE 802.3 MAC 与以太网 V2 MAC 帧格式的区别
1. MAC 层的硬件地址
硬件地址又称为物理地址,或 MAC 地址。
IEEE 802 标准为局域网规定了一种 48 位的全球地址(简称为地址)是指局域网上的每一台计算机中固化在适配器的 ROM 中的地址。
注意:如果连接在局域网上的主机或路由器安装有多个适配器,这样的主机或路由器就有多个“地址”。更准确些说,这种 48 位“地址”应当是某个接口的标识符。
例如:
48 位的 MAC 地址
·IEEE 注册管理机构 RA 负责向厂家分配前 3 个字节 (即高 24 位),称为组织唯一标识符 OUI (Organizationally Unique Identifier)。
·厂家自行指派后 3 个字节 (即低 24 位),称为扩展标识符 (extended identifier)。
·必须保证生产出的适配器没有重复地址。
·地址被固化在适配器的 ROM 中。
IEEE 规定地址字段的第 1 字节的最低位为 I/G (Individual / Group) 位。
单站地址:I/G 位 = 0。
组地址:I/G 位 = 1。组地址用来进行多播。
广播地址:所有 48 位都为 1(全 1)。为广播地址。只能作为目的地址使用。
IEEE 把地址字段第 1 字节的最低第 2 位规定为 G/L (Global / Local) 位。
全球管理:G/L 位 = 0。厂商向 IEEE 购买的 OUI 都属于全球管理。
本地管理:G/L 位 = 1。 这时用户可任意分配网络上的地址。
适配器具有过滤功能
·每收到一个 MAC 帧,先用硬件检查帧中的 MAC 地址。
·如果是发往本站的帧则收下,然后再进行其他的处理。
·否则就将此帧丢弃,不再进行其他的处理。
“发往本站的帧”包括以下 3 种帧:
·单播 (unicast) 帧(一对一)
·广播 (broadcast) 帧(一对全体)
·多播 (multicast) 帧(一对多)
以混杂方式 (promiscuous mode) 工作的以太网适配器只要“听到”有帧在以太网上传输就都接收下来。
2. MAC 帧的格式
·常用的以太网 MAC 帧格式有 2 种标准:
(1)DIX Ethernet V2 标准
(2)IEEE 的 802.3 标准
·最常用的 MAC 帧是以太网 V2 的格式。
以太网 V2 的 MAC 帧格式
上图分析:
MAC 层:
·目的地址字段: 6 字节。
·源地址字段: 6 字节。
·类型字段: 2 字节。类型字段用来标志上一层使用的是什么协议, 以便把收到的 MAC 帧的数据上交给上一层的这个协议。
·数据字段 :46 ~ 1500 字节。数据字段的正式名称是 MAC 客户数据字段。 最小长度 64 字节 - 18 字节的首部和尾部 = 数据字段的最小长度(46字节)
·FCS 字段 :4 字节。当数据字段的长度小于 46 字节时,应在数据字段的后面加入整数字节的填充字段,以保证以太网的 MAC 帧长不小于 64 字节。
当传输媒体的误码率为 时, MAC 子层可使未检测到的差错小于。
物理层:
·由硬件在帧的前面插入 8 字节。第一个字段共 7 个字节,是前同步码,用来迅速实现 MAC 帧的比特同步。第二个字段 1 个字节是帧开始定界符,表示后面的信息就是 MAC 帧。
为了达到比特同步,在传输媒体上实际传送的要比 MAC 帧还多 8 个字节。
抓包:
无效的 MAC 帧
·数据字段的长度与长度字段的值不一致;
·帧的长度不是整数个字节;
·用收到的帧检验序列 FCS 查出有差错;
·数据字段的长度不在 46 ~ 1500 字节之间。
·有效的 MAC 帧长度为 64 ~ 1518 字节之间。
对于检查出的无效 MAC 帧就简单地丢弃。 以太网不负责重传丢弃的帧。
IEEE 802.3 MAC 与以太网 V2 MAC 帧格式的区别
·当“长度/类型”字段值大于 0x0600(1536) 时,表示“类型”;小于 0x0600 时,表示“长度”。
·当“长度/类型”字段值小于 0x0600 时,数据字段必须装入逻辑链路控制 LLC 子层的 LLC 帧。
·在 802.3 标准的文档中,MAC 帧格式包括了 8 字节的前同步码和帧开始定界符。
现在市场上流行的都是以太网 V2 的 MAC 帧,但大家也常常把它称为 IEEE 802.3 标准的 MAC 帧。
无帧长度怎么办?交付给上层多大的数据?
也就是帧定界的帧尾标记。
根据曼彻斯特编码特点,有电平跳变,当接收端发现没有电压的变化,就找到了帧尾的位置,这个位置往前数,四个字节,就是数据字段的结束位置,数据字段不足46个字节,会在数据字段的后面加入一个整数字节的填,充字段,上一层有总长度,根据上一层的,总长度来去掉填充字段。
本文仅为个人学习笔记,欢迎一起学习~