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

news2024/9/23 1:19:55

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

MAC 协议

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

  • 带有冲突避免的载波侦听多路访问(Carrier Sense Multiple Access with Collision Avoidance,CSMA/CA):CSMA/CA 通过将每个计算机终端配置为在传输前发出信号来避免冲突。信号由发送计算机执行,以避免碰撞。
    在这里插入图片描述
  • 载波侦听多路访问/冲突检测(Carrier Sense Multiple Access with Collision Detection,CSMA/CD):CSMA/CD 是一种争用型的介质访问控制协议,基本原理是:每个节点都共享网络传输信道,在每个站要发送数据之前,都会检测信道是否空闲,如果空闲则发送,否则就等待;在发送出信息后,则对冲突进行检测,当发现冲突时,则取消发送。
    在这里插入图片描述
      它比 CSMA/CA 更快,因为它在涉及较少数据帧传输的网络站中运行。CSMA/CD 在防止网络冲突方面不如 CSMA/CA 有效。这是因为它只检测网线中的巨大数据流量,巨大的数据流量增加了发生碰撞的可能性。
  • 需求优先(Demand priority):需求优先是 CSMA/CD 的改进版,此数据控制策略使用“活动集线器”来调节网络的访问方式。需求优先级要求网络终端在传输数据之前从活动集线器获得授权。
  • 令牌传递(Token passing):此媒体访问控制方法使用免费令牌传递来防止冲突。只有拥有免费令牌(即小型数据帧)的计算机才有权传输。

  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 协议规范的一个硬件实现。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 留在片外。总的来说,可分为下列几种类型:

  • CPU 集成 MAC 与 PHY。目前来说并不多见,多出现在某些功能强大的 SoC 中。时至今日,随着技术的越来越完善,CPU 集成 MAC 与 PHY 的情况越来越多。
    MAC_PHY_1
  • CPU 集成 MAC,PHY 采用独立芯片。这种情况在嵌入式控制芯片中比较常见,因为嵌入式控制器芯片的成本及大小考虑,往往不会将 PHY 集成到芯片内部。
    MAC_PHY_2
  • CPU 不集成 MAC 与 PHY,而是将 MAC + PHY 形成一个独立的硬件模块(也可以将 MAC 与 PHY 集成为一个芯片)。这个模块再加上其他一些芯片就形成了网络接口控制器 (Network Interface Controller ,NIC),通常也被称为网卡(Network Interface Card)、网络适配器(Network Adapter)、LAN adapter 等。这种情况在 x86 架构下非常常见,例如我们 PC 上的网卡就是这种情况!
    MAC_PHY_3

MAC 地址

  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 网络
  • 以太网
  • 802.11无线网络 ( Wi-Fi )
  • 蓝牙
  • IEEE 802.5令牌环
  • 光纤分布式数据接口(FDDI)
  • 异步传输模式(ATM),仅交换虚拟连接,作为 NSAP 地址的一部分
  • 光纤通道和串行连接 SCSI (作为全球名称的一部分)
  • ITU-T G.hn标准,它提供了一种使用现有家庭布线(电力线、电话线和同轴电缆)创建高速(高达 1 吉比特/秒)局域网的方法。G.hn 应用协议会聚 (APC) 层接受使用 EUI-48 格式的以太网帧并将它们封装到 G.hn 媒体访问控制服务数据单元 (MSDU) 中。

格式

  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 标识符用于:

  • IEEE 1394(用于高速通信和同步实时数据传输的串行总线的接口标准)
  • InfiniBand
  • IPv6
  • Zigbee / 802.15.4 / 6LoWPAN 无线个域网
  • IEEE 11073-20601(符合 IEEE 11073-20601 标准的医疗设备)

  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/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/452965.html

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

相关文章

宝安日报:联诚发跨界创新“追光”十九载!

