【转】以太网帧格式详解

浅谈以太网帧格式

一、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)

二.各种不同的帧格式  下面介绍一下各个帧格式  1.Ethernet II 就是DIX以太网联盟推出的。。。。 它由6个字节的目的MAC地址,6个字节的源MAC地址, 2个字节的类型域(用于标示封装在这个Frame、里面 数据的类型)以上为Frame Header, 接下来是46--1500字节的数据,和4字节的帧校验 2.Novell Ethernet 它的帧头与Ethernet有所不同其中EthernetII帧头中的类型域变成了长度域,  后面接着的两个字节为0xFFFF,用于标示这个帧是Novell Ether类型的Frame, 由于前面的0xFFFF站掉了两个字节所以数据域缩小为44-1498个字节,帧校验不变。 3.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! SAP用于标示帧的上层协议。

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

三.如何区分不同的帧格式    Ethernet中存在这四种Frame那些网络设备又是如何识别的呢? 如何区分EthernetII与其他三种格式的Frame 如果帧头跟随source mac地址的2 bytes的值大于1500,则此Frame为EthernetII格式的     接着比较紧接着的两bytes如果为0xFFFF则为Novell Ether类型的Frame, 如果为0xAAAA则为Ethernet SNAP格式的Frame ,如果都不是则为Ethernet 802.3/802.2格式的帧

几种以太网帧格式     相当长的一段时间里我都没搞明白一个很基础的问题---以太网的封装格式;最近查了查相关文档,总结如下;   首先说明一下,Ethernet和802.3并不是一回事,虽然我们经常混用这两个术语;   历史上以太网帧格式有五种:   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的协议类型字段+数据。  常见协议类型如下: 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上的封装格式;   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标准互不兼容;可以看到在Novell的RAW 802.3帧结构中并没有标志协议类型的字段,  而只有Length字段(2bytes,取值为0000-05dc,即十进制的0-1500),因为RAW 802.3帧只支持IPX/SPX一种协议;   4.802.3/802.2 LLC:这是IEEE 正式的802.3标准,它由Ethernet V2发展而来。  它将Ethernet V2帧头的协议类型字段替换为帧长度字段(取值为0000-05dc;十进制的1500);  并加入802.2 LLC头用以标志上层协议,LLC头中包含DSAP,SSAP以及Crontrol字段;  常见SAP值: 0         Null LSAP        [IEEE]  4        SNA Path Control         [IEEE]  6        DOD IP        [79,JBP]  AA         SNAP        [IEEE]  FE        Global DSAP        [IEEE]  SAP值用以标志上层应用,但是每个SAP字段只有8bits长,  而且其中仅保留了6比特用于标识上层协议,因此所能标识的协议数有限(不超过32种);  并且IEEE拒绝为某些重要的协议比如ARP协议定义SAP值(奇怪的是同时他们却定义了IP的SAP值);  因此802.3/802.2 LLC的使用有很大局限性;   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中的实现;   今天的实际环境中大多数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)

不同厂商对这几种帧格式通常有不同的叫法,比如: Frame Type         Novel        Cisco  Ethernet Version 2        Ethernet_II        arpa  802.3 Raw        Ethernet_802.3        novell_ether  IEEE 802.3/802.2        Ethernet_802.2        sap  IEEE 802.3/802.2 SNAP        ETHERNET_SNAP        snap **************************************************************************************************************************************

一、 以太网数据帧的格式分析

大家都知道我们目前的局域网大多数是以太网,但以太网有多种标准,其数据帧有多种格式,恐怕有许多人不是太清楚,本文的目的就是通过帧格式和Sniffer捕捉的数据包解码来区别它们。

以太网这个术语一般是指数字设备公司(DigitalEquipment)、英特尔公司(Intel)和施乐公司(Xerox)在1982年联合公布的一个标准(实际上它是第二版本,第一版本早在1972年就在施乐公司帕洛阿尔托研究中心PARC里产生了)。它是目前TCP/IP网络采用的主要的局域网技术。它采用一种称作CSMA/CD的媒体接入方法,其意思是带冲突检测的载波侦听多路接入(Carrier Sense, Multiple Access with CollisionDetection)。它的速率为10 Mb/s,地址为48 bit。

