一起学习交流~

以太网帧格式详解

路由 jsq 9个月前 (12-21) 1214次浏览 已收录 2个评论

浅谈以太网帧格式

一、以太网帧格式的发展

1980 年DEC,Intel,Xerox制订了Ethernet I 的标准

1982 年DEC,Intel,Xerox又制订了Ehternet II的标准

1982 年IEEE开始研究Ethernet国际标准802.3

1983 迫不及待地Novell基于IEEE的802.3的原始版开发了专用的Ethernet帧格式

1985 年IEEE推出IEEE802.3规范

后来为解决Ethernet II与802.3帧格式的兼容问题推出折中的Ethernet SNAP格式

二、各种不同的帧格式

Ethernet II

也就是DIX(DEC,Intel,Xerox)以太网联盟推出的,它由6个字节的目的MAC地址,6个字节的源MAC地址,2个字节的类型域(用于标示封装在这个Frame、里面数据的类型)以上为Frame Header,接下来是46–1500 字节的数据,和4字节的帧校验)是如今局域网里最常见的以太帧,是以太网事实标准。如今大多数的TCP/IP应用(如HTTP、FTP、SMTP、POP3等)都是采用Ethernet II帧承载。

表1Ethernet II帧的链路层各字段含义

字段 长度 含义
DMAC 6字节 目的MAC地址,IPV4为6字节,该字段标识帧的接收者
SMAC 6字节 源MAC地址,IPV4为6字节,该字段标识帧的发送者
Type 2字节 协议类型。标识出了链路直接封装的协议类型
Data 46~1500字节 数据字段,标识帧的负载(可能包含填充位)
数据字段的最小长度必须为46字节以保证帧长至少为64字节,这意味着传输1字节信息也必须使用46字节的数据字符按。
如果填入该字段的信息少于46字节,该字段的其余部分也必须进行填充。数据字段的最大长度为1500字节。
以太帧的长度必须为整数字节,因此真的负载长度不足整数字节,需要插入填充字段以保证数据帧的长度为整数字节。
FCS 4字节 帧校验序列FCS是为接收者提供判断是否传输错误的一种方法,如果发现错误,丢弃此帧。
FCS只是通用叫法,具体的FCS还可以细分多种校验方法。在以太帧中,FCS通常采用循环冗余码校验CRC

表2Ethernet II帧的物理层各字段含义

字段 长度 含义
帧间隙 至少12字节 每个以太帧之间都要有帧间隙(Inter Frame Gap),即每发完一个帧后要等待一段时间才能再发另外一个帧,以便让帧接收者对接收的帧做必要的处理(如调整缓存的指针、更新计数、通知对报文进行处理等等)。在以太网标准中规定最小帧间隙是12个字节,其数据为全1。对于个别的接口,可减少到64(GE)或40比特(10GE),其他的接口都不应该小于12字节。
前同步码 7字节 以太网标准中规定前导码为10101010 10101010 10101010 10101010 10101010 10101010 10101010(二进制),共7字节。
帧开始定界符 1字节 以太网标准中规定帧开始定界符为10101011(二进制),共1字节。

表3常见Type值

协议
0x0800 Internet Protocol Version 4 (IPv4)
0x0806 Address Resolution Protocol (ARP)
0x22F4 L2-IS-IS
0x8035 Reverse Address Resolution Protocol (RARP)
0x8137 Novell NetWare IPX/SPX (old)
0x8138 Novell, Inc.
0x8100 IEEE Std 802.1Q – Customer VLAN Tag Type
0x814C SNMP over Ethernet
0x86DD IP Protocol version 6 (IPv6)
0x876B TCP/IP Compression
0x880B Point-to-Point Protocol (PPP)

Novell Ethernet (抢先发布的私人版802.3帧)

它的帧头与Ethernet有所不同其中EthernetII帧头中的类型域变成了长度域,后面接着的两个字节为0xFFFF 用于标示这个帧是Novell Ether类型的Frame 由于前面的0xFFFF站掉了两个字节所以数据域缩小为44-1498个字节,帧校验不变。

表1802.3 Raw帧的链路层各字段含义

字段 长度 含义
DMAC 6字节 目的MAC地址,IPV4为6字节,该字段标识帧的接收者
SMAC 6字节 源MAC地址,IPV4为6字节,该字段标识帧的发送者
Length 2字节 支出后续数据的字节长度,但不包括FCS字段
——- 1字节 固定为0xFF
——- 1字节 固定为0xFF
Data 44~1498字节 数据字段,标识帧的负载(可能包含填充位)
数据字段的最小长度必须为44字节以保证帧长至少为64字节,这意味着传输1字节信息也必须使用44字节的数据字符按。
如果填入该字段的信息少于44字节,该字段的其余部分也必须进行填充。数据字段的最大长度为1498字节。
以太帧的长度必须为整数字节,因此真的负载长度不足整数字节,需要插入填充字段以保证数据帧的长度为整数字节。
FCS 4字节 帧校验序列FCS是为接收者提供判断是否传输错误的一种方法,如果发现错误,丢弃此帧。
FCS只是通用叫法,具体的FCS还可以细分多种校验方法。在以太帧中,FCS通常采用循环冗余码校验CRC
Length后的2字节填充为0xFFFF标识该帧为802.3 Raw帧

