文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Network 之八 详解 MAC 地址、MAC 协议、MAC 控制器

2023-09-05 18:47

关注

  在网络通信中,MAC 一词应用非常广泛,可以指 MAC 协议,也可以指 MAC 控制器,还用来表示 MAC 地址,因此,今天就来系统学习一下网络通信中 MAC 相关的知识。

  MAC(Media Access Control,MAC)即媒体访问控制是一种网络数据传输策略,它决定了数据如何通过网线在两台计算机终端之间传输。MAC 协议的目的就是保证数据包在两台计算机终端之间的不碰撞和易于传输。主要方法有:

  MAC 的相关标准定义于 IEEE Std 802.3 中。IEEE Std 802.3-1985 中规定的半双工媒体访问控制协议是带有冲突检测的载波侦听多址访问(CSMA/CD),1997 年添加了全双工 MAC 协议。双工 MAC 协议不需要使用 CSMA/CD 协议,因为采用收发线路完全分离的物理介质,点到点的连接,不存在冲突。

  IEEE Std 802.3 第一部分就是对于 MAC 的定义,其中的第三节详细定义了 MAC 协议的帧格式。这个帧格式在博文 Network 之五 TCP/IP 协议族、工作流程、(TCP、IP、MAC、VLAN)常用协议格式详解 中已经介绍过了,这里就不在详细说了。
在这里插入图片描述

传输类型

  MAC 协议在局域网上的通信数据帧可以分为单播、广播、组播三种类型来进行传输。

单播

  单播(Unicast)是指从单一的源端发送到单一的目的端的通信方式。每个主机接口由一个 MAC 地址唯一标识。在一个局域网环境中,所有主机都能收到源主机发送的单播帧,但是其他主机发现目的地址与本地 MAC 地址不一致后会丢弃收到的帧,只有真正的目的主机才会接收并处理收到的帧。

广播

  广播(Broadcast)表示帧从单一的源发送到局域网环境中的所有主机。广播帧的目的 MAC 地址必须全为 FF,所有收到该广播帧的主机都要接收并处理这个帧。当需要网络中的所有主机都能接收到相同的信息并进行处理的情况下,通常会使用广播方式,例如 ARP 协议就是使用广播地址。

广播方式会产生大量流量,导致带宽利用率降低,进而影响整个网络的性能。

组播

  组播(Multicast)也称为多播可以理解为选择性的广播,主要用来实现在一个局域网环境中,只有部分主机响应的这种需求。主机侦听特定组播地址,接收并处理目的 MAC 地址为该组播 MAC 地址的帧。当需要网络上的一组主机(而不是全部主机)接收相同信息,并且其他主机不受影响的情况下通常会使用组播方式。

  注意,这里要区分一下 IP 地址中的组播地址。根据 IANA 的定义,IPv4 组播 MAC 地址的最高 24 位是 0x01005E。第 25 位为 0,其余 23 位为 IPv4 组播地址的最低有效 23 位。IPv6 组播 MAC 地址的最高 16 位是 0x3333。从 IPv6 组播地址的最低有效 32 位映射到最低有效 32 位。因此,IPv6 到 MAC 地址映射的重复问题也会像 IPv4 到 MAC 地址映射一样出现。
在这里插入图片描述

  MAC 控制器就是符合 MAC 协议规范的一个硬件实现。MAC 控制器工作在 OSI 七层通信模型中数据链路层的下半部分,主要负责通过定义于 IEEE Std 802.3 中的 MII、RMII 等接口控制与连接物理层的物理介质。
在这里插入图片描述

硬件设计

  从硬件的角度看,以太网接口电路主要由 MAC(Media Access Control,MAC)控制器物理层接口 PHY(Physical Layer,PHY) 两大部分构成,再加上 CPU,就形成了 CPU ⇄ MAC ⇄ PHY 的通信通道,如下图所示:
MAC_PHY
  但是,在实际的设计中,以上三部分并不一定是独立分开的,也不一定是集成在一起。 由于 PHY 整合了大量模拟硬件,而 MAC 则是典型的全数字器件,同时考虑到芯片面积及模拟/数字混合架构等原因,通常,将 MAC 集成进微控制器而将 PHY 留在片外。总的来说,可分为下列几种类型:

  MAC 地址(媒体访问控制地址)是分配给网络接口控制器 (Network Interface Controller ,NIC) 的唯一标识符,用于在网段内通信时用作网络地址,也称为局域网地址(LAN Address)、以太网地址(Ethernet Address)或物理地址(Physical Address)。

EUI-48

  IEEE 802 MAC 地址最初称为 MAC-48,现在称为 EUI-48 标识符(Extended Unique Identifiers)。EUI-48 和 MAC-48 标识符之间的区别仅在于名称和应用。MAC-48 用于在现有的基于 802 的网络应用程序中寻址硬件接口;EUI-48 现在用于基于 802 的网络,也用于识别其他设备和软件,例如蓝牙。以下网络技术使用 EUI-48 标识符格式:

