以太网帧格式

概述

以太网(Ethernet)是数字设备、英特尔、施乐在1982年联合公布的标准(实际上这是以太网的第二版,即Ethernet II)。它采用CSMA/CD介质访问控制,传输速率仅为10Mbps。1985年,IEEE的802委员会公布一个系列的以太网标准,见下图:

OSIRM

不幸的是,802.2和802.3定义了一个与Ethernet II不同的帧格式,加上Novell开发的私有帧,给以太网造成了一定的混乱。

在帧格式上,主要有过六种:

  1. Ethernet I

    最原始的以太网标准,它由施乐公司提出,它是3Mbps+CSMA/CD的封装格式。其中最关键的字段是Type(类型)字段,以便支持多种网络层的协议包,如TCP/IP、IPX/SPX等。但应用不广泛,随后被新的以太网版本取代

  2. Ethernet II

    由上述提到DIX三家公司在1982年发布的,即DIX2.0以太网帧格式。主要更改了上一版本的电气特性和物理接口,帧格式无变化。当时并无LLC子层,最小帧(含首尾信息块)长度为64字节,最长为1518字节。如下图所示:

    EthernetII

  3. Ethernet 802.3 Raw

    这是Novell公司在1983年公布的以太网标准,仅支持IPS/SPX协议。当时以并未正式发布的802.3标准为基础创建,相对Ethernet II帧来说,就多了2个字节的0xFFFF用于区分,由于总的帧长度不变,所以数据字段中的最小和最大长度也相应减少2个字节,为44~1498字节。如下图所示:

    RAW

  4. Ethernet 802.3 SAP

    这是IEEE在1985年发布的第一个以太网帧标准,SAP是服务点的意思,该标准添加了LLC头,其包含目的服务访问点(DSAP)、源服务访问点(SSAP)和控制(Control)三个字段,另外源Ethernet II的Type字段更换成了Length字段。因为添加了三个字段,所以数据长度范围相应改为43~1497字节。该版本很快就被IEEE更新为LLC和SNAP版本。其格式如下图所示:

    SAP

  5. 802.3/802.2 LLC

    IEEE在1997年正式发布,由SAP版本发展而来,帧格式保持一致,但这是IEEE正式划分LLC子层后第一个以太网标准,第一次把DSAP、SSAP、Control三个字段当做LLC头。

  6. 802.3/802.2 SNAP

    这是为了在保证支持LLC标准上支持更多上层协议,主要是更好的支持IP协议,该标准于1998年发布,SNAP(Sub Network Access Protocol)是子网访问协议,支持传输多种协议的网络访问协议。

    与LLC帧格式一样,SNAP也有LLC头,但扩展了其属性:添加了2个字节的类型字段,用于标识更多上层协议类型;另新增了3字节的OUI(组织唯一标识)字段,用于所选上层协议的组织。对应的,数据字段长度范围也调整为38~1492字节。如下图所示:

    SNAP

上述就是6种主要帧格式的介绍,曾经或现在主流应用的是II、LLC、SNAP三种,其主要差别如下图所示:

Compare


以太网LLC帧头格式

上述就提及到,自802.3 SAP标准发布后,以太网帧中就有了LLC帧头,在802.3系列里,LLC的格式都是一样的,均为3字节。

大小(字节) 1 1 1
字段 DASP SSAP Control

DASP(Destination Service Access Point):目的服务访问点,指示数据接收方LLC子层的SAP,占1字节。在以太网中,该值固定为0xAA。
SSAP(Source Service Access Point):源服务访问点,指示数据发送方LLC子层的SAP,占1字节。在以太网中,该值固定为0xAA。
Control:控制属性,指示数据链路层所用的服务类型,占1字节。在以太网中都是无连接服务,所以该值固定为0x03。

以太网SNAP帧头格式

在SNAP以太网标准中,除了LLC头部还有5个字节的SNAP头作为LLC的扩展。

大小(字节) 3 2
字段 OUI ID Type

OUI(Organizationally Unique Identifier):组织唯一标识符,指示帧中Data字段数据报对应协议的发布组织,占3字节。IEEE发布的以太网协议类型此字段为0x00000。
Type:类型属性,指示帧中数据包所对应的协议类型,占2字节。除了支持802.3以太网协议,还支持802.4、802.5等等协议,还支持非802协议。IEEE发布的以太网协议对应的字段取值如下:

