理论教育 以太网MAC帧结构详解

以太网MAC帧结构详解

时间:2023-11-22 理论教育 版权反馈
【摘要】:尽管交换式以太网不存在MAC问题,但为了兼容,交换式以太网和共享式以太网使用相同的MAC帧结构。以太网标准DIXE thernet V2和IEEE 802.3标准的MAC帧有一些细节上的差别,图4-13为以太网MAC帧结构。图4-13Ethernet V2 MAC帧结构对比图4-12的以太网MAC帧结构和图4-13的IEEE 802.3MAC帧结构,可以看出,IEEE 802.3MAC帧中的长度字段被类型字段所取代,数据没有填充。

以太网MAC帧结构详解

尽管交换式以太网不存在MAC问题,但为了兼容,交换式以太网和共享式以太网使用相同的MAC帧结构。以太网的MAC帧格式有两种,一种是IEEE 802.3标准的MAC帧格式,另一种是以太网标准DIXE thernet V2。目前的以太网网卡都支持这两种帧格式。在实际系统中,以太网帧格式比IEEE 802.3帧格式更为常见。

1.IEEE802.3MAC帧

MAC帧是数据链路层的协议数据单元。由于最初是在共享媒介上传输的,因此,除了发送数据、帧同步、检测差错等通用的数据链路层功能外,还要考虑冲突窗口、寻址、位同步等问题。

IEEE 802.3MAC帧结构如图4-12所示。它包括以下几个字段:前导码、帧前定界符、目的地址、源地址、数据、填充和帧校验序列。

978-7-111-31053-2-Chapter04-12.jpg

图4-12 802.3MAC帧结构

前导码(Preamble):由7个字节的10101010组成,用于通知接收站点帧的到来,并使之建立位同步。空闲状态下,媒介上没有信号,当发送方发送MAC帧后,前导码使接收方能够锁定发送方的时钟。准确地说,前导码是在物理层加入的,用于位同步,不是帧的一部分。

帧前定界符(Start Frame Delimiter):由一个8位的字节组成,其比特序列为10101011。它标志着帧的真正开始,用于帧同步,通知接收方接下来就是目的地址了。

目的地址(Destination Address):是接收站点的MAC地址。

源地址(Source Address):是发送站点的MAC地址。

长度(Length):指出了去掉填充之后的数据实际长度。这个字段在以太网标准和IEEE 802.3标准中不一样。在以太网标准中,该字段为类型字段,用来定义以太网上层协议的类型;在802.3标准中,由于有填充,该字段用于明确数据的长度。

数据及填充:为了实现CSMA/CD机制,满足冲突窗口的要求,以便在发送完整个帧之前就能检测到冲突,802.3标准规定了帧的最小长度为64字节。由于其他字段长度固定,因此,数据及填充部分最少为46字节。当数据小于最小长度时,就进行填充以达到规定的46字节长度。标准中还规定了帧的最大长度为1518字节,数据及填充部分为1500字节。限制最大长度主要原因有两个。第一,以太网出现时存储器造价较高,限制长度可以减小缓冲区的尺寸;第二,最大长度的限制可以避免一个站点长时间占用共享媒介,阻塞其他站点的数据发送。

帧校验序列(FCS):采用32位的CRC-32校验,检验范围为目的地址、源地址、长度和数据及填充字段。当检测到MAC帧出错时,不进行重传,只是简单地丢弃MAC帧。

2.以太网MAC帧

严格意义上说,IEEE 802.3标准不是以太网标准。以太网标准DIXE thernet V2(以太网第2版本)和IEEE 802.3标准的MAC帧有一些细节上的差别,图4-13为以太网MAC帧结构。与IEEE 802.3MAC帧一样,MAC帧的前面也是前导码和帧定界符。

978-7-111-31053-2-Chapter04-13.jpg(www.daowen.com)

图4-13 Ethernet V2 MAC帧结构

对比图4-12的以太网MAC帧结构和图4-13的IEEE 802.3MAC帧结构,可以看出,IEEE 802.3MAC帧中的长度字段被类型字段所取代,数据没有填充。

类型字段指明上层协议的类型。例如,0x0800为IP数据报、0x809B代表AppleTalk协议数据、0x8138代表Novell协议数据、0xF0代表IBMNetBIOS类型协议数据等。

以太网强制上层来的数据不少于46字节,以满足帧长度不小于64字节的要求,因此,也就没有填充,也就无需长度字段。

为了能够在网络上正常地发送和接收这两种帧,使两种帧相互兼容,制定了区分这两种的机制:如果字段中的值大于帧中数据部分的最大长度(0x0600H),则该字段为类型字段,该帧为Ethernet V2 MAC帧;否则该字段为长度字段,该帧为IEEE 802.3MAC帧。

两种帧格式的另一个不同之处在于封装的数据不同,以太网帧封装的是网络层PDU,如IP数据报,而IEEE 802.3帧封装的是LLC PDU,在LLC PDU中指明网络层的协议类型。

3.MAC地址

MAC地址也称为物理地址,是厂商生产的网卡的地址。目前MAC地址一般是6字节长(早期的是2字节),通常表示为12位十六进制数。例如,某网卡的MAC地址可表示为00-18-F3-4C-30-51。在这个例子中,前6位十六进制数00-18-F3代表网卡制造商的编号,它是由IEEE的注册管理委员会管理分配的。后6位4C-30-51由生产厂家指派,生产网卡时烧入网卡的EPROM中。MAC地址是全球唯一的,网卡坏了,所使用的MAC地址也不再使用。目前的网卡通常把MAC地址存放在闪存中,这样,用户就可以更改MAC地址。

MAC地址可以用来区分是单播、组播还是广播。源地址一般是单播地址,目的地址可能会是单播、组播和广播地址。图4-14显示了如何区分单播地址和组播地址。

978-7-111-31053-2-Chapter04-14.jpg

图4-14 单播地址和组播地址

如果地址字段第一字节的最低比特为0,地址则为单播地址;否则为组播地址。广播地址中所有的比特均为1,写成十六进制数为FF-FF-FF-FF-FF-FF。例如,MAC地址08-18-F3-4C-30-51,第一字节为08,写成二进制数为00001000,最低位为0,为单播地址;MAC地址07-18-F3-4C-30-51,第一字节为07,写成二进制数为00000111,最低位为1,为组播地址。

地址在网络上传送的顺序和显示的十六进制形式不一样。每个字节中最低位最先发送出去,最高位最后发送出去。例如,地址06-19-F3-4C-30-51的发送顺序为0110000010011000 11001111001100100000110010001010。实际上区分是单播地址还是组播地址的那个比特是最先到达目的站点的。

MAC层中的MAC地址和LLC层的SAP为不同层次的地址,局域网内部是如何对这两种地址进行寻址的呢?这就需要两级寻址,分为两个步骤:首先利用MAC帧中的目的MAC地址信息找到网络中的目的站点,然后再利用LLC PDU中的目的SAP信息找到该站点的目的进程。LLC PDU的SAP代表网络层的通信进程,实际上是指协议类型,例如,IP的SAP为0x0800。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