IEEE 802.3/802.2(正式版的802.3帧)

802.3的Frame Header和Ethernet II的帧头有所不同EthernetII类型域(type)变成了长度域(length)。其中又引入802.2协议(LLC)在802.3帧头后面添加了一个LLC首部,由DSAP(Destination Service Access Point) 1 byte,SSAP(Source SAP),一个控制域–1 byte! SAP用于标示帧的上层协议

表1802.3 LLC帧的链路层各字段含义

字段 长度 含义
DMAC 6字节 目的MAC地址,IPV4为6字节,该字段标识帧的接收者
SMAC 6字节 源MAC地址,IPV4为6字节,该字段标识帧的发送者
Length 2字节 支出后续数据的字节长度,但不包括FCS字段
DSAP 1字节 目的服务访问点,若后面类型为IP帧值设为0x06。服务访问点的功能类似于Ethernet II帧中的Type字段或TCP/UDP传输协议中的端口号。
SSAP 1字节 源服务访问点,若后面类型为IP帧值设为0x06。
Ctrl 1字节 该字段值通常设为0x03,表示无连接服务的IEEE 802.2无编号数据格式。
Data 43~1497字节 数据字段,标识帧的负载(可能包含填充位)
数据字段的最小长度必须为43字节以保证帧长至少为64字节,这意味着传输1字节信息也必须使用43字节的数据字符按。
如果填入该字段的信息少于43字节,该字段的其余部分也必须进行填充。数据字段的最大长度为1497字节。
以太帧的长度必须为整数字节,因此真的负载长度不足整数字节,需要插入填充字段以保证数据帧的长度为整数字节。
FCS 4字节 帧校验序列FCS是为接收者提供判断是否传输错误的一种方法,如果发现错误,丢弃此帧。
FCS只是通用叫法,具体的FCS还可以细分多种校验方法。在以太帧中,FCS通常采用循环冗余码校验CRC

Ethernet SNAP(支持更多上层协议的802.3帧)

SNAP Frame与802.3/802.2 Frame的最大区别是增加了一个5 Bytes的SNAP ID其中前面3个byte通常与源mac地址的前三个bytes相同为厂商代码!有时也可设为0,后2 bytes 与Ethernet II的类型域相同

表1802.3 SNAP帧的链路层各字段含义

字段 长度 含义
DMAC 6字节 目的MAC地址,IPV4为6字节,该字段标识帧的接收者
SMAC 6字节 源MAC地址,IPV4为6字节,该字段标识帧的发送者
Length 2字节 支出后续数据的字节长度,但不包括FCS字段
DSAP 1字节 目的服务访问点,若后面类型为IP帧值设为0x06。服务访问点的功能类似于Ethernet II帧中的Type字段或TCP/UDP传输协议中的端口号。该位置通过固定为0xAA
SSAP 1字节 源服务访问点,若后面类型为IP帧值设为0x06。该位置通过固定为0xAA
Ctrl 1字节 该字段值通常设为0x03,表示无连接服务的IEEE 802.2无编号数据格式。
SNAP-ID 5字节 由OUI和Type两部分组成
OUI 3字节 3字节的组织唯一标识符(Organizationally Unique Identifier),其值通常等于MAC地址的前3字节,即网络适配器厂商代码。
Type 2字节 标识以太网帧所携带的上层数据类型。
根据RFC1042标准,OUI使用一个特殊的数值0x00-00-00,当这个字段为0x00-00-00时,Type字段与Ethernet II封装中的Type具有相同的含义。
Data 38~1492字节 数据字段,标识帧的负载(可能包含填充位)
数据字段的最小长度必须为38字节以保证帧长至少为64字节,这意味着传输1字节信息也必须使用38字节的数据字符按。
如果填入该字段的信息少于38字节,该字段的其余部分也必须进行填充。数据字段的最大长度为1492字节。
以太帧的长度必须为整数字节,因此真的负载长度不足整数字节,需要插入填充字段以保证数据帧的长度为整数字节。
FCS 4字节 帧校验序列FCS是为接收者提供判断是否传输错误的一种方法,如果发现错误,丢弃此帧。
FCS只是通用叫法,具体的FCS还可以细分多种校验方法。在以太帧中,FCS通常采用循环冗余码校验CRC

三、如何区分不同的帧格式

Ethernet种存在着四种不同的Frame,那么网络设备又是如何识别的呢?

帧头中2Bytes的Type/Length的值>1536(0x0600)则为Ethernet II帧;反之帧头中2Bytes的Type/Length的值<1500(0x05DC)则继续比较接着的2Bytes(DSAP、SSAP),如果为0xFFFF则为Novell Ethernet帧,如果为0xAAAA则为Ethernet SNAP格式的帧,如果都不是则为Ethernet 802.3/202.2格式的帧

喜欢 (4)
订阅评论
提醒
guest
2 评论
最旧
最新 最多投票
内联反馈
查看所有评论
哈撒给
哈撒给
9 月 前

666666

疾风剑豪
疾风剑豪
9 月 前

很棒6666