以太网帧格式

概述

以太网(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字节。

大小(字节)111
字段DASPSSAPControl

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的扩展。

大小(字节)32
字段OUI IDType

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

协议ID(Type)以太网协议
0x0800Internet Protocol, Version 4(IPv4)
0x0806Address Resolution Protocol(ARP)
0x0842Wake-on-LAN Magic Packet
0x1337SYN-3 Heartbeat Protocol(SYNdog)
0x22F3IETF TRILL Protocol
0x6003DECnet Phase IV
0x8035Reverse Address Resolution Protocol(RARP)
0x809BAppleTalk(Ethertalk)
0x80F3AppleTalk Address Resolution Protocol(AARP)
0x8100VLAN-tagged frame(IEEE 802.1Q)
0x8137Novell IPX(alt)
0x8138Novell
0x8204QNX Qnet
0x86DDInternet Protocol, Version 6(IPv6)
0x8808MAC Control
0x8809Slow Protocols(IEEE 802.3)
0x8819CobraNet
0x8847MPLS unicast
0x8848MPLS multicast
0x8863PPPoE Discovery Stage
0x8864PPPoE Session Stage
0x886FMicrosoft NLB heartbeat
0x8870Jumbo Frames
0x887BHomePlug 1.0 MME
0x888EEAP over LAN(IEEE 802.1X)
0x8892PROFINET Protocol
0x889AHyperSCSI(SCSI over Ethernet)
0x88A2ATA over Ethernet
0x88A4EtherCat Protocol
0x88A8Provider Bridging(IEEE 802.1ad)
0x88ABEthernet Powerlink
0x88CCLLDP
0x88CDsercos III
0x88D8Circuit Emulation Services over Ethernet(MEF-8)
0x88E1HomePlug AV MME
0x88E3Media Redundancy Protocol(IEC62439-2)
0x88E5MAC security(IEEE 802.1AE)
0x88F7Precision Time Protocol(IEEE 1588)
0x8902IEEE 802.1ag Connectivity Fault Management(CFM) Protocol / ITU-T Recommendation Y.1731(OAM)
0x8906Fibre Channel over Ethernet
0x8914FCoE Initialization Protocol
0x9000Configuration Test Protocol(Loop)
0x9100Q-in-Q

以太网MAC帧

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

尺寸(字节)7166238~15004
字段前导符帧起始目的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字段间(不包含前导符和帧起始)的二进制序列进行计算。

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

  • 11
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值