协议ID(Type) 以太网协议
0x0800 Internet Protocol, Version 4(IPv4)
0x0806 Address Resolution Protocol(ARP)
0x0842 Wake-on-LAN Magic Packet
0x1337 SYN-3 Heartbeat Protocol(SYNdog)
0x22F3 IETF TRILL Protocol
0x6003 DECnet Phase IV
0x8035 Reverse Address Resolution Protocol(RARP)
0x809B AppleTalk(Ethertalk)
0x80F3 AppleTalk Address Resolution Protocol(AARP)
0x8100 VLAN-tagged frame(IEEE 802.1Q)
0x8137 Novell IPX(alt)
0x8138 Novell
0x8204 QNX Qnet
0x86DD Internet Protocol, Version 6(IPv6)
0x8808 MAC Control
0x8809 Slow Protocols(IEEE 802.3)
0x8819 CobraNet
0x8847 MPLS unicast
0x8848 MPLS multicast
0x8863 PPPoE Discovery Stage
0x8864 PPPoE Session Stage
0x886F Microsoft NLB heartbeat
0x8870 Jumbo Frames
0x887B HomePlug 1.0 MME
0x888E EAP over LAN(IEEE 802.1X)
0x8892 PROFINET Protocol
0x889A HyperSCSI(SCSI over Ethernet)
0x88A2 ATA over Ethernet
0x88A4 EtherCat Protocol
0x88A8 Provider Bridging(IEEE 802.1ad)
0x88AB Ethernet Powerlink
0x88CC LLDP
0x88CD sercos III
0x88D8 Circuit Emulation Services over Ethernet(MEF-8)
0x88E1 HomePlug AV MME
0x88E3 Media Redundancy Protocol(IEC62439-2)
0x88E5 MAC security(IEEE 802.1AE)
0x88F7 Precision Time Protocol(IEEE 1588)
0x8902 IEEE 802.1ag Connectivity Fault Management(CFM) Protocol / ITU-T Recommendation Y.1731(OAM)
0x8906 Fibre Channel over Ethernet
0x8914 FCoE Initialization Protocol
0x9000 Configuration Test Protocol(Loop)
0x9100 Q-in-Q

以太网MAC帧

MAC帧通常被认为是数据链路层帧,是在MAC子层间交换的PDU,前面提及到的LLC帧头和SNAP帧头与上层的数据报一起封装在数据字段中,如下:

尺寸(字节) 7 1 6 6 2 38~1500 4
字段 前导符 帧起始 目的MAC 源MAC 长度/类型 数据 FCS

1. 前导符(Preamble):由1和0交互构成(10101010…..),共占7个字节,用于使PLS子层电路与收到的帧达成时钟同步。
2. 帧起始(Start-of-Frame Delimiter, SFD):为10101011,共占1个字节,表示一个帧的开始。它和前导符共同使接收方能根据1、0交替来迅速实现比特同步,当检测到连续的两位1时,将后续信息交给MAC子层。通常来说,Pre和SFD这两个字段只用于提醒接收端新帧到达,并不计入MAC帧大小,也不算作是MAC帧头的组成部分
3. 目的MAC(Destination Address, DA)/源MAC(Source Address, SA):分别用于标识目的MAC地址和源MAC地址,两个字段各占6个字节。它们可以是单播地址也可以是广播地址。当地址的最高位为0时表示单播,最高位为1时为组播,全为1时为广播。
4. 长度(Length)/类型(Type):这是一个二选一的字段,共占2个字节,对于不同的网络协议,它有不同的含义。但是,作为类型使用时,如上表所示,最小值也总是大于1536(十六进制0x600);所以不会产生冲突。另外,在IEEE 802.3中,数据字段的长度为38~1500个字节。
5. 数据(Data):该字段对于不同的以太网帧包含的内容不一,对于较老的以太网标准,它是网络层来的数据报;而较新的标准,则是一个LLC帧的全部内容。也因为如此,对于不同的标准而言,数据字段的长度范围也有不同。总的而言,不管是什么标准,整个MAC帧最小长度为64字节,如果内容长度小于最小长度,则需要在数据字段里使用PAD填充字段填充
6. 帧校验序列(FCS):它是一个包含32位CRC校验值的字段,一共占4个字节。由发送端对MAC帧的DA字段到Data字段间(不包含前导符和帧起始)的二进制序列进行计算。

文中图片来自《深入理解计算机网络》

猜你喜欢

转载自blog.csdn.net/GarfieldGCat/article/details/81435742