MAC子层
MAC子层的功能简介
MAC(Media Access Control)子层负责完成下列任务:
提供物理链路的访问。
MAC子层是物理层相关的,也就是说,不同的物理层有不同的MAC子层来进行访问。
在以太网中,主要存在两种MAC子层:
半双工MAC:物理层运行模式是半双工时提供访问。
全双工MAC:物理层运行模式是全双工时提供访问。
这两种MAC都集成在网卡中,网卡初始化的时候一般进行自动协商,根据自动协商的结果决定运行模式,然后根据运行模式选择相应的访问MAC。
链路级的站点标识:在数据链路层识别网络上的各个站点。
也就是说,在该层次保留了一个站点地址,即MAC地址,来标识网络上的唯一一个站点。
为了进行站点标识,在MAC子层用MAC地址来唯一标识一个站点。
MAC地址由IEEE管理,以块为单位进行分配。一个组织(一般是制造商)从IEEE获得唯一的地址块,称为一个组织的OUI(Organizationally Unique Identifier)。获得OUI的组织可用该地址块为16777216个设备分配地址。
MAC地址有48Bit,但通常被表示为12位的点分十六进制数。例如,48Bit的MAC地址000000001110000011111100001110011000000000110100,表示为12位点分十六进制就是00e0.fc39.8034。
每个MAC地址的前6位(点分十六进制)代表OUI,后6位由厂商自己分配。例如,地址00e0.fc39.8034,前面的00e0.fc是IEEE分配给华为公司的OUI,后面的39.8034是由华为公司自己分配的地址编号。
MAC地址中的第2bit指示该地址是全局唯一还是局部唯一。以太网一直使用全局唯一地址。
MAC地址可分为下面几种类别:
物理MAC地址
这种类型的MAC地址唯一的标识了以太网上的一个终端,这样的地址是固化在硬件(如网卡)里面的。
广播MAC地址
这是一个通用的MAC地址,用来表示网络上的所有终端设备。
广播MAC地址48Bit全是1,即ffff.ffff.ffff。
组播MAC地址
这是一个逻辑的MAC地址,用于代表网络上的一组终端。
组播MAC地址第8Bit是1,例如000000011011101100111010101110101011111010101000。
链路级的数据传输:从LLC子层接收数据,附加上MAC地址和控制信息后把数据发送到物理链路上;在这个过程中提供校验等功能。
数据的收发过程如下:
当上层要发送数据的时候,把数据提交给MAC子层。
MAC子层把上层提交来的数据放入缓存区。
然后加上目的MAC地址和自己的MAC地址(源MAC地址),计算出数据帧的长度,形成以太网帧。
以太网帧根据目的MAC地址被发送到对端设备。
对端设备用帧的目的MAC地址,跟MAC地址表中的条目进行比较。
只要有一项匹配,则接收该以太网帧。
若无任何匹配的项目,则丢弃该以太网帧。
以上描述的是单播的情况。如果上层应用程序加入一个组播组,数据链路层根据应用程序加入的组播组形成一个组播MAC地址,并把该组播MAC地址加入MAC地址表。这样当有针对该组的数据帧的时候,MAC子层就接收该数据帧并向上层发送。
以太网帧结构
Ethernet_II的帧结构
图1-4 Ethernet_II的帧结构Ethernet_II的帧中各字段说明如表1-5所示。
表1-5 Ethernet_II的帧结构说明字段
说明
DMAC
DMAC(Destination MAC)是目的地址。DMAC确定帧的接收者。
SMAC
SMAC(Source MAC)是源地址。SMAC字段标识发送帧的工作站。
Type
两字节的类型字段用于标识数据字段中包含的高层协议,也就是说,该字段告诉接收设备如何解析数据字段。
在以太网中,多种协议可以在局域网中同时共存。因此,在Ethernet_II的类型字段中设置相应的十六进制值提供了在局域网中支持多协议传输的机制。
类型字段取值为0800的帧代表IP协议帧。
类型字段取值为0806的帧代表ARP协议帧。
类型字段取值为8035的帧代表RARP协议帧。
类型字段取值为8137的帧代表IPX和SPX传输协议帧。
Data
数据字段的最小长度必须为46字节以保证帧长至少为64字节,这意味着传输一字节信息也必须使用46字节的数据字段。
如果填入该字段的信息少于46字节,该字段的其余部分也必须进行填充。
数据字段的最大长度为1500字节。
CRC
CRC(Cyclic Redundancy Check)循环冗余校验字段提供了一种错误检测机制。
每一个发送器都计算一个包括了地址字段、类型字段和数据字段的CRC码,然后将计算出的CRC码填入4字节的CRC字段。
IEEE802.3的帧结构
如图1-5所示,IEEE802.3帧格式类似于Ethernet_II帧,只是Ethernet_II帧的Type域被802.3帧的Length域取代,并且占用了Data字段的8个字节作为LLC和SNAP字段。
表1-6 IEEE802.3的帧结构说明字段
说明
Length
Length字段定义了Data字段包含的字节数。
LLC
LLC(Logical Link Control)由目的服务访问点DSAP(Destination Service Access Point)、源服务访问点SSAP(Source Service Access Point)和Control字段组成。
SNAP
SNAP(Sub-network Access Protocol)由机构代码(org code)和类型(Type)字段组成。org code三个字节都为0。Type字段的含义与Ethernet_II帧中的Type字段相同。
其他字段请参见Ethernet_II的帧的字段说明。
IEEE802.3帧根据DSAP和SSAP字段的取值又可分为以下几类:
当DSAP和SSAP都取特定值0xff时,802.3帧就变成了Netware-ETHERNET帧,用来承载NetWare类型的数据。
当DSAP和SSAP都取特定值0xaa时,802.3帧就变成了ETHERNET_SNAP帧。
ETHERNET_SNAP帧可以用于传输多种协议。因此,SNAP可以被看作一种扩展,它允许厂商创建自己的以太网传输协议。
ETHERNET_SNAP标准由IEEE802.1委员会制定,以保证IEEE802.3局域网和以太网之间的互操作性。
DSAP和SSAP其他的取值均为纯IEEE802.3帧。