1985年,IEEE(电子电气工程师协会)802委员会公布了一个稍有不同的标准集,其中802.3针对整个CSMA/CD网络,802.4针对令牌总线网络,802.5针对令牌环网络。这三者的共同特性由802.2标准来定义,那就是802网络共有的逻辑链路控制(LLC)。不幸的是,802.2和802.3定义了一个与以太网不同的帧格式,加上1983年Novell为其Netware开发的私有帧,这些给以太网造成了一定的混乱,也给我们学习以太网带来了一定的影响。

1、通用基础

数据链路层头(Header)是数据链路层的控制信息的长度不是固定的,根据以太网数据帧的格式的不同而不同,那么判断IEEE802.3、IEEE802.3 SNAP、Ethernet Version2、Netware 802.3“Raw”这些数据帧的最主要依据也源于Header的变化。

从Sniffer捕捉数据包中也可以看出,Sniffer捕捉数据包的时候是掐头去尾的,不要前面的前导码,也丢弃后面的CRC校验(注意它只是不在Decode里显示该区域,但并不代表它不去做数据包CRC校验),这就是很多人困惑为什么Sniffer捕捉到的数据包长度跟实际长度不相符的原因。那么,Sniffer是如何来判断这些不同类型的以太网格式呢?

Sniffer可以判断出不同的以太网格式,这里需要注意的是,Sniffer在数据包解码时有自己的格式,所以有Offset之说,offset ØE是指在SnifferHex解码窗口中从左向右第15位的数值。大家如果有点发懵的话,没有关系,看完后面的格式分析后再来分析前面提到的,相信一定能够明白?

下面我们通过一些具体的数据包来说明各种以太网格式的具体区别。

2、Ethernet Version2

以太网版本2是先于IEEE标准的以太网版本。

从数据包中可以看出,EthernetV2通过在DLC头中2个字节的类型(Type)字段来辨别接收处理。类型字段是用来指定上层协议的(如0800指示IP、0806指示ARP等),它的值一定是大于05FF的,它提供无连接服务的,本身不控制数据(DATA)的长度,它要求网络层来确保数据字段的最小包长度(46字节)。

Sniffer捕获的Ethernet V2帧的解码,可以看到在DLC层,源DLC地址后紧跟着就是以太网类型(Etehertype)值0800,代表上层封装的是IP报文,0800大于05FF,因而我们可以断定它是Ethernet V2的帧。

3、IEEE802.3

IEEE802.3把DLC层分隔成明显的两个子层:MAC层和LLC层,其中MAC层主要是指示硬件目的地址和源地址。LLC层用来提供一些服务:

– 通过SAP地址来辨别接收和发送方法

– 兼容无连接和面向连接服务

– 提供子网访问协议(Sub-network Access Protocol,SNAP),类型字段即由它的首部给出。

MAC层要保证最小帧长度不小于64字节,如果数据不满足64字节长度就必须进行填充。

是Sniffer捕获的IEEE802.3帧的解码,可以看到在DLC层源地址后紧跟着就是802.3的长度(Length)字段0026,它小于05FF,可以肯定它不是Ethernet V2的帧,而接下来的Offset0E处的值“4242”(代表DSAP和SSAP),既不是Novell 802.3 “Raw”的特征值“FFFF”,也不是IEEE 802.3SNAP的特征值“AAAA”,因此它肯定是一个IEEE802.3的帧。

4、IEEE802.3 SNAP

SNAP (Sub-Network AccessProtocol)子网访问协议,是逻辑链路控制(Logical LinkControl)的一个子集,它允许协议不用通过服务访问点(SAP)即可实现IEEE兼容的MAC层功能,因此它在DSAP和SSAP域里的值是固定的(AAAA)。也正源于此,它需要额外提供5个字节的头来指定接收方法,3个字节标识厂商代码,2个字节标识上层协议。

其MAC层保证数据帧长度不小于64字节,不足的话需要进行数据填充。

是Sniffer捕获的IEEE802.3SNAP帧的解码,可以看到在DLC层源地址后紧跟着就是802.3的长度(Length)字段0175,它小于05FF,可以肯定它不是Ethernet V2的帧,而接下来的Offset 0E处的值“AAAA”(代表DSAP和SSAP),这是IEEE 802.3SNAP的特征值“AAAA”,因此可以断定它是一个IEEE802.3 SNAP的帧。

5、Novell Netware 802.3 “Raw”

虽然它的产生先于IEEE802.3规范,但已成为IEEE802.3规范的一部分。它仅使用DLC层的下半部,而不使用LLC。

