转载自http://blog.sina.com.cn/s/blog_5ce2ac4d0100jzf0.html

具体总体的封装请参考本博客TCP/IP中的IP封装一章,一下使具体详解:因为以太包的类型不同,格式也不尽相同:但大体上格式统一

以太网帧格式详解_第1张图片

Etherne II
报头8    目标地址6    源地址6    以太类型2    有效负载46-1500    帧检验序列4

报头:8个字节,前7个0,1交替的字节(10101010)用来同步接收站,一个1010101011字节指出帧的开始位置。报头提供接收器同步和帧定界服务。
目标地址:6个字节,单播、多播或者广播。单播地址也叫个人、物理、硬件或MAC地址。广播地址全为1,0xFF FF FF FF。
源地址:6个字节。指出发送节点的单点广播地址。
以太类型:2个字节,用来指出以太网帧内所含的上层协议。即帧格式的协议标识符。对于IP报文来说,该字段值是0x0800。对于ARP信息来说,以太类型字段的值是0x0806。
有效负载:由一个上层协议的协议数据单元PDU构成。可以发送的最大有效负载是1500字节。由于以太网的冲突检测特性,有效负载至少是46个字节。如果上层协议数据单元长度少于46个字节,必须增补到46个字节。
帧检验序列:4个字节。验证比特完整性。

IEEE 802.3
根据IEEE802.2 和802.3标准创建的,由一个IEEE802.3报头和报尾以及一个802.2LLC报头组成。
报头7    起始限定符1    目标地址6(2)    源地址6(2)    长度2    DSAP1    SSAP1    控件2    有效负载3    帧检验序列4
-----------802.3报头--------------§---802.2报头----§              §-802.3报尾-§

IEEE802.3报头和报尾
报头:7个字节,同步接收站。位序列10101010
起始限定符:1个字节,帧开始位置的位序列10101011。
报头+起始限定符=Ethernet II的报头
目标地址:同Ethernet II。也可以为2个字节,很少用。
源地址:同Ethernet II。也可以为2个字节,很少用。
长度:2个字节。
帧检验序列:4个字节。

IEEE802.2 LLC报头
DSAP:1个字节,指出帧的目标节点的上层协议。Destination Service Access Point
SSAP:1个字节,指出帧的源节点的上层协议。Source Service Access Point
DSAP和SSAP相当于IEEE802.3帧格式的协议标识符。为IP定义的DSAP和SSAP字段值是0x06。但一般使用SNAP报头。
控件:1-2个字节。取决于封装的是LLC数据报(Type1 LLC)还是LLC通话的一部分(Type2 LLC)。
Type1 LLC:1个字节的控件字段,是一种无连接,不可靠的LLC数据报。无编号信息,UI帧,0x03。
Type2 LLC:2个字节的控件字段,是一种面向连接,可靠的LLC对话。
对IP和ARP,从不使用可靠的LLC服务。所以,都只用Type1 LLC,控件字段设为0x03。


区分两种帧
根据源地址段后的前两个字节的类型不同。
如果值大于1500(0x05DC),说明是以太网类型字段,EthernetII帧格式。值小于等于1500,说明是长度字段,IEEE802.3帧格式。因为类型字段值最小的是0x0600。而长度最大为1500。

IEEE802.3 SNAP
虽然为IP定义的SAP是0x06,但业内并不使用该值。RFC1042规定在IEEE802.3, 802.4, 802.5网络上发送的IP数据报和ARP帧必须使用SNAP(Sub Network Access Prototol)封装格式。

报头7   起始限定符1   目标地址6   源地址6   长度2   DSAP1   SSAP1    控件1    组织代码3    以太类型2    IP数据报    帧检验序列
----IEEE802.3报头-----------§IEEE8023 LLC报头---§--SNAP报头----§            §802.3报尾§
                                                                          0x0A       0x0A      0x03      0x00-00-00     0x08-00     (38-1492字节)

Ethernet地址
        为了标识以太网上的每台主机,需要给每台主机上的网络适配器(网络接口卡)分配一个唯一的通信地址,即Ethernet地址或称为网卡的物理地址、MAC地址。
        IEEE负责为网络适配器制造厂商分配Ethernet地址块,各厂商为自己生产的每块网络适配器分配一个唯一的Ethernet地址。因为在每块网络适配器出厂时,其Ethernet地址就已被烧录到网络适配器中。所以,有时我们也将此地址称为烧录地址(Burned-In-Address,BIA)。
        Ethernet地址长度为48比特,共6个字节,如图1所示。其中,前3字节为IEEE分配给厂商的厂商代码,后3字节为网络适配器编号。


