注:本文为 “Ethernet 和 802.3” 相关文章合辑。
未整理去重。
如有内容异常,请看原文。
Ethernet 和 802.3 的区别及历史
posted @ 2017-12-27 10:26 jasonactions
1. 前言
Ethernet 和 802.3 并不是一回事,虽然我们经常混用这两个术语。
2. 历史上以太网帧格式
2.1 Ethernet V1
这是最原始的一种格式,是由 Xerox PARC 提出的 3Mbps CSMA/CD 以太网标准的封装格式,后来在 1980 年由 DEC,Intel 和 Xerox 标准化形成 Ethernet V1 标准
2.2 Ethernet V2 (ARPA)
- Ethernet V2 帧头结构
这是最常见的一种以太网帧格式,也是今天以太网的事实标准,由 DEC,Intel 和 Xerox 在 1982 年公布其标准,
主要更改了 Ethernet V1 的电气特性和物理接口,在帧格式上并无变化;
Ethernet V2 出现后迅速取代 Ethernet V1 成为以太网事实标准;
Ethernet V2 帧头结构为 6bytes 的源地址 + 6bytes 的目标地址 + 2Bytes 的协议类型字段 + 数据
-
常见协议类型
0800 IP
0806 ARP
8137 Novell IPX
809b Apple Talk
如果协议类型字段取值为 0000-05dc (十进制的 0-1500),则该帧就不是 Ethernet V2 (ARPA) 类型了,而是下面讲到的三种 802.3 帧类型之一;
Ethernet 可以支持 TCP/IP,Novell IPX/SPX,Apple Talk Phase I 等协议;
RFC 894 定义了 IP 报文在 Ethernet V2 上的封装格式;
- Ethernet_II 中所包含的字段
(1)前导字符
在每种格式的以太网帧的开始处都有 64 比特(8 字节)的前导字符,如图所示。其中,前 7 个字节称为前同步码(Preamble),内容是 16 进制数 0xAA,最后 1 字节为帧起始标志符 0xAB,它标识着以太网帧的开始。
前导字符的作用是使接收节点进行同步并做好接收数据帧的准备
(2)PR
同步位,用于收发双方的时钟同步,同时也指明了传输的速率(10M 和 100M 的时钟频率不一样,所以 100M 网卡可以兼容 10M 网卡),是 56 位的二进制数 101010101010…
(3)SD
分隔位,表示下面跟着的是真正的数据,而不是同步时钟,为 8 位的 10101011, 跟同步位不同的是最后 2 位是 11 而不是 10.
(4)DA
目的地址,以太网的地址为 48 位 (6 个字节) 二进制地址,表明该帧传输给哪个网卡。如果为 FFFFFFFFFFFF, 则是广播地址,广播地址的数据可以被任何网卡接收到.
(5)SA
源地址,48 位,表明该帧的数据是哪个网卡发的,即发送端的网卡地址,同样是 6 个字节.
(6)TYPE
类型字段,表明该帧的数据是什么类型的数据,不同的协议的类型字段不同。
如:0800H 表示数据为 IP 包,0806H 表示数据为 ARP 包,814CH 是 SNMP 包,8137H 为 IPX/SPX 包,(小于 0600H 的值是用于 IEEE802 的,表示数据包的长度。)
(7)DATA
数据段 ,该段数据不能超过 1500 字节。因为以太网规定整个传输包的最大长度不能超过 1514 字节。(14 字节为 DA,SA,TYPE)
(8)PAD
填充位。由于以太网帧传输的数据包最小不能小于 60 字节,除去(DA,SA,TYPE 14 字节),还必须传输 46 字节的数据,当数据段的数据不足 46 字节时,后面补 000000…(当然也可以补其它值)
(9)FCS
32 位数据校验位。为 32 位的 CRC 校验,该校验由网卡自动计算,自动生成,自动校验,自动在数据段后面填入。对于数据的校验算法,我们无需了解.
注:
[1] 事实上,PR,SD,PAD,FCS 这几个数据段我们不用理它,它是由网卡自动产生的,我们要理的是 DA,SA,TYPE,DATA 四个段的内容.
[2] 所有数据位的传输由低位开始 (但传输的位流是用曼彻斯特编码的)
[3] 以太网的冲突退避算法就不介绍了,它是由硬件自动执行的.
[4] DA+SA+TYPE+DATA+PAD 最小为 60 字节,最大为 1514 字节.
[5] 以太网卡可以接收三种地址的数据,一个是广播地位,一个是多播地址 (我们用不上), 一个是它自已的地址。但网卡也可以设置为接收任何数据包 (用于网络分析和监控).
[6] 任何两个网卡的物理地址都是不一样的,是世界上唯一的,网卡地址由专门机构分配。不同厂家使用不同地址段,同一厂家的任何两个网卡的地址也是唯一的.
[7] 根据网卡的地址段 (网卡地址的前三个字节), 可以知道网卡的生产厂家。有些网卡的地址也可以由用户去设定,但一般不需要.
[8] Ethernet_II 的主要特点是通过类型域标识了封装在帧里的数据包所采用的协议,类型域是一个有效的指针,通过它,数据链路层就可以承载多个上层(网络层)协议。
但是,Ethernet_II 的缺点是没有标识帧长度的字段。
2.3 RAW 802.3:(NOVELL Ethernet 802.3)
这是 1983 年 Novell 发布其划时代的 Netware/86 网络套件时采用的私有以太网帧格式,该格式以当时尚未正式发布的 802.3 标准为基础;
但是当两年以后 IEEE 正式发布 802.3 标准时情况发生了变化 —IEEE 在 802.3 帧头中又加入了 802.2 LLC (Logical Link Control) 头,这使得 Novell 的 RAW 802.3 格式跟正式的 IEEE 802.3 标准互不兼容;
可以看到在 Novell 的 RAW 802.3 帧结构中并没有标志协议类型的字段,而只有 Length 字段 (2bytes, 取值为 0000-05dc,即十进制的 0-1500),因为 RAW 802.3 帧只支持 IPX/SPX 一种协议;
原始的 802.3 帧是早期的 Novell NetWare 网络的默认封装。它使用 802.3 的帧类型,但没有 LLC 域。同 Ethernet_II 的区别:将类型域改为长度域,其取值范围为:46-1500。
解决了原先存在的问题。但是由于缺省了类型域,因此不能区分不同的上层协议。 接下来的 2 个字节是固定不变的 16 进制数 0xFFFF,它标识此帧为 Novell 以太类型数据帧。
2.4.IEEE 802.3/802.2 LLC
-
IEEE 802.3/802.2 LLC 帧格式
这是 IEEE 正式的 802.3 标准,它由 Ethernet V2 发展而来。它将 Ethernet V2 帧头的协议类型字段替换为帧长度字段 (取值为 0000-05dc; 十进制的 1500 );
并加入 802.2 LLC 头用以标志上层协议,LLC 头中包含 DSAP,SSAP 以及 Crontrol 字段;
-
802.2SAP
为了区别 802.3 数据帧中所封装的数据类型, IEEE 引入了 802.2SAP 和 SNAP 的标准。它们工作在数据链路层的 LLC(逻辑链路控制)子层。
通过在 802.3 帧的数据字段中划分出被称为服务访问点(SAP)的新区域来解决识别上层协议的问题,这就是 802.2SAP。
-
LLC 标准
LLC 标准包括两个服务访问点,源服务访问点(SSAP)和目标服务访问点(DSAP)。每个 SAP 只有 1 字节长,而其中仅保留了 6 比特用于标识上层协议,所能标识的协议数有限。
因此,又开发出另外一种解决方案,在 802.2SAP 的基础上又新添加了一个 2 字节长的类型域(同时将 SAP 的值置为 AA),使其可以标识更多的上层协议类型,这就是 802.2SNAP。
-
常见 SAP 值
0:Null LSAP [IEEE]
4:SNA Path Control [IEEE]
6:DOD IP [79,JBP]
AA:SNAP [IEEE]
FE:ISO DIS 8473 [52,JXJ]
FF:Global DSAP [IEEE]
-
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 网络环境中。
2.5.IEEE 802.3/802.2 SNAP
-
IEEE 802.3/802.2 SNAP 帧格式
这是 IEEE 为保证在 802.2 LLC 上支持更多的上层协议同时更好的支持 IP 协议而发布的标准
与 802.3/802.2 LLC 一样,802.3/802.2 SNAP 也带有 LLC 头,但是扩展了 LLC 属性,新添加了一个 2Bytes 的协议类型域(同时将 SAP 的值置为 AA),从而使其可以标识更多的上层协议类型;
另外添加了一个 3Bytes 的 OUI 字段用于代表不同的组织,RFC 1042 定义了 IP 报文在 802.2 网络中的封装方法和 ARP 协议在 802.2 SNAP 中的实现;
实际环境中大多数 TCP/IP 设备都使用 Ethernet V2 格式的帧。
这是因为第一种大规模使用的 TCP/IP 系统 (4.2/3 BSD UNIX) 的出现时间介于 RFC 894 和 RFC 1042 之间,它为了避免不能和别的主机互操作的风险而采用了 RFC 894 的实现;
也由于大家都抱着这种想法,所以 802. 3 标准并没有如预期那样得到普及;
CISCO 设备的 Ethernet Interface 默认封装格式是 ARPA (Ethernet V2)
3. Ethernet 中四种 Frame的网络设备识别
决策树的判断逻辑:
源 MAC 后两字节 >1500 → Ethernet V2
|
└→ len 后两字节 ==FFFF → RAW 802.3
└→ len 后两字节 ==AAAA → IEEE 802.3/802.2 SNAP
¬↑⤳否 → Ethernet 802.3/802.2 格式
-
Ethernet V2 (ARPA) 格式的 Frame 识别:
- 如果 source mac 后的 2 bytes 的值大于 1500 ,则此 Frame 为 Ethernet V2 (ARPA) 格式的 Frame。否则进行如下判断。
-
RAW 802.3:(NOVELL Ethernet 802.3) 格式的 Frame 识别:
- 如果 len 字段后面的 2 bytes 为 0xFFFF,则为 RAW 802.3:(NOVELL Ethernet 802.3) 格式的 Frame。否则进行如下判断。
-
IEEE 802.3/802.2 SNAP 格式的 Frame 识别:
- 如果 len 字段后面的两 bytes 为 0xAAAA ,则为 IEEE 802.3/802.2 SNAP 格式的 Frame 。否则进行如下判断。
-
Ethernet 802.3/802.2 格式的 Frame 识别:
- 若不符合上述三种情况,则为 Ethernet 802.3/802.2 格式的 Frame。
4. 不同厂商对帧格式不同的叫法
比如:
Frame Type | Novell | Cisco |
---|---|---|
Ethernet Version 2 | Ethernet_II | arpa |
Raw 802.3 | Ethernet_802.3 | novell_ether |
IEEE 802.3/802.2 | Ethernet_802.2 | sap |
IEEE 802.3/802.2 SNAP | ETHERNET_SNAP | snap |
以太网帧格式
GarfieldGCat 于 2018-08-05 21:25:56 发布
概述
以太网 (Ethernet) 是数字设备、英特尔、施乐在 1982 年联合公布的标准(实际上这是以太网的第二版,即 Ethernet II)。它采用 CSMA/CD 介质访问控制,传输速率仅为 10Mbps。1985 年,IEEE 的 802 委员会公布一个系列的以太网标准,见下图:
不幸的是,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 字节。如下图所示:
3. Ethernet 802.3 Raw
这是 Novell 公司在 1983 年公布的以太网标准,仅支持 IPS/SPX 协议。当时以并未正式发布的 802.3 标准为基础创建,相对 Ethernet II 帧来说,就多了 2 个字节的 0xFFFF 用于区分,由于总的帧长度不变,所以数据字段中的最小和最大长度也相应减少 2 个字节,为 44~1498 字节。如下图所示:
4. Ethernet 802.3 SAP
这是 IEEE 在 1985 年发布的第一个以太网帧标准,SAP 是服务点的意思,该标准添加了 LLC 头,其包含目的服务访问点 (DSAP)、源服务访问点 (SSAP) 和控制 (Control) 三个字段,另外源 Ethernet II 的 Type 字段更换成了 Length 字段。因为添加了三个字段,所以数据长度范围相应改为 43~1497 字节。该版本很快就被 IEEE 更新为 LLC 和 SNAP 版本。其格式如下图所示:
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 字节。如下图所示:
上述就是 6 种主要帧格式的介绍,曾经或现在主流应用的是 II、LLC、SNAP 三种,其主要差别如下图所示:
以太网 LLC 帧头格式
上述就提及到,自 802.3 SAP 标准发布后,以太网帧中就有了 LLC 帧头,在 802.3 系列里,LLC 的格式都是一样的,均为 3 字节。
大小 (字节) | 1 | 1 | 1 |
---|---|---|---|
字段 | DASP | SSAP | Control |
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 的扩展。
大小 (字节) | 3 | 2 |
---|---|---|
字段 | OUI ID | Type |
OUI (Organizationally Unique Identifier):组织唯一标识符,指示帧中 Data 字段数据报对应协议的发布组织,占 3 字节。IEEE 发布的以太网协议类型此字段为 0x00000。
Type:类型属性,指示帧中数据包所对应的协议类型,占 2 字节。除了支持 802.3 以太网协议,还支持 802.4、802.5 等等协议,还支持非 802 协议。IEEE 发布的以太网协议对应的字段取值如下:
协议 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 |
以太网 MAC 帧
MAC 帧通常被认为是数据链路层帧,是在 MAC 子层间交换的 PDU,前面提及到的 LLC 帧头和 SNAP 帧头与上层的数据报一起封装在数据字段中,如下:
尺寸 (字节) | 7 | 1 | 6 | 6 | 2 | 38~1500 | 4 |
---|---|---|---|---|---|---|---|
字段 | 前导符 | 帧起始 | 目的 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 字段间(不包含前导符和帧起始)的二进制序列进行计算。
文中图片来自《深入理解计算机网络》
-
Ethernet 和 802.3 的区别及历史 - jasonactions - 博客园
https://www.cnblogs.com/smartjourneys/articles/8124490.html- 以太网上四种帧格式 - ethernet II-raw 802.3-802.2LLC-802.2SNAP - 张志伟 122 - 博客园
https://www.cnblogs.com/zhangzhiwei122/p/15881967.html
- 以太网上四种帧格式 - ethernet II-raw 802.3-802.2LLC-802.2SNAP - 张志伟 122 - 博客园
-
以太网帧格式详解 - CSDN 博客
https://blog.csdn.net/GarfieldGCat/article/details/81435742