802.3 “Raw”帧通过在DLC头中2个字节的长度(Length)字段来标记数据帧长度,而在长度字段后紧跟着就是两个字节的十六进制值FFFF,它是用来标识IPX协议头的开始。为了确保最小数据帧长度为64字节,MAC层会进行填充数据区域来确保最小长度。

在所有工作站都使用同一种数据帧类型情况下不会有什么问题,但如果是在混合以太网帧类型环境中,Novell的这种以太网帧会造成负面影响:当Novell发出广播帧时,其FF字段正好是IEEE802.3帧中的服务访问点(SAP)域,它的“FF”值代表着广播SAP,因此所有的工作站(不管是不是Netware工作站)都会拷贝,这会造成不必要的广播影响。

Sniffer捕获的Netware 802.3“RAW”帧的解码,可以看到在DLC层源地址后紧跟着就是802.3的长度(Length)字段0120,它小于05FF,可以肯定它不是Ethernet V2的帧,而接下来的Offset 0E处的值“FFFF”(代表IPX协议的开始),这是Netware 802.3“Raw”的特征值“FFFF”,因此可以断定它是一个Novell 802.3 “Raw”的帧。

二、 Ethernet V2帧与IEEE 802.3帧的比较

因为这两种帧是我们在现在的局域网里最常见的两种帧,因此,我们对它们进行一些比较。

Ethernet V2可以装载的最大数据长度是1500字节,而IEEE802.3可以装载的最大数据是1492字节(SNAP)或是1497字节; Ethernet V2不提供MAC层的数据填充功能,而IEEE802.3不仅提供该功能,还具备服务访问点(SAP)和SNAP层,能够提供更有效的数据链路层控制和更好的传输保证。那么我们可以得出这样的结论:Ethernet V2比IEEE802.3更适合于传输大量的数据,但EthernetV2缺乏数据链路层的控制,不利于传输需要严格传输控制的数据,这也正是IEEE802.3的优势所在,越需要严格传输控制的应用,越需要用IEEE802.3或SNAP来封装,但IEEE802.3也不可避免的带来数据装载量的损失,因此该格式的封装往往用在较少数据量承载但又需要严格控制传输的应用中。

在实际应用中,我们会发现,大多数应用的以太网数据包是EthernetV2的帧(如HTTP、FTP、SMTP、POP3等应用),而交换机之间的BPDU(桥协议数据单元)数据包则是IEEE802.3的帧,VLANTrunk协议如802.1Q和Cisco的CDP(思科发现协议)等则是采用IEEE802.3SNAP的帧。大家有兴趣的话,可以利用Sniffer等协议分析工具去捕捉数据包,然后解码查看是不是这样的。

原文地址:https://www.cnblogs.com/zhangbing12304/p/11016618.html

时间: 2024-10-09 06:16:02

【转】以太网帧格式详解的相关文章

WebSocket 详解

WebSocket 出现前 构建网络应用的过程中,我们经常需要与服务器进行持续的通讯以保持双方信息的同步.通常这种持久通讯在不刷新页面的情况下进行,消耗一定的内存资源常驻后台,并且对于用户不可见.在 WebSocket 出现之前,我们有一下解决方案: 传统轮询(Traditional Polling) 当前Web应用中较常见的一种持续通信方式,通常采取 setInterval 或者 setTimeout 实现.例如如果我们想要定时获取并刷新页面上的数据,可以结合Ajax写出如下实现: setIn

《TCP/IP详解卷2:实现》笔记--接口层:以太网和环回

1.以太网接口 Net/3以太网设备驱动程序都遵循同样的设计.对于大多数Unix设备驱动程序来说,都是这样,因为写一个新接口卡的驱动 程序总是在一个已有的驱动程序的基础上修改而来的.下面我们简要地概述一下以太网的标准和一个以太网驱动程序的设 计.下图是一个IP分组的以太网封装. 我们所讨论的最初的以太网组帧的标准在1982年由Digital设备公司,intel公司以及施乐公司发布,并作为今天在TCP/IP网络 中最常使用的格式,另一个可选的格式是IEEE规定的802.2和802.3标准. 下图列

[转帖]技术盛宴 | 关于PoE以太网供电技术详解

