一、网卡、MAC 控制器和 MAC 地址
提到 MAC 不得不涉及网卡的工作原理,网卡工作在 OSI 参考模型的数据链路层和网
络层。这里又出现了一个概念“OSI 参考模型”,在这个模型中定义了网络通讯是分层的,分
别是物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。以太网数据链路
层其实包含 MAC(介质访问控制)子层和 LLC(逻辑链路控制)子层。
物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码
和电路等,并向数据链路层设备提供标准接口。数据链路层则提供寻址机构、数据帧的构
建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。以太网卡中数据链
路层的芯片一般简称之为 MAC 控制器,物理层的芯片简称之为 PHY。许多网卡的芯片把
MAC 和 PHY 的功能做到了一颗芯片中,比如 Intel 82559 网卡的和 3COM3C905 网卡。但
是 MAC 和 PHY 的机制还是单独存在的,只是外观的表现形式是一颗单芯片。当然也有很
多网卡的 MAC 和 PHY 是分开做的,比如 D-LINK 的 DFE-530TX 等,原文中说“MAC 地址
对应物理层”是不确切的。
通常提到的 MAC 指狭义的 MAC 地址,其实在网卡中,一块以太网卡 MAC 芯片的作
用不但要实现 MAC 子层和 LLC 子层的功能,还要提供符合规范的 PCI 界面以实现和主机
的数据交换。 以太网 MAC 芯片的一端接计算机 PCI 总线,另外一端就接到 PHY 芯片上。
MAC 从 PCI 总线收到 IP 数据包(或者其他网络层协议的数据包)后,将之拆分并重新打
包成最大 1518Byte,最小 64Byte 的帧。这个帧里面包括了目标 MAC 地址、自己的源 MAC
地址和数据包里面的 协议类型(比 如 IP 数 据包的类型用 80 表示)。最 后还有一个
DWORD(4Byte)的 CRC 码。
网卡上有一颗 EEPROM 芯片,通常是一颗 93C46。里面记录了网卡芯片的供应商
ID、子系统供应商 ID、网卡的 MAC 地址、网卡的一些配置,如 SMI 总线上 PHY 的地址,
BOOTROM 的容量,是否启用 BOOTROM 引导系统等东西。
认识一下它们