以太网的 MAC 层

一、MAC 层的硬件地址

在局域网中,主机的硬件地址又称为物理地址,或 MAC 地址。6个字节。

IEEE 的注册管理机构 RA 负责向厂家分配地址字段的前三个字节(即高位 24 位,组织唯一标识符OUI)。
后三个字节(即低位 24 位)由厂家自行指派,称为扩展标识符,必须保证生产出的适配器没有重复地址。

一个地址块可以生成224个不同的地址。
这种 48 位地址称为 MAC-48,它的通用名称是EUI-48。
“MAC地址”实际上就是适配器地址,固化在网卡的ROM中。

第一个字节的最低位I/G(Individual/Group)
0:单个地址
1:组播地址

第一个字节的最低第二位为G/L(Globe/Local)
0:G全球管理,厂商购买的MAC地址
1:L本地管理,不用购买

例:MAC地址 f6-20-e9-8a-00-37
厂商代码:f6-20-e9。先发送f6
第一字节f6=11110110
I/G为0,单个地址,最高位最先发送;G/L为1,本地管理


适配器检查 MAC 地址

+“发往本站的帧”包括以下三种帧:
单播(unicast)帧(一对一),I/G=0
广播(broadcast)帧(一对全体,全1),ff-ff-ff-ff-ff-ff
多播(multicast)帧(一对多),I/G=1
所有适配器都能识别前两种,最后一种一般靠软件识别。

二、 MAC 帧的格式

常用的以太网MAC帧格式有两种标准 :
DIX Ethernet V2 标准
IEEE 的 802.3 标准
最常用的 MAC 帧是以太网 V2 的格式。

以太网的 MAC 层

类型字段用来标志上一层使用的是什么协议,
以便把收到的 MAC 帧的数据上交给上一层的这个协议。

数据字段的正式名称是 MAC 客户数据字段
最小长度 64 字节-18 字节的首部和尾部 = 数据字段的最小长度

当数据字段的长度小于 46 字节时,
应在数据字段的后面加入整数字节的填充字段,
以保证以太网的 MAC 帧长不小于 64 字节。

在帧的前面插入的 8 字节中的第一个字段共 7 个字节,
是前同步码,用来迅速实现 MAC 帧的比特同步。
第二个字段是帧开始定界符,表示后面的信息就是MAC 帧。

为了达到比特同步,
在传输媒体上实际传送的
要比 MAC 帧还多 8 个字节

三、为什么MAC帧最短长度为512bit(64字节)

CSMA/CD协议的一个要点就是当发送站正在发送时,若检测到冲突则立即终止发送,然后推后一段时间再发送。如果所发送的帧太短,还没来得及检测到最远到来的冲突就已经发送完了,那么就无法进行冲突检测了。结果是:发送失败,但未察觉而不重发。
因此所发送帧的最短长度应当要保证在该帧发送完毕前,必须检测到可能最晚来到的冲突信号。该时间为往返时延2τ,取为51.2us,相当于发送512bit。
数据字段最短长度为46字节=64字节-18字节(目的地址(6)+原地址(6)+协议类型(2)+FCS(4))


四、MAC帧中没有标示帧长度

以太网采用曼彻斯特编码,当发送完一个帧后就不再发送任何码元了,发送方网络适配器的接口上的电压不再变化。
往前数4个字节就是FCS部分。


上层协议如何知道填充字段的长度

当数据字段长度不足46字节时,MAC子层会在数据段后面加入整数个字节的填充字段,以保证MAC帧长度不小于64字节。
那么上层协议如何知道填充字段的长度?
上层使用IP协议时,IP数据报首部有一个“总长度”字段。


五、无效的 MAC 帧

帧的长度不是整数个字节;
用收到的帧检验序列 FCS 查出有差错;
数据字段的长度不在 46 ~ 1500 字节之间。
有效的 MAC 帧长度为 64 ~ 1518 字节之间。
对于检查出的无效 MAC 帧就简单地丢弃。以太网不负责重传丢弃的帧。

六、帧间最小间隔

帧间最小间隔为 9.6 μs,相当于 96 bit 的发送时间(10M以太网)。
一个站在检测到总线开始空闲后,还要等待 9.6μ s 才能再次发送数据。
这样做是为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备。

相关推荐