我主要来自嵌入式软件背景,因此我对硬件的了解非常有限。我总是将以太网视为计算机上连接以太网电缆的小型物理连接器。从软件的角度来看,您需要做的就是安装驱动程序(在Windows中)或配置Linux内核以包含以太网的驱动程序。
问题:
但是当我开始向下一级(朝向硬件)并查看各种数据表和原理图时,我已经开始遇到诸如PHY,MII,SGMII,RGMII等术语。现在我对于什么构成感到困惑以太网?例如,当我说英特尔82574L 1.0 Gbps以太网端口时,所有这些术语适用于哪里?
让我试着解释一下:
(1)MII,SGMII,RGMII是MAC芯片和PHY芯片之间的三种接口。英特尔82574L是一个MAC芯片。看下图:
_______ __________ ___________
CPU | PCI-E | | MII/SGMII/RGMII | |
or |<=======>| MAC |<================>| PHY |<==========>physical interface
board| or else | | | |
________ __________ ___________
有关MII(100Mbps),SGMII(1Gbps,串行),RGMII(1Gbps,简化)定义的详细信息,您可以谷歌搜索它们。
(2)基本上,NIC(网络接口卡)由一个MAC芯片和相关的PHY芯片以及其他外围模块组成。此外,一个以太网设备驱动程序应与NIC硬件配合使用。 MAC芯片与控制CPU或PC主板有一个接口,如PCI-E总线等。
一些定义:
MII很久以前就已经标准化,支持100Mbit / sec的速度。还可以使用较少引脚的版本,RMII(减少'R')。
对于千兆位速度,使用GMII(千兆位的'G')接口,减少的引脚数版本称为RGMII。还有一个名为SGMII的非常简化的pincount版本(串行'S'),它需要MAC的IO引脚上的特殊功能,而其他xMII是相对传统的逻辑信号。
在其他情况下还有更多种类的接口,其中可能与Wikipedia MII页面相关联:
http://en.wikipedia.org/wiki/Media_Independent_Interface
关于你的特定英特尔芯片问题 - 据我所知(数据表链接似乎已经死了),该芯片是带有PCIe的MAC。因此它将位于主机上的PCIe总线和某种千兆物理层(PHY)之间。
您可能希望查找“7层OSI”,其中包含一些经常听到的术语;
**以太网PHY对应于物理层,物理层由通信的字面物理组件组成。
**以太网MAC(不是Mac地址,而是媒体访问控制器)对应于数据链路层,数据链路层负责在将帧发送到物理层之前对其进行排列。
MII,RMII,Auto-Negotion等配置都是从这两个配置的。还有一些库可以让您的生活更轻松。
**网络层是负责路由数据包的人。 IP和DHCP等协议被认为是在这一层。此层也是第一个仅基于软件的最低层。如果您使用轻量级IP,例如ip&netif库是其他所有内容。
**传输层是可以找到TCP和UDP等传输协议的地方。
希望它有所帮助,我不太了解上层。