计算机网络协议,以太网帧格式

以太网的MAC帧格式有好几种,被广泛应用的是DIX Ethernet V2标准,还有一种是IEEE的802.3标准,该标准经过了多年的发展,已经出现了很多种子标准。DIX Ethernet V2 标准与 IEEE 的 802.3 标准只有很小的差别,因此可以将 802.3 局域网简称为“以太网”。严格说来,“以太网”应当是指符合 DIX Ethernet V2 标准的局域网

一、DIX Ethernet V2(Ethernet II)

1.帧结构

2.字段分析

=======================================================================================================

源MAC地址 ===> 发送方的MAC地址

=======================================================================================================

目的MAC地址 ===> 接收方的MAC地址

=======================================================================================================

上层协议类型 ===> 该MAC数据报中包装的网络层数据报协议类型

若该字段的值小于1518,那么这个字段就是长度字段,并定义后面的数据字段的长度。

若该字段的值大于1518,它就定义使用因特网服务的上层协议(小于0600H的值是用于IEEE802的,表示数据包的长度)

具体协议类型可以参考如下两个表:

表1:

协议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

表2:

以太类型值 (16 进制 ) 对应协议 备注
0x0000 - 0x05DC IEEE 802.3 长度  
0x0101 – 0x01FF 实验  
0x0660 XEROX NS IDP  
0x0661    
0x0800 DLOG  
0x0801 X.75 Internet  
0x0802 NBS Internet  
0x0803 ECMA Internet  
0x0804 Chaosnet  
0x0805 X.25 Level 3  
0x0806 ARP  
0x0808 帧中继ARP  
0x6559 原始帧中继RFR  
0x8035 动态 DARP,反向地址解析协议 RARP  
0x8037 Novell Netware IPX  
0x809B EtherTalk  
0x80D5 IBM SNA Services over Ethernet  
0x80F3 AppleTalk 地址解析协议 AARP  
0x8100 以太网自动保护开关 EAPS  
0x8137 因特网包交换 IPX  
0x814C 简单网络管理协议 SNMP  
0x86DD 网际协议 v6 IPv6  
0x8809 OAM

重要字段含义:
Dest addr : 以太网 OAM 报文的目的 MAC地址,

为组播 MAC 地址 0180c2000002


Source addr : 以太网 OAM 报文的源 MAC地址,

为发送端的桥 MAC 地址,该地址是一个单播 MAC

地址


Type :以太网 OAM 报文的协议类型,为0x8809


Subtype : 以太网 OAM 报文的协议子类型,
为 0x03


Flags : Flags 域, 包含了以太网 OAM 实体的状

态信息


Code :本字段指明了 OAMPDU 的报文类型。

0x00 表示 Information OAMPDU 、

0x01表示 Event Notification OAMPDU 、

0x04 表示 Loopback Control OAMPDU


常用的 OAMPDU 报文作用:
l Information OAMPDU 报文用于将以太网OAM 实体

的状态信息(包括本地信息、远端信息和自定义信息)

发给远端的以太网OAM 实体,保持以太网 OAM 连接


Event Notification OAMPDU(事件通知OAMPDU )

报文一般用于链路监控,是用于对连接本端和远端

以太网 OAM 实体的链路发生的故障进行告警


Loopback Control OAMPDU(环路控制OAMPDU )

报文主要用于远端环回控制环回控制 OAMPDU

报文用来控制远端设备的 OAM 环回状态,该报文

中带有使能或去使能环回功能的信息,根据该信息

开启或关闭远端环回功能

0x880B 点对点协议 PPP  
0x880C 通用交换管理协议 GSMP  
0x8847 多协议标签交换(单播)MPLS  
0x8848 多协议标签交换(组播)MPLS  
0x8863 以太网上的 PPP(发现阶段)  
0x8864 以太网上的 PPP(会话阶段)  
0x88BB 轻量级访问点协议 LWAPP  
0x88CC 链接层发现协议 LLDP  
0x8E88 局域网上的 EAP  EAPOL  
0x9000 配置测试协议( Loopback )  
0x9100 VLAN 标签协议标识符  
0x9200 VLAN 标签协议标识符  
0xFFFF 保留  

=======================================================================================================

数据 ===> 携带的数据;大小为46-1500字节

