以太网中的MAC、MII、PHY 详解

结构

从硬件的角度看,以太网接口电路主要由MAC(Media Access Control,MAC)控制器和物理层接口PHY(Physical Layer,PHY)两大部分构成。如下图所示:

但是,在实际的设计中,以上三部分并不一定是独立分开的。由于PHY整合了大量模拟硬件,而MAC则是典型的全数字器件。考虑到芯片面积模拟/数字混合架构的原因,通常,将MAC集成进微控制器,而将phy留在片外。(现在更灵活,密度更高的芯片技术已经可以实现MAC和PHY的单芯片整合。) 下图是网络接口内部结构图,虚框表示CPU,MAC集成在CPU中,PHY芯片通过MII接口与CPU上的MAC连接:

以上是以太网结构大框架,下面分别介绍各个部分。

MAC

MAC(Media Access Control) 即媒体访问控制层协议。MAC由硬件控制器及MAC通信协议构成。该协议位于OSI七层协议中数据链路层的下半部分,主要负责控制与连接物理层的物理介质。MAC硬件框图如下图所示:

在发送数据的时候,MAC协议可以事先判断是否可以发送数据,如果可以发送将给数据加上一些控制信息,最终将数据以及控制信息以规定的格式发送到物理层;在接收数据的时候,MAC协议首先判断输入的信息是否发生传输错误,如果没有错误,则去掉控制信息发送至LLC(逻辑链路控制)层。该层协议是以太网MAC由IEEE-802.3以太网标准定义。一般以太网MAC芯片的一端连接PCI总线,另一端连接PHY芯片,中间是RGMII接口。

PHY

PHY是IEEE-802.3中定义的一个标准模块,STA(Station Management Entity,管理实体,一般为MAC或CPU)通过MIIM(MII Manage Interface)对PHY的行为,状态进行管理和控制,而具体管理和控制动作是通过读写PHY内部的寄存器实现的。PHY的节本结构如下图:

PHY在发送数据的时候,收到MAC过来的数据(对PHY来说,没有帧的概念,对它来说,都是数据)然后把并行数据转换为串行流数据,再按照物理层的编码规则把数据编码,再变为模拟信号把数据送出去,收数据的流程反之。

PHY还有个重要的功能就是实现CSMA/CD的部分功能,它可以检测到网络上是否有数据在传送,如果有数据在传送中就等待,一旦检测到网络空闲,再等待一个随机时间后将数据送出去。如果两个碰巧同时送除了数据,那样必将造成冲突,这时候冲突检测机制可以检测到冲突,然后等待一个随机的时间重新发送数据。

PHY寄存器的地址空间为5位,从0到31最多可以定义32个寄存器(随着芯片功能不断增加,很多PHY芯片采用分页技术来扩展地址空间以定义更多的寄存器),IEEE802.3定义了0-15这16个进村器的功能,地址16-31的寄存器留给芯片制造商自由定义,如下表所示:

注:

上图B和E表示在特定接口下,寄存器是基本的还是扩展的。例如:MII接口下只有0和1寄存器是基本的,其它的是扩展的。所为扩展是指留给IEEE以后的扩展特性用,不是给PHY厂商的扩展,PHY厂商自定义的只能是16~31号寄存器 。

在IEEE标准文档及某些PHY手册中,某寄存器的比特(bit)用X.y表示,如0.15表示第0寄存器的第15位。

相关推荐
网安情报局1 天前
除了 CDN,DDoS 攻击还有哪些更有效的防护方式?
网络
Promise微笑1 天前
2026年国产替代油介损测试仪:油介损全场景解决方案与技术演进
大数据·网络·人工智能
蜡台1 天前
Python包管理工具pip完全指南-----2
linux·windows·python
Ujimatsu1 天前
虚拟机安装Debian 13.x及其常用软件(2026.4)
linux·运维·ubuntu
千百元1 天前
zookeeper启不来了
linux·zookeeper·debian
AnalogElectronic1 天前
linux 测试网络和端口是否连通的命令详解
linux·网络·php
Edward111111111 天前
4月28日防火墙问题
linux·运维·服务器
Rust研习社1 天前
使用 Axum 构建高性能异步 Web 服务
开发语言·前端·网络·后端·http·rust
灰子学技术1 天前
Envoy HTTP 流量层面的 Metric 指标分析
网络·网络协议·http
上海云盾-小余1 天前
海外恶意 UDP 攻击溯源:分层封禁策略与业务兼容平衡方案
网络·网络协议·udp