以太网帧格式详解

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

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


二、CSMA/CD
        
在ISO的OSI参考模型中,数据链路层的功能相对简单。它只负责将数据从一个节点可靠地传输到相邻节点。但在局域网中,多个节点共享传输介质,必须有某种机制来决定下一个时刻,哪个设备占用传输介质传送数据。因此,局域网的数据链路层要有介质访问控制的功能。为此,一般将数据链路层又划分成两个子层:

●逻辑链路控制LLC(Logic Line Control)子层
●介质访问控制MAC(Media Access Control)子层

以太网帧格式详解_第2张图片
图2  LLC和MAC子层

        如图2所示。其中,LLC子层负责向其上层提供服务;MAC子层的主要功能包括数据帧的封装/卸装,帧的寻址和识别,帧的接收与发送,链路的管理,帧的差错控制等。MAC子层的存在屏蔽了不同物理链路种类的差异性。
        在MAC子层的诸多功能中,非常重要的一项功能是仲裁介质的使用权,即规定站点何时可以使用通信介质。
        实际上,局域网技术中是采用具有冲突检测的载波侦听多路访问(Carrier Sense Multiple Access / Collision Detection,CSMA/CD)这种介质访问方法的。
        在这种介质访问方法中规定:在发送数据之前,一个节点必须首先侦听网线上的载波,如果在9.6微秒的时间之内没有检测到载波(说明通信介质空闲),节点才可以发送一帧数据。
        如果两个节点同时检测到介质空闲并同时发送出一帧数据,则会导致数据帧的冲突,双方的数据帧均被破坏。一方面,检测到冲突的节点会发送"冲突增强"信号(32比特的"1")通知介质上的每个节点发生了冲突。另一方面,发生冲突的节点在再次发送自己的数据帧之前会各自等待一段随机的时间。
        随着以太网上节点数量的增加,冲突的数量也随之增加,而整个网段的有效带宽将随之减少。

三、以太网帧格式
        目前,有四种不同格式的以太网帧在使用,它们分别是:
        ●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类型以太网帧格式。


图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地址"字段到"数据"字段的数据进行校验。

以太类型值(16进制) 对应协议 备注
0x0000 - 0x05DC   IEEE 802.3 长度  
0x0101 – 0x01FF 实验  
0x0600 XEROX NS IDP  
0x0660    
0x0661 DLOG  
0x0800 网际协议(IP)  
0x0801 X.75 Internet  
0x0802 NBS Internet  
0x0803 ECMA Internet  
0x0804  Chaosnet  
0x0805 X.25 Level 3  
0x0806 地址解析协议(ARP : Address Resolution Protocol)  
0x0808 帧中继 ARP (Frame Relay ARP) [RFC1701]  
0x6559 原始帧中继(Raw Frame Relay) [RFC1701]  
0x8035 动态 DARP (DRARP:Dynamic RARP)反向地址解析协议(RARP:Reverse Address Resolution Protocol)  
0x8037 Novell Netware IPX  
0x809B EtherTalk  
0x80D5 IBM SNA Services over Ethernet  
0x80F3 AppleTalk 地址解析协议(AARP:AppleTalk Address Resolution Protocol)  
0x8100 以太网自动保护开关(EAPS:Ethernet Automatic Protection Switching)  
0x8137 因特网包交换(IPX:Internet Packet Exchange)  
0x814C  简单网络管理协议(SNMP:Simple Network Management Protocol)  
0x86DD 网际协议v6(IPv6,Internet Protocol version 6)  
0x8809 OAM
几个重要字段的含义如下:
l Dest addr:以太网OAM报文的目的MAC地址,为组播MAC地址0180c2000002。
l Source addr:以太网OAM报文的源MAC地址,为发送端的桥MAC地址,该地址是一个单播MAC地址。
l Type:以太网OAM报文的协议类型,为0x8809。
l Subtype:以太网OAM报文的协议子类型,为0x03。
lFlags:Flags域,包含了以太网OAM实体的状态信息。
l Code:本字段指明了OAMPDU的报文类型。0x00表示Information OAMPDU、0x01表示Event Notification OAMPDU、0x04表示Loopback Control OAMPDU。
以下是几种常用的OAMPDU报文的作用:
l Information OAMPDU
Information OAMPDU报文用于将以太网OAM实体的状态信息(包括本地信息、远端信息和自定义信息)发给远端的以太网OAM实体,保持以太网OAM连接。
l Event Notification OAMPDU
Event Notification OAMPDU(事件通知OAMPDU)报文一般用于链路监控,是用于对连接本端和远端以太网OAM实体的链路发生的故障进行告警。
l Loopback Control OAMPDU
Loopback Control OAMPDU(环路控制OAMPDU)报文主要用于远端环回控制,环回控制OAMPDU报文用来控制远端设备的OAM环回状态,该报文中带有使能或去使能环回功能的信息,根据该信息开启或关闭远端环回功能。
0x880B 点对点协议(PPP:Point-to-Point Protocol)  
0x880C 通用交换管理协议(GSMP:General Switch Management Protocol)  
0x8847 多协议标签交换(单播) MPLS:Multi-Protocol Label Switching <unicast>)  
0x8848 多协议标签交换(组播)(MPLS, Multi-Protocol Label Switching <multicast>)  
0x8863 以太网上的 PPP(发现阶段)(PPPoE:PPP Over Ethernet <Discovery Stage>)  
0x8864 以太网上的 PPP(PPP 会话阶段) (PPPoE,PPP Over Ethernet<PPP Session Stage>)  
0x88BB 轻量级访问点协议(LWAPP:Light Weight Access Point Protocol)  
0x88CC  链接层发现协议(LLDP:Link Layer Discovery Protocol)  
0x8E88 局域网上的 EAP(EAPOL:EAP over LAN)  
0x9000 配置测试协议(Loopback)  
0x9100 VLAN 标签协议标识符(VLAN Tag Protocol Identifier)  
0x9200 VLAN 标签协议标识符(VLAN Tag Protocol Identifier)  
0xFFFF 保留  

五、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字节,即网络适配器厂商代码。

你可能感兴趣的:(以太网帧格式详解)