因为标准规定以太网帧的总长度最短为64字节,最长为1518字节。而除了数据外其它部分已占用了 6+6+2+4=18 字节长度。因此数据部分的长度就是 [64 ~ 1518] - 18 = [46 ~ 1500] 字节。我们知道mac数据报中大部分情况是包含的Ip数据报。而IP数据报最小可以为20字节。这种情况下20个字节满足不了mac帧数据部分的最短要求。于是当数据字段的长度小于46字节时,MAC子层就会在数据字段的后面加入一个整数字节的填充字段,以保证以太网的MAC帧长不小于64字节

问题一:

上层协议如何知道填充字段的长度呢?

当上层使用IP协议时,其首部就有一个“总长度”字段。此“总长度”加上填充字段的长度,等于MAC帧数据字段的长度。因此填充字段的长度=MAC帧数据字段的长度-IP数据报中的总长度字段

问题二:

在以太网V2的MAC帧格式中,首部并没有一个数据长度字段,那么,MAC子层又怎样知道从接收到的以太网帧中取出多少字节的数据交付上一层协议呢?

曼彻斯特编码的一个重要特点就是:在曼彻斯特编码的每一个码元(不管码元是1或0)的正中间一定有一次电压的转换(从高到低或从低到高)。当发送方把一个以太网帧发送完毕后,就不再发送其他码元了(既不发送1,也不发送0)。因此,发送方网络适配器的接口上的电压也就不再变化了。这样,接收方就可以很容易地找到以太网帧的结束位置。在这个位置往前数4字节(FCS字段长度是4字节),就能确定数据字段的结束位置

=======================================================================================================

帧检验序列 FCS ===> 4byte;使用CRC检验。当传输媒体的误码率为 1x10^-8 时MAC子层可使未检测到的差错小于 1x10^-14

=======================================================================================================

3.注意事项

1.MAC数据报的隔离

在以太网上传送数据时是以帧为单位传送的。以太网在传送帧时,各帧之间还必须有一定的间隙。因此,接收端只要找到帧开始定界符,其后面的连续到达的比特流就都属于同一个MAC帧

2.无效数据帧

什么类型的数据帧被认为是无效数据帧?

(1)帧的长度不是整数个字节

(2)用收到的帧检验序列FCS查出有差错

(3)收到的帧的MAC客户数据字段的长度不在46~1500字节之间

对无效数据帧的处理措施

对无效MAC帧就简单地丢弃。以太网不负责重传丢弃的帧

3.以太网V2 MAC帧(Ethernet II)和 IEEE 802.3标准规定的MAC帧的区别

(1)IEEE802.3规定的MAC帧的第三个字段是“长度/类型”(Ethernet II 规定该字段是类型)。当该字段值大于0x0600时,就表示“类型”(同Ethernet II)当该字段值小于0x0600时才表示“长度”,即MAC帧的数据部分长度(因为以太网采用了曼彻斯特编码,长度字段并无实际意义)

(2)当“长度/类型”字段值小于0x0600时,数据字段必须装入上面的逻辑链路控制LLC子层的LLC帧

二、IEEE 802.3 SAP

1.IEEE 802.3 SAP 帧格式

2.LLC帧格式

DSAP SSAP 控制字段 LLC数据

DSAP ===> 1byte;目的服务访问点,指示数据接收方LLC子层的SAP。全1 为全局地址,全0为空地址。在以太网中,该值固定为0xAA

SSAP ===> 1byte;源服务访问点,指示数据发送方LLC子层的SAP。在以太网中,该值固定为0xAA

控制字段 ===> 1byte ;控制属性,指示数据链路层所用的服务类型。在以太网中都是无连接服务,所以该值固定为0x03

LLC数据 ===> n byte

三、IEEE 802.3 SNAP

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

目的地址 源地址 长度/类型 DSAP SSAP 控制 OUI ID Type 数据 FCS

目的地址 ===> 6byte

源地址 ===> 6byte

长度 ===> 2byte

DSAP ===> 1byte

SSAP ===> 1byte

控制 ===> 1byte

OUI ID ===> 3byte;组织唯一标识符,指示帧中Data字段数据报对应协议的发布组织,IEEE发布的以太网协议类型此字段为0x00000

Type ===> 2byte;指示帧中数据包所对应的协议类型

数据 ===> 38byte - 1492byte

FCS ===> 4byte

posted @ 2020-02-20 21:28  IT蓝月  阅读(2597)  评论(0编辑  收藏  举报
Live2D