Ethernet的帧格式
2009-10-04 23:54
一、Ethernet帧格式的发展
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推出IEEE 802.3规范 后来为解决EthernetII与802.3帧格式的兼容问题推出折衷的Ethernet SNAP格式
(其中早期的Ethernet I 已经完全被其他帧格式取代了所以现在Ethernet只能见到后面几种Ethernet的帧格式现在大部分的网络设备都支持这几种Ethernet的帧格式如:cisco的路由器在设定Ethernet接口时可以指定不同的以太网的帧格式:arpa,sap,snap,novell-ether)
二.各种不同的帧格式 下面介绍一下各个帧格式
Ethernet II 就是DIX以太网联盟推出的,它由6个字节的目的MAC地址,6个字节的源MAC地址,2个字节的类型域(用于标示封装在这个Frame里面数据的类型)以上为Frame Header,接下来是46--1500 字节的数据,和4字节的帧校验。 Novell Ethernet 它的帧头与Ethernet有所不同其中EthernetII帧头中的类型域变成了长度域,后面接着的两个字节为0xFFFF ,用于标示这个帧是Novell Ether类型的Frame。 由于前面的0xFFFF占掉了两个字节所以数据域缩小为44-1498个字节,帧校验不变。
IEEE 802.3/802.2 802.3的Frame Header和Ethernet II的帧头有所不同,EthernetII类型域变成了长度域。其中又引入802.2协议(LLC),在802.3帧头后面添加了一个LLC首部,由DSAP(Destination Service Access Point )(1 byte),SSAP(Source SAP)(1 byte),一个控制域(1 byte)组成。 SAP用于标示帧的上层协议
Ethernet SNAP SNAP Frame与802.3/802.2 Frame的最大区别是增加了一个5 Bytes的SNAP ID其中前面3个byte通常与源mac地址的前三个bytes相同为厂商代码(即OUI)!有时也可设为0,后2 bytes 与Ethernet II的类型域相同。
三.如何区分不同的帧格式
Ethernet中存在这四种Frame,那网络设备又是如何识别的呢? 如何区分Ethernet II 与其他三种格式的Frame:如果帧头跟随source mac地址的2 bytes的值大于1500 则此Frame为EthernetII格式。
接着比较紧接着的两bytes如果为0xFFFF则为Novell Ether 类型的Frame 如果为0xAAAA则为Ethernet SNAP格式的Frame ,如果都不是则为Ethernet 802.3/802.2格式的帧。
1 Ethernet II 1.1 Ethernet II 协议简介
以太网是当今现有局域网采用的最通用的通信协议标准。该标准定义了在局域网中采用的电缆类型和信号处理方法。Ethernet II 由DEC,Intel和Xerox在1982年公布其标准,Etherent II 主要更改了Ethernet I 的电气特性和物理接口,在帧格式上并无变化。Etherent II 采用CSMA/CD的媒体接入和广播机制。
1.2 Ethernet II报头详解
Ethernet II协议报头结构
![Ethernet1.jpg Ethernet的帧格式_以太网 数据链路层 帧格式](http://s2.51cto.com/wyfs02/M00/6C/63/wKioL1VIgCmBJreoAACUjMJbGv0428.jpg?x-oss-process=image/resize,m_fixed,w_1184) 每个字段的详细解释如下: ★目标地址:此数据包的目标MAC地址。 ★源地址:此数据包的源MAC地址。 ★协议类型:上层协议,表示网络层使用的协议。 ★数据:高层协议、数据和填充符,范围在46~1500字节。 ★FCS:数据帧校验序列,用于确定数据包在传输过程中是否损坏。
1.3 数据包解码 下面我们就通过实际解码来学习Ethernet II 协议。
![Ethernet2.jpg Ethernet的帧格式_以太网 数据链路层 帧格式_02](http://s2.51cto.com/wyfs02/M02/6C/63/wKioL1VIgErzULxuAAMm7JClC4w215.jpg?x-oss-process=image/resize,m_fixed,w_1184)
以下是对该数据包解码的详细介绍: ★目标地址:00:00:59:AA:93:0D。 ★源地址:00:00:41:26:3F:9E。 ★协议类型:0x0800表示网络层使用的是IP协议。 ★数据:传输层和应用层的数据(UDP和QQ)。 ★FCS:数据帧校验序列。
2 Ethernet 802.2
2.1 Ethernet 802.2协议简介
Ethernet 802.2协议是IEEE正式的802.3标准,它由Ethernet II 发展而来。Ethernet 802.2将Ethernet II 帧头的协议类型字段替换为帧长度字段,并加入LLC-802.2头,用以标记上层协议。LLC头包含目的服务访问点(DSAP)、源服务访问点 (SSAP)和控制(Control)字段。
2.2 Ethernet 802.2协议报详解
Ethernet 802.2协议报头结构
![Ethernet3.jpg Ethernet的帧格式_以太网 数据链路层 帧格式_03](http://s2.51cto.com/wyfs02/M02/6C/67/wKiom1VIfvKwCFLSAAB_GKpuV5g606.jpg?x-oss-process=image/resize,m_fixed,w_1184)
每个字段的详细解释如下: ★目标地址:此数据包的目标mac地址; ★源地址:此数据包的源mac地址; ★长度:帧包含的数据量必须小于或等于1500(16进制的05DC); ★DSAP:目标服务存取点(Destination Service Access Point); ★SSAP:源服务存取点(Source Service Access Point); ★控制:无连接或面向连接的LLC; ★数据:高层协议、数据和填充符; ★FCS:数据帧校验序列,用于确定数据包在传输过程中是否损坏。
2.3 Ethernet 802.2协议解码 Ethernet 802.2协议的解码视图:
![Ethernet4.jpg Ethernet的帧格式_以太网 数据链路层 帧格式_04](http://s2.51cto.com/wyfs02/M02/6C/63/wKioL1VIgHyxTMRbAAK53wY20go544.jpg?x-oss-process=image/resize,m_fixed,w_1184)
以下是对该数据包解码的详细介绍: ★目标地址:01:80:C2:00:00:00; ★源地址:00:04:0C:38:CD:C9; ★长度:数包含的数量为38; ★目标服务存取点:0x42; ★源服务存取点:0x42; ★控制:3;
注意:服务存取点标识的功能类似于以太网类型或TCP/IP传输协议中的端口号,为高协议提供相应的接口。
3 Ethernet 802.3(这里实际是指Novell Ethernet)
3.1 Ethernet 802.3协议简介
Ethernet 802.3(Novell Ethernet)是1983年Novell发布其Netware/86网络套件时采用的私有以太网帧格式,该格式以当时尚未正式发布的IEEE802.3标准为基础;但是当两年以后IEEE正式发布802.3标准时情况发生了变化(IEEE在802.3帧头中又加入了802.2 LLC头),这使得Novell的Ethernet 802.3协议与正式的IEEE 802.3标准互不兼容;Ethernet 802.3(Novell Ethernet)只支持IPX/SPX协议(这也就是为什么没有类型字段的原因),是目前所用的最普通的一种帧格式,在802.2之前是IPX网络事实上的标准帧类型。
3.2 Ethernet 802.3协议报详解
Ethernet 802.3协议报头结构
![Ethernet5.jpg Ethernet的帧格式_以太网 数据链路层 帧格式_05](http://s2.51cto.com/wyfs02/M01/6C/63/wKioL1VIgI6CThLxAABPcCEq1vg323.jpg?x-oss-process=image/resize,m_fixed,w_1184)
每个字段的详细解释如下: ★目标地址:此数据包的目标MAC地址。 ★源地址:此数据包的源MAC地址。 ★长度:帧包含的数数据必须小于或等于1500;>=46。 ★数据:高层协议(IPX/SPX)、数据和填充符,范围在46~1500字节。 ★FCS:数据帧校验序列,用于确定数据包在传输过程中是否损坏。 有关IPX/SPX协议可参看http://hi.baidu.com/embedtec/blog/item/bc76924e342c320db3de05f8.html
3.3 Ethernet 802.3协议(Novell Ethernet)解码 下面我们就通过实际解码来学习Ethernet 802.3协议.
![Ethernet6.jpg Ethernet的帧格式_以太网 数据链路层 帧格式_06](http://s2.51cto.com/wyfs02/M02/6C/63/wKioL1VIgKfhJeP-AAMVwon_zTE682.jpg?x-oss-process=image/resize,m_fixed,w_1184)
下面我们对Ethernet 802.3的解码进行详细的介绍: ★目标地址:FF:FF:FF:FF:FF:FF; ★源地址:00:E0:4C:50:6B:2E; ★长度:协议长度为40(请留意还有16字节额外数据); ★数据:Ethernet 802.3只支持IPX/SPX协议; ★FCS:数据帧校验序列,用于确定数据包在传输过程中是否损坏。
注意:从这里就能看出Etherent II 和Ethernet 802.3的区别,即协议类型和协议长度。
4 Ethernet SNAP
4.1 Ethernet SNAP协议简介
Ethernet SNAP协议是IEEE为保证在802.2 LLC上支持更多的上层协议的同时更好地支持IP协议而发布的标准,与802.3/802.2 LLC一样802.3/802.2 SNAP也带有LLC头,但是扩展了LLC属性,新添加了一个2字节的协议类型域(同时将SAP的值置为AA),从而使其可以标识更多的上层协议类型;另外添加了一个3字节的厂商代码字段用于标记不同的组织。RFC 1042定义了IP报文在802.2网络中的封装方法和ARP协议在802.2 SANP中的实现方法。
4.2 Ethernet SNAP协议报头详解
Ethernet SNAP协议报头结构.
![Ethernet7.jpg Ethernet的帧格式_以太网 数据链路层 帧格式_07](http://s2.51cto.com/wyfs02/M00/6C/63/wKioL1VIgLrBuVyEAACBz3fXFZE141.jpg?x-oss-process=image/resize,m_fixed,w_1184)
4.3 Ethernet SNAP解码 下面我们通过解码视图来学习Ethernet SNAP协议
![Ethernet8.jpg Ethernet的帧格式_以太网 数据链路层 帧格式_08](http://s2.51cto.com/wyfs02/M00/6C/67/wKiom1VIf1qQJcHxAALSQm7Zh0I071.jpg?x-oss-process=image/resize,m_fixed,w_1184)
以下是对该数据包解码的详细介绍: ★目标地址:01:00:81:00:01:01 ★源地址:00:04:0C:38:CD:C9; ★长度:协议长度为19; ★目标服务存取点:0xAA; ★源服务存取点:0xAA; ★厂商代码:129; ★协议类型:417;
前面我们分别介绍了以太网标准中定义的四种不同的帧类型,即Ethernet II、Ethernet802.3(Novell Ethernet)、Ethernet SNAP和Ethernet 802.2,这每一种帧类型都由不同的实体为不同的目的而设计。它们可以共存于一个网络中,但互不兼容,当用不同封装类型的工作站要交换信息时,必须通过支持的路由器来通信。
关于Ethernet 帧格式 (3) 2008年09月30日 星期二 10:48 历史上以太网帧格式有五种: 1.Ethernet V1:这是最原始的一种格式,是由Xerox PARC提出的3Mbps CSMA/CD以太网标准的封装格式,后来在1980年由DEC,Intel和Xerox标准化形成Ethernet V1标准. 2.Ethernet V2(ARPA):由DEC,Intel和Xerox在1982年公布其标准,主要更改了Ethernet V1的电气特性和物理接口,在帧格式上并无变化;Ethernet V2出现后迅速取代Ethernet V1成为以太网事实标准;Ethernet V2帧头结构为6bytes的源地址+6bytes的目标地址+2Bytes的协议类型字段+数据。 3.RAW 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标准互不兼容. 4.802.3/802.2 LLC:这是IEEE 正式的802.3标准,它由Ethernet V2发展而来。它将Ethernet V2帧头的协议类型字段替换为帧长度字段(取值为0000-05dc;十进制的1500);并加入802.2 LLC头用以标志上层协议,LLC头中包含DSAP,SSAP以及Crontrol字段. 5.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 SANP中的实现. 802.3以太网帧格式备注: 前导码(7字节)、帧起始定界符(1字节)、目的MAC地址(6字节)、源MAC地址(6字节)、类型/长度(2字节)、数据(46~1500字节)、帧校验序列(4字节)[MAC地址可以用2-6字节来表示,原则上是这样,实际都是6字节]
|
另: 四种格式的以太网帧结构 出处 http://cvgcv6666.blog.51cto.com/713624/267028 用过NetXray之类的抓包软件的人,可能经常会被一些不同的Frame Header搞糊涂,为何用的Frame的Header是这样的,而另外的又不一样。这是因为在Ethernet中存在几种不同的帧格式,下面我就简单介绍一下几种不同的帧格式及他们的差异。
|
一、Ethernet帧格式的发展
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推出IEEE 802.3规范;
后来为解决EthernetII与802.3帧格式的兼容问题推出折中的Ethernet SNAP格式 。
(其中早期的Ethernet I已经完全被其他帧格式取代了所以现在Ethernet只能见到后面几种Ethernet的帧格式现在大部分的网络设备都支持这几种Ethernet的帧格式如:cisco的路由器在设定Ethernet接口时可以指定不同的以太网的帧格式:arpa,sap,snap,novell-ether)
二、各种不同的帧格式
下面介绍一下各个帧格式
是DIX以太网联盟推出的,它由6个字节的目的MAC地址,6个字节的源MAC地址,2个字节的类型域(用于表示装在这个Frame、里面数据的类型),以上为Frame Header,接下来是46--1500 字节的数据,和4字节的帧校验)
![Ethernet9.jpg Ethernet的帧格式_以太网 数据链路层 帧格式_09](http://s2.51cto.com/wyfs02/M01/6C/67/wKiom1VIf3KB7_LHAACUjMJbGv0613.jpg?x-oss-process=image/resize,m_fixed,w_1184)
它的帧头与Ethernet有所不同其中EthernetII帧头中的类型域变成了长度域,后面接着的两个字节为0xFFFF用于标示这个帧是Novell Ether类型的Frame,由于前面的0xFFFF占掉了两个字节所以数据域缩小为44-1498个字节,帧校验不变。(0xFF即一个字节长,格式标注上有误)
![Ethernet10.jpg Ethernet的帧格式_以太网 数据链路层 帧格式_10](http://s2.51cto.com/wyfs02/M00/6C/67/wKiom1VIf4bz-PQmAACrp7ZPvKQ939.jpg?x-oss-process=image/resize,m_fixed,w_1184)
802.3的Frame Header和Ethernet II的帧头有所不同,它把EthernetII类型域变成了长度域(与Novell Ethernet相同)。其中又引入802.2协议(LLC)在802.3帧头后面添加了一个LLC首部,由DSAP(Destination Service Access Point) 1 byte,SSAP(Source SAP) 1 byte,一个控制域ctrl 1 byte,SAP用于表示帧的上层协议。
![Ethernet11.jpg Ethernet的帧格式_以太网 数据链路层 帧格式_11](http://s2.51cto.com/wyfs02/M01/6C/63/wKioL1VIgQfySzrLAACt-nFLLCM485.jpg?x-oss-process=image/resize,m_fixed,w_1184)
Ethernet SNAP Frame与802.3/802.2 Frame的最大区别是增加了一个5 Bytes的SNAP ID,其中前面3个byte通常与源mac地址的前三个bytes相同,为厂商代码,有时也可设为0。后2 bytes 与Ethernet II的类型域相同。
![Ethernet12.jpg Ethernet的帧格式_以太网 数据链路层 帧格式_12](http://s2.51cto.com/wyfs02/M01/6C/67/wKiom1VIf6uRI8hjAACvFH5WeXQ174.jpg?x-oss-process=image/resize,m_fixed,w_1184)
附上三种帧抓包图片:
Ethernet II:
![Ethernet13.jpg Ethernet的帧格式_以太网 数据链路层 帧格式_13](http://s2.51cto.com/wyfs02/M02/6C/67/wKiom1VIf8iT7T9PAAF6Ky36mRw549.jpg?x-oss-process=image/resize,m_fixed,w_1184)
IEEE 802.3 SAP:
![Ethernet14.jpg Ethernet的帧格式_以太网 数据链路层 帧格式_14](http://s2.51cto.com/wyfs02/M00/6C/63/wKioL1VIgVKwTrDYAAGe5ZeT8eI781.jpg?x-oss-process=image/resize,m_fixed,w_1184)
IEEE 802.3 SNAP:
![Ethernet15.jpg Ethernet的帧格式_以太网 数据链路层 帧格式_15](http://s2.51cto.com/wyfs02/M01/6C/67/wKiom1VIf_aTLOY2AAGH80RZBfg278.jpg?x-oss-process=image/resize,m_fixed,w_1184)
Ethernet II和IEEE802.3是局域网里最常见的帧:
Ethernet II可以装载的数据长度是46---1500;
IEEE802.3 SAP可以装装的数据长度是43---1497;
IEEE 802.3 SNAP可以装载的数据长度是38---1492.
Ethernet II不提供MAC层的数据填充功能;
IEEE802.3 SAP和SNAP都提供数据填充功能.
因些,我们可以得出这样的结论:
Ethernet II比IEEE802.3 SAP和SNAP更适合于传输大量的数据,但Ethernet II缺乏对数据链路层的控制,不利于传输需要严格传输控制的数据.
实际中,我们会发现,大多数应用程序的以太网数据包都是Ethernet II帧的(如HTTP/Telnet/FTP/SMTP/POP3等应用),而交换机之间的BPDU是采用IEEE802.3 SAP帧,VLAN Trunk协议802.1Q和Cisco CDP都是采用IEEE802.3 SNAP帧.
顺便提供一下各种Ethertype(以太网类型)和SAPs(服务访问点):
Ethertype 值 SAPs 值
Netware 8137 Netware 10,E0
XNS 0600,0807 XNS 80
IP 0800 IP 06
ARP 0806 NetBIOS F0
RARP 8035 BPDU 42
IP(Wines) 0BAD,4 SNA 04,05,08,
DRP 6003 X.25 7E
LAT 6004 ISO 20,34,EC,FE,14,54
LAVC 6007 SNAP AA
ARP(AppleTalk) 3