技术盛宴 | 关于PoE以太网供电技术详解 https://smb.pconline.com.cn/1208/12085824.html [PConline 干货铺]随着物联网技术飞速发展,需要提供网络服务的终端越来越丰富,使用传统强电的方式为多种多样的智能终端供电变得越来越困难,以太网供电(Power over Ethernet,简称PoE)技术的普及,正逐一解决各类智能终端的供电问题.目前PoE技术已经从传统的WLAN.网络监控.IP电话等应用场景延伸到新零售.IoT(Internet of

《TCP/IP详解卷1:协议》第2章 链路层-读书笔记

章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 1.引言 从图1-4可以看出,在TCP/IP协议族中,链路层主要有三个目的: (1)为IP模块发送和接收IP数据报: (2)为ARP模块发送ARP请求和接收ARP应答. (3)为RARP发送RARP请求和接收RARP应答. TCP/IP支持多种不同的链路层协议,这取决于网络所使用的硬件,如以太网.令牌环网.FDDI(光纤分布式数据接口)及RS-232串行线路等. 2.以太网和IEEE 802封装 (1)以太网 以太网一般是指数字

网络协议概述:物理层、连接层、网络层、传输层、应用层详解(转载)

这篇文章主要介绍了网络协议概述:物理层.连接层.网络层.传输层.应用层详解,本文用生活中的邮差与邮局来帮助理解复杂的网络协议,通俗易懂,文风幽默,是少见的好文章,需要的朋友可以参考下 信号的传输总要符合一定的协议(protocol).比如说长城上放狼烟,是因为人们已经预先设定好狼烟这个物理信号代表了“敌人入侵”这一抽象信号.这样一个“狼烟=敌人入侵”就是一个简单的协议.协议可以更复杂,比如摩尔斯码(Morse Code),使用短信号和长信号的组合,来代表不同的英文字母.比如SOS(***---*

网络协议分为哪几层---物理层,连接层,网络层,传输层,应用层详解

这篇文章主要介绍了网络协议概述:物理层.连接层.网络层.传输层.应用层详解,本文用生活中的邮差与邮局来帮助理解复杂的网络协议,通俗易懂,文风幽默,是少见的好文章,需要的朋友可以参考下 信号的传输总要符合一定的协议(protocol).比如说长城上放狼烟,是因为人们已经预先设定好狼烟这个物理信号代表了"敌人入侵"这一抽象信号.这样一个"狼烟=敌人入侵"就是一个简单的协议.协议可以更复杂,比如摩尔斯码(Morse Code),使用短信号和长信号的组合,来代表不同的英文字

VLAN详解

VLAN的作用:N1P429 1. 控制广播 2. 确保安全 3. 灵活扩展 VLAN类型 静态VLAN(基于端口) 动态VLAN(基于MAC地址) 通过VPMS VLAN帧标识 [N6eP301] 传统交换机:数据帧进入交换机,交换机只检查目的MAC地址,参照MAC地址表转发到适当端口,而不考虑数据帧从哪里来的.如果不知道目的MAC,交换机则开始泛洪. VLAN交换机:数据帧进入交换机 - 获取VLAN_ID - 匹配过滤表 同时将数据帧转发给trunk口,trunk口不删除VLAN ID -

计算机网路中CDP,LLDP,STP的详解

CDP,LLDP,STP知识详解 (1) CDP CDP(Cisco Discovery Protoco:Cisco发现协议)是Cisco专有的用来发现邻接点的协议 ,所有的Cisco产品都支持CDP.CDP只显示直接相连的邻居信息,如果中间隔了一个其他设备,也就是跨设备的话,CDP是不能发现的,所以CDP的目的是获取直接相邻设备的信息.CDP非常有助于验证一台路由器是否连在它邻居的适当端口. 要运行CDP协议,物理介质必须支持SNAP协议(SubNetwork Access Protocol:

《TCP/IP详解》

[TCP的那些事儿]TCP是个巨复杂的协议,而且不断地改进中.所以学习TCP本身是个比较痛苦的过程,但这个过程却能让人有很多收获.希望这篇快餐科普性文章能在快餐文化下让你对TCP有了解,并可以促发你对基础知识的兴趣和学习欲望. http://coolshell.cn/articles/11564.html http://coolshell.cn/articles/11609.html 大家知道,TCP/IP已成为计算机网络的事实上的标准.在关于TCP/IP的论著中,最有影响的就是两部著作.一部是