以太网帧格式
以太网帧格式
在以太网的帧头和帧尾中有几个用于实现以太网功能的域,每个域也称为字段,有其特定的名称和目的。下图显示了以太帧的3种不同形式。 图1 以太网帧的3种不同形式
DIX (Digital Equipment Corporation, Intel, Xerox ——数字设备公司,英特尔,施乐)
IEEE802.3(Original)
IEEE802.3(Revised 1997)
补充:
历史上以太网帧格式有五种:
1.Ethernet V1:这是最原始的一种格式,是由Xerox PARC 提出的3Mbps CS MA/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格式跟正式的I EEE 802.3标准互不兼容.
4.802.3/802.2 LLC :这是IEEE 正式的802.3标准,它由Ethernet V2发展而来。它将Ethernet V2帧头的协议类型字段替换为帧长度字段(取值为0000-05dc; 十进制的1500) ;并加入802.2 LLC 头用以标志上层协议,LLC 头中包含DSAP ,SS AP 以及Crontrol 字段.
5.802.3/802.2 SNAP :这是IEEE 为保证在802.2 LLC 上支持更多的上层协议同时更好的支持IP 协议而发布的标准,与802.3/802.2 LLC 一样802.3/802.2 SNA P 也带有LLC 头,但是扩展了LLC 属性,新添加了一个2Bytes 的协议类型域(同时将SAP 的值置为AA ),从而使其可以标识更多的上层协议类型;另外添加了一个3Bytes 的OUI 字段用于代表不同的组织,RFC 1042定义了IP 报文在802.2网络中的封装方法和ARP 协议在802.2 SANP 中的实现. 802.3以太网帧格式备注:
前导码(7字节)、帧起始定界符(1字节)、目的MAC 地址(6字节)、源M AC 地址(6字节)、类型/长度(2字节)、数据(46~1500字节)、帧校验序列(4字节)[MAC地址可以用2-6字节来表示,原则上是这样,实际都是6字节] 图2 IEEE802.3以太帧头
注:如果数据包小于46字节,则要求“填充”,以使这个字段达到46字节。填充是必须的,因为数据字段要求至少46字节长。 DIX 帧和IEEE 帧
在IEEE 建立以太网成帧标准时,与DIXv2规范相比,做了略微的修改。如上图1顶上部分,显示了原始DIX 的帧结构,中间部分为最初的IEEE 帧,现在的IEEE 帧在图的下部。
DIX 帧与原始802.3的标准有两个不同。DIX 不使用SFD ,它把前8个字节作为一个整体,用于同步成为前导码。前8个字节在功能上对DIX 帧和802.3的标准帧是没有区别的,只是所使用的名称不同。
另一个不同时DIXv2的类型字段和IEEE 的长度字段。DIXv2的类型字段指帧中数据字段的内容。施乐设定其占2个字节,称为协议代码,指明某一特定的协议。任何供应商都可向施乐注册,为其协议分配一个代码——协议指任何想通过以太网传输的协议。后来,IEEE 接管了协议代码的管理。
在解封装的过程中协议代码非常重要。如:一块网卡收到一个帧,它要将数据从以太帧中解封出来,给接收计算机的正确的软件处理。类型字段指明数据的类型——如,IP 分组或其他协议的3层PDU 。如果没有类型字段的信息,接收计算机将不会知道要把数据送给哪个软件处理。
2字节的IEEE 长度字段在帧中所占的位置与DIX 类型字段一致。它以字节为单位指明数据的长度。而IEEE 完成DIX 类型字段任务则要依靠802.3之后的其他协议头。
有意思的是,IEEE 所制定的以太网标准使得DIXv2帧和IEEE 帧在一个局域网中不能共存。因此,IEEE 允许从现存的DIXv2网卡和网络设备到IEEE 的标准设备的迁移。为了让设备可以设别使用的是哪种类型的帧,IEEE 没有分配1536一下(十六进制数为600)的数为协议类型代码。数据字段的最大值为1500字节。所以一台设备可以很容易从源地址之后的2个字节来判断是哪种类型的帧,如果值为1536(十进制)或更高则为类型字段,意味着是dixv2帧。如果从源地址之后的2个字节小于1536,则可确定是长度字段,为IEEE802.3帧