图1  Ethernet地址


 

以太网帧格式
        目前,有四种不同格式的以太网帧在使用,它们分别是:
        ●Ethernet II即DIX 2.0:Xerox与DEC、Intel在1982年制定的以太网标准帧格式。Cisco名称为:ARPA。
        ●Ethernet 802.3 raw:Novell在1983年公布的专用以太网标准帧格式。Cisco名称为:Novell-Ether。
        ●Ethernet 802.3 SAP:IEEE在1985年公布的Ethernet 802.3的SAP版本以太网帧格式。Cisco名称为:SAP。
        ●Ethernet 802.3 SNAP:IEEE在1985年公布的Ethernet 802.3的SNAP版本以太网帧格式。Cisco名称为:SNAP。
        在每种格式的以太网帧的开始处都有64比特(8字节)的前导字符,如图3所示。其中,前7个字节称为前同步码(Preamble),内容是16进制数0xAA,最后1字节为帧起始标志符0xAB,它标识着以太网帧的开始。前导字符的作用是使接收节点进行同步并做好接收数据帧的准备。


图3  以太网帧前导字符

        除此之外,不同格式的以太网帧的各字段定义都不相同,彼此也不兼容。

Ethernet II帧格式
        如图4所示,是Ethernet II类型以太网帧格式。

来源:(http://blog.sina.com.cn/s/blog_52f2688e0100cii7.html) - 以太网帧格式详解_月明星稀_新浪博客


图4  Ethernet II帧格式

        Ethernet II类型以太网帧的最小长度为64字节(6+6+2+46+4),最大长度为1518字节(6+6+2+1500+4)。其中前12字节分别标识出发送数据帧的源节点MAC地址和接收数据帧的目标节点MAC地址。(注:ISL封装后可达1548字节,802.1Q封装后可达1522字节)
        接下来的2个字节标识出以太网帧所携带的上层数据类型,如16进制数0x0800代表IP协议数据,16进制数0x809B代表AppleTalk协议数据,16进制数0x8138代表Novell类型协议数据等。
        在不定长的数据字段后是4个字节的帧校验序列(Frame. Check Sequence,FCS),采用32位CRC循环冗余校验对从"目标MAC地址"字段到"数据"字段的数据进行校验。

Ethernet 802.3 raw帧格式
        如图5所示,是Ethernet 802.3 raw类型以太网帧格式。


图5  Ethernet 802.3 raw帧格式

        在Ethernet 802.3 raw类型以太网帧中,原来Ethernet II类型以太网帧中的类型字段被"总长度"字段所取代,它指明其后数据域的长度,其取值范围为:46-1500。
        接下来的2个字节是固定不变的16进制数0xFFFF,它标识此帧为Novell以太类型数据帧。六、Ethernet 802.3 SAP帧格式
       
如图6所示,是Ethernet 802. 3 SAP类型以太网帧格式。


图6  Ethernet 802. 3 SAP帧格式

        从图中可以看出,在Ethernet 802.3 SAP帧中,将原Ethernet 802.3 raw帧中2个字节的0xFFFF变为各1个字节的DSAP和SSAP,同时增加了1个字节的"控制"字段,构成了802.2逻辑链路控制(LLC)的首部。LLC提供了无连接(LLC类型1)和面向连接(LLC类型2)的网络服务。LLC1是应用于以太网中,而LLC2应用在IBM SNA网络环境中。
        新增的802.2 LLC首部包括两个服务访问点:源服务访问点(SSAP)和目标服务访问点(DSAP)。它们用于标识以太网帧所携带的上层数据类型,如16进制数0x06代表IP协议数据,16进制数0xE0代表Novell类型协议数据,16进制数0xF0代表IBM NetBIOS类型协议数据等。
        至于1个字节的"控制"字段,则基本不使用(一般被设为0x03,指明采用无连接服务的802.2无编号数据格式)。

Ethernet 802.3 SNAP帧格式
       
如图7所示,是Ethernet 802. 3 SNAP类型以太网帧格式。


图7  Ethernet 802. 3 SNAP帧格式

        Ethernet 802. 3 SNAP类型以太网帧格式和Ethernet 802. 3 SAP类型以太网帧格式的主要区别在于:
        ●2个字节的DSAP和SSAP字段内容被固定下来,其值为16进制数0xAA。
        ●1个字节的"控制"字段内容被固定下来,其值为16进制数0x03。
        ●增加了SNAP字段,由下面两项组成:
          ◆新增了3个字节的组织唯一标识符(Organizationally Unique Identifier,OUI ID)字段,其值通常等于MAC地址的前3字节,即网络适配器厂商代码。