世界一流声光电智造一体化服务商、国家级高新技术企业、国家级专精特新“小巨人”企业、博士后创新实践基地、深圳自主创新百强企业……这些熠熠生辉的关键词,是位于宝安区航城街道的深圳市联诚发科技股份有限公司(以下简称:联诚发&#xff0…

Hbase简介

HBase简介 一、HBase简介 1. HBase简介 (1) apache的顶级项目,hadoop的数据库,分布式、大规模的大数据存储。 HBase是Google的BigTable的开源java版本,建立在hdfs之上的,分布式、列存储、非关系(nosql、key-value&a…

MySQL(复合查询)

文章目录 0 前言1 基本查询2 多表查询3 自连接4 子查询4.1 单行子查询4.2 多行子查询4.3 多列子查询4.4 在from子句中使用子查询4.5 合并查询4.5.1 union4.5.3 union all 0 前言 相关内容已经准备好了 链接:https://gitee.com/ding-xushengyun/linux__cpp/blob/ma…

2023/4/23周报

目录 摘要 论文阅读 1、标题和现存问题 2、矩阵分解(MF)和图神经网络 3、GNN_MF框架 4、项目聚集和社会聚集 5、实验准备和结果 2、深度学习 1、GCN 2、代码实例 总结 摘要 本周在论文阅读上,阅读了一篇基于GNN的矩阵分解推荐算法…

【机器学习】 多维kd-tree的python实现

一、说明 本篇主要介绍一个用python实现kd-tree的代码,以及围绕代码实现的kd-tree原理。期望能够为读者打开另一个视角,看待kd-tree的好处。 二、什么是K维树? K-D 树(也称为 K 维树)是一种二叉搜索树,其中…

甘蔗种植成本居高不下 培育良种和提高机械化覆盖率或成行业破局关键

一、甘蔗种植行业概述及分类 甘蔗是一种重要的经济农作物,是世界上最重要的糖料作物及较有发展潜力的可再生能源作物,现广泛种植于热带及亚热带地区,最大的甘蔗生产国是巴西、印度和中国。 根据观研报告网发布的《中国甘蔗种植市场发展态势分…

matlab 点云滤波(中值、均值、高斯滤波)代码

点云中值、均值、高斯滤波 介绍一下滤波函数 smoothdata: 对含噪数据进行平滑处理 B smoothdata(___,method) 为上述任一语法指定平滑处理方法。例如,B smoothdata(A,sgolay) 使用 Savitzky-golay 滤波器对 A 中的数据进行平滑处理。Method-平滑处理方法 "…

java实现修改excel中数据格式

目录 背景:过程:方案:个人想法:总结:1、清楚边界,全局观2、工欲善其事,必先利其器3、别总想着改源码,别总觉得自己做不出来,要给自己积极的心理暗示。有用。 背景&#x…

基于深度强化学习训练《街头霸王·二:冠军特别版》通关关底 BOSS -智能 AI 代理项目上手

文章目录 SFighterAI项目简介实现软件环境项目文件结构 运行指南环境配置验证及调整gym环境: gym-retro 游戏文件夹错误提示及解决Could not initialize NNPACK!错误提示:libGL error: MESA-LOADER: failed to open swrast 运行测试训练模型查看曲线 Tip…

《Redis设计与开发》读书笔记

《Redis设计与实现》读书笔记 简单动态字符串 SDS的定义 结构: buf数组:用于保存字符串 len属性:记录SDS中保存字符串的长度 free属性:记录buf中未使用字节数量 遵循C字符串以空字符串结尾的惯例,保存空字符串的…

默认成员函数之构造函数,构造函数的特点,创建,调用与对象创建的一语双关,默认构造函数等

内置类型与自定义类型 C当中的类型的话分为两类:一种就是内置类型/基本类型,就是c语言自带的那些类型基本类型,如int, char, double, 指针(任何类型的指针,因为指针就是地址嘛)等等;还有就是自…

某安全对抗行走APP逆向分析

1.定位url 抓包: https://api5.xxxx.com/xxx-rest-service/message/fun_getnearby 看一下参数: opentime:时间戳 reqdata:base64编码 sign 未知,需要解密 # -*- coding: utf-8 -*- # @Author : Codeooo # @Time : 2022-10-14import frida, sysm199a = "&qu…

learn_C_deep_5 (语句和表达式的概念、if语句的多种语法结构、C语言有没有布尔类型、“零值”的比较)

目录 语句和表达式的概念 if语句的多种语法结构 注释的便捷方法(环境vs) if语句执行的过程 逻辑与&& 逻辑或|| 运算关系的顺序 ​编辑 C语言有没有布尔类型 C99标准 sizeof(bool)的值为多少? _Bool原码 BOOL、TRUE、…

IT_开发提测标准规范

背景 公司 IT 规模小,开发提测质量差,流程不规范,导致测试任务重,于是推行 :IT_开发提测标准规范,正文如下;拟定开发提测标准规范后,测试与项目经理内部评审后,发至IT群…

低相位噪声链路调试分析

上图为原始状态,与项目结项评审指标差不多,确实存在几个噪声比较差的点。 频率分布大约在几Hz,20K,50K左右。 由于测试时由子卡进行输出,采用直接进行直接输出,以看出,明显的尖峰已经没有了,只剩下20K左右的尖峰,但是总体来说,效果很差,可能时单端输出的问题。试…

【SVN已解决】svn下载成功图标不显示解决方法

介绍 这里是小编成长之路的历程,也是小编的学习之路。希望和各位大佬们一起成长! 以下为小编最喜欢的两句话: 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡。 一个人为什么要努力&a…

【小技巧】word文档编辑技巧(一)

文章目录 一、显示显示导航显示所有字符 二、格式格式-三级目录格式-文本格式-图格式-表格式-公式格式-参考文献 三、小技巧交叉引用连续交叉引用表/图目录等自动更新分节符设置页眉/页码word转pdf带导航 一、显示 显示导航 开启导航:视图->显示框->导航窗格…

《春琴抄》庭有枇杷树,今已亭亭如盖矣~

《春琴抄》庭有枇杷树,今已亭亭如盖矣~ 谷崎润一郎(1886年7月24日~1965年7月30日),日本近代小说家,唯美派文学主要代表人物之一,《源氏物语》现代文的译者。 代表作有《刺青》《春琴抄》《细雪》…

客户体验的重要性和企业发展的紧密联系

近年来,随着企业数字化转型的加速,客户服务的意义越来越被人们所重视。客户服务的质量不仅直接影响到客户满意度和忠诚度,而且会间接影响到企业的品牌口碑和市场竞争力。然而,目前市面上的很多企业帮助中心搭建平台,可…

【油猴脚本】ChatGPT 智能 Prompts 提示词助手

chatGPT 插件脚本 中文 Prompt 训练对话框 ChatGPT 智能 Prompts 可以为你带来更好的使用体验助你训练好用的ChatGPT:添加快捷指令(prompts)新增:论文专家角色、支持自动发送、固定智能助手…还有更多需求可以到仓库Issues里发起…