本帖最后由 dffzh 于 2025-7-24 08:50 编辑
#申请原创#
@21小跑堂
在有些行业的嵌入式软件中,比如物联网,网络设备及无线协议(wifi和BLE等)开发等领域,我们会经常接触到MAC地址,那究竟什么是MAC地址,它有什么实际作用呢?请听本文讲解。 MAC地址是什么? 所谓MAC地址,即MediaAccess Control Address,最直观的翻译就是媒体访问控制地址,也可以称为局域网地址(LANAddress)、以太网地址(Ethernet Address)、硬件地址(Hardware Address)或物理地址(Physics Address),在不同地方其标识的名称可能不一样,要注意辨别。 MAC地址是网络设备在数据链路层使用的唯一标识符,用于标识设备之间的网络通信,即每个网络设备在生产时都会被分配一个唯一的MAC地址,类似于身份*号码一样,无论你的网络设备是否更换IP地址,其MAC地址都是固定的唯一的。 MAC地址一般是设备制造商在生产时烧录在设备硬件上的,比如我们最常见的电脑网卡都会有一个MAC地址,一般烧录在网卡的EEPROM芯片里面,打开电脑的cmd命令窗口,输入ipconfig /all命令,即可查看MAC地址信息,如下图所示,用物理地址标识: 如果是从事Linux开发的,在终端输入ifconfig命令,就可以查看MAC地址,下图即用HWaddr标识MAC地址: 在Ubuntu虚拟机中,如果你已经安装了net-tools,也可以使用ifconfig命令来查看MAC地址,如下图所示即用ether来标识MAC地址: 或者查看电脑上已连接到的无线wifi热点的信息,也可以看到MAC地址: 或者打开手机设置里的关于本机的界面,也可以看到,如下图为苹果手机下的用局域网地址标识MAC地址: 综上所述,当需要在不同的设备里查看MAC地址信息时,由于不同厂商的命名方法不同,一定要学会识别。 那怎么样识别呢?一种就是知道MAC地址的相关别名,还有一种就是了解MAC地址的编码结构,接下来我们继续看。 MAC地址的编码结构是什么样的呢? 由以上的相关截图不难看出,MAC地址主要由6个字节组成,总共占48位,并且通常会以十六进制展示出来,每个字节范围即为0x00~0xFF。 其中前3个字节代表设备制造商的编号,是由IEEE(国际电气与电子工程师协会)分配的厂商标识符,即为组织唯一标识符;后3个字节是由设备制造商分配给每个网络产品的,即为唯一序列号。 在TCP/IP协议的以太网帧格式中,在数据链路层中就涉及了MAC地址信息: 因为网络通信是基于源端和目的端的,要实现正常通信,必须就有源MAC地址和目的MAC地址,如下图所示: 在工业以太网通信,比如EtherCAT总线中,MAC地址也是非常重要的角色: 以下为抓包数据: 通过wireshark随便抓取几个UDP(用户数据报)协议包,在数据帧里面也可以看到MAC地址信息: 另外,从应用角度看,MAC地址还可以分为单播MAC地址、组播MAC地址和广播MAC地址,主要区别如下: 单播MAC地址:Unicast 主要用于标识网络中某个特定的设备,各设备的MAC地址是唯一的,用于点对点通信,其MAC地址的第一个字节的最低位固定为0,比如00:14:23:01:23:48; 组播(多播)MAC地址:Multicast 主要用于将数据包发送给一组特定的设备,其MAC地址的第一个字节的最低位固定为1,后面的部分用于标识特定的组,比如01:00:5E:00:00:02。 广播MAC地址:Broadcast 主要用于将数据包发送到网络中的所有设备,所有位都为1,即MAC地址为FF:FF:FF:FF:FF:FF。 那MAC地址有哪些常见用途呢? 局域网通信: 比如交换机通过MAC地址转发数据帧; 设备识别: 比如路由器通过MAC地址管理连接的设备,例如分配IP地址等; 安全控制: 比如网络管理员可以通过MAC地址过滤来允许或者禁止设备接入等。
以上作者通过对MAC地址的基本概念,编码规则及常见用途等方面阐述了MAC地址的基本内容,也欢迎各位坛友回帖补充内容~~。
|