格式

  IEEE 802 MAC 地址最初来自施乐网络系统以太网寻址方案,采用 48 个比特位,分为 6 组,每组 8 BIT(一个十六进制数),中间由 连字符 -冒号 : 分隔开 或者 不使用任何分隔符 这三种常见格式来表示。这个48 位地址空间可能包含 248 个可能的 MAC 地址(真正用在网卡上并且全球唯一的只有 246 个)。
在这里插入图片描述
  IEEE 802 MAC 地址的前 3 个 8 BIT 被称为组织唯一的标识符(Organizationally Unique Identifier,OUI),通常用来标识设备制造商,该部分由 IEEE 负责分配(所有分配详细列表可以在 https://standards-oui.ieee.org/oui/oui.txt 处查看),后 3 个 8 BIT 是设备制造商为其设备自定义的唯一标识。

  第一个 8 BIT 的第 0 比特位被称为 I/G(Individual/Group)位I/G = 0 表示该地址是单播地址(即某台设备的地址),I/G = 1 表示多播地址(组播 + 广播 = 多播);

  第一个 8 BIT 的第 1 比特位被称为 U/L(Universal/Local)位(也称为 G/L),U/L = 0 表示全球唯一的由 IEEE 负责分配的地址(用于标识全球的制造商和供应商),U/L = 1 表示本地管理,类似于 LAN (Local Area Network) IP 地址,仅用于管理员对自己的内部网络管理。

  只有在 I/G 位 和 U/L 位均为 0 的情况下的 MAC 地址才能用来表示全球唯一的设备,因此,真正用在网卡上并且全球唯一的只有 246 个。观察一下网卡的 MAC 地址,其第一个字节一般都是 4 的倍数,但是,早期以太网没有本地地址的概念,所以分配的 OUI 里面U/L 位也可能是 1。

获取

  IEEE 负责分配所有的 MAC 地址。现在,IEEE 提供了三种规格的 MAC 地址分配方式,价格差别很多。如果要获取 MAC 地址,在官网 https://standards.ieee.org/products-programs/regauth/ 中有详细的介绍如何购买。
在这里插入图片描述

EUI-64

  EUI-64 即 64 比特的 EUI,同样由 IEEE 负责分配。EUI-64 是一个产生 IPV6 接口 ID 的方式,在 IPv6 中,允许主机为自身分配唯一的 64 位 IPv6 接口标识符 (EUI-64)。EUI-64 标识符用于:

  IPv6 EUI-64 格式地址也可以通过 48 位 MAC 地址来进行转换。方法是将 16 位的 0xFFFE 插入到 OUI 和 NIC 之间,从而形成 64 位 EUI 地址。IEEE 已经将 FFFE 作为保留值,该值只能出现在从 EUI-64 MAC 地址生成的 EUI-48 中。
在这里插入图片描述
  然后,原 EUI-48 的 U/L 位需要反转。 此位标识此接口标识符是通用管理的还是本地管理的。如果为 0,则地址在本地管理,如果为 1,则地址全局唯一。
在这里插入图片描述
  值得注意的是,在 EUI-48 中的 OUI 部分中,IEEE 分配的全局唯一地址始终设置为 0,而本地创建的地址配置了 1。因此,当位反转时,它会保持其原始作用域(全局唯一地址仍然是全局唯一地址,反之亦然)。反转的原因可以在 RFC4291 第 2.5.1 节中找到。

字节序

  对于数据传输来说,数据是按每个字节中一位一位地传输的,一个字节传输完了才到下一个字节。因此,就必须要明确是先传一个字节中的高位还是低位,这关系到 EUI-48 中 I/G 位 和 U/L 位的位置。尽管不同的 IEEE 802 中不同规范要求不同,但是两种看似不一样,但是结果还是一样的。
在这里插入图片描述
  注意,MAC 本身是一个 6 字节的序列,发送时会优先发送第一个字节。但是,在实际存储环境中,有可能是使用 4 字节单元或者 8 字节单元的存储环境,由于存在大小端问题,此时需要自行处理哪个是第一个字节。

  1. https://www.cnblogs.com/lsgxeva/p/13932262.html
  2. https://en.wikipedia.org/wiki/MAC_address
  3. https://packetlife.net/blog/2008/aug/4/eui-64-ipv6/
  4. https://m.elecfans.com/article/1554014.html
  5. https://techhub.hpe.com/eginfolib/networking/docs/switches/5950/5200-4010_ip-multi_cg/content/499798327.htm
  6. https://ipcisco.com/lesson/multicast-mac-addresses/

来源地址:https://blog.csdn.net/ZCShouCSDN/article/details/125277304

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