以太网帧格式

 
一、 Ethernet 地址
       
为了标识以太网上的每台主机,需要给每台主机上的网络适配器(网络接口卡)分配一个唯一的通信地址,即 Ethernet 地址或称为网卡的物理地址、 MAC 地址。
        IEEE
负责为网络适配器制造厂商分配 Ethernet 地址块,各厂商为自己生产的每块网络适配器分配一个唯一的 Ethernet 地址。因为在每块网络适配器出厂时,其 Ethernet 地址就已被烧录到网络适配器中。所以,有时我们也将此地址称为烧录地址( Burned-In-Address BIA )。
        Ethernet
地址长度为 48 比特,共 6 个字节,如图 1 所示。其中,前 3 字节为 IEEE 分配给厂商的厂商代码,后 3 字节为网络适配器编号。

1   Ethernet 地址

二、 CSMA/CD
       
ISO OSI 参考模型中,数据链路层的功能相对简单。它只负责将数据从一个节点可靠地传输到相邻节点。但在局域网中,多个节点共享传输介质,必须有某种机制来决定下一个时刻,哪个设备占用传输介质传送数据。因此,局域网的数据链路层要有介质访问控制的功能。为此,一般将数据链路层又划分成两个子层:

逻辑链路控制 LLC Logic Line Control )子层
介质访问控制 MAC Media Access Control )子层

2   LLC MAC 子层
        如图 2 所示。其中, LLC 子层负责向其上层提供服务; MAC 子层的主要功能包括数据帧的封装 / 卸装,帧的寻址和识别,帧的接收与发送,链路的管理,帧的差错控制等。 MAC 子层的存在屏蔽了不同物理链路种类的差异性。
       
MAC 子层的诸多功能中,非常重要的一项功能是仲裁介质的使用权,即规定站点何时可以使用通信介质。
       
实际上,局域网技术中是采用具有冲突检测的载波侦听多路访问( Carrier Sense Multiple Access / Collision Detection CSMA/CD )这种介质访问方法的。
       
在这种介质访问方法中规定:在发送数据之前,一个节点必须首先侦听网线上的载波,如果在 9.6 微秒的时间之内没有检测到载波(说明通信介质空闲),节点才可以发送一帧数据。
       
如果两个节点同时检测到介质空闲并同时发送出一帧数据,则会导致数据帧的冲突,双方的数据帧均被破坏。一方面,检测到冲突的节点会发送 " 冲突增强 " 信号( 32 比特的 "1" )通知介质上的每个节点发生了冲突。另一方面,发生冲突的节点在再次发送自己的数据帧之前会各自等待一段随机的时间。
       
随着以太网上节点数量的增加,冲突的数量也随之增加,而整个网段的有效带宽将随之减少。
三、以太网帧格式
       
目前,有四种不同格式的以太网帧在使用,它们分别是:
        ●Ethernet II
DIX 2.0 Xerox DEC Intel 1982 年制定的以太网标准帧格式。 Cisco 名称为: ARPA
        ●Ethernet 802.3 raw
Novell 1983 年公布的专用以太网标准帧格式。 Cisco 名称为: Novell-Ether
        ●Ethernet 802.3 SAP
IEEE 1985 年公布的 Ethernet 802.3 SAP 版本以太网帧格式。 Cisco 名称为: SAP
        ●Ethernet 802.3 SNAP
IEEE 1985 年公布的 Ethernet 802.3 SNAP 版本以太网帧格式。 Cisco 名称为: SNAP
       
在每种格式的以太网帧的开始处都有 64 比特( 8 字节)的前导字符,如图 3 所示。其中,前 7 个字节称为前同步码( Preamble ),内容是 16 进制数 0xAA ,最后 1 字节为帧起始标志符 0xAB ,它标识着以太网帧的开始。前导字符的作用是使接收节点进行同步并做好接收数据帧的准备。

3   以太网帧前导字符
        除此之外,不同格式的以太网帧的各字段定义都不相同,彼此也不兼容。
四、 Ethernet II 帧格式
       
如图 4 所示,是 Ethernet II 类型以太网帧格式。

4   Ethernet II 帧格式
        Ethernet II 类型以太网帧的最小长度为 64 字节( 6 6 2 46 4 ),最大长度为 1518 字节( 6 6 2 1500 4 )。其中前 12 字节分别标识出发送数据帧的源节点 MAC 地址和接收数据帧的目标节点 MAC 地址。(注: ISL 封装后可达 1548 字节, 802.1Q 封装后可达 1522 字节)
       
接下来的 2 个字节标识出以太网帧所携带的上层数据类型,如 16 进制数 0x0800 代表 IP 协议数据, 16 进制数 0x809B 代表 AppleTalk 协议数据, 16 进制数 0x8138 代表 Novell 类型协议数据等。
       
在不定长的数据字段后是 4 个字节的帧校验序列( Frame. Check Sequence FCS ),采用 32 CRC 循环冗余校验对从 " 目标 MAC 地址 " 字段到 " 数据 " 字段的数据进行校验。
五、 Ethernet 802.3 raw 帧格式
       
如图 5 所示,是 Ethernet 802.3 raw 类型以太网帧格式。

5   Ethernet 802.3 raw 帧格式
        Ethernet 802.3 raw 类型以太网帧中,原来 Ethernet II 类型以太网帧中的类型字段被 " 总长度 " 字段所取代,它指明其后数据域的长度,其取值范围为: 46-1500
       
接下来的 2 个字节是固定不变的 16 进制数 0xFFFF ,它标识此帧为 Novell 以太类型数据帧。
六、 Ethernet 802.3 SAP 帧格式
       
如图 6 所示,是 Ethernet 802. 3 SAP 类型以太网帧格式。

6   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 网络环境中。
       
新增的 802.2 LLC 首部包括两个服务访问点:源服务访问点( SSAP )和目标服务访问点( DSAP )。它们用于标识以太网帧所携带的上层数据类型,如 16 进制数 0x06 代表 IP 协议数据, 16 进制数 0xE0 代表 Novell 类型协议数据, 16 进制数 0xF0 代表 IBM NetBIOS 类型协议数据等。
       
至于 1 个字节的 " 控制 " 字段,则基本不使用(一般被设为 0x03 ,指明采用无连接服务的 802.2 无编号数据格式)。
七、 Ethernet 802.3 SNAP 帧格式
       
如图 7 所示,是 Ethernet 802. 3 SNAP 类型以太网帧格式。

7   Ethernet 802. 3 SNAP 帧格式
        Ethernet 802. 3 SNAP 类型以太网帧格式和 Ethernet 802. 3 SAP 类型以太网帧格式的主要区别在于:
        ●2
个字节的 DSAP SSAP 字段内容被固定下来,其值为 16 进制数 0xAA
        ●1
个字节的 " 控制 " 字段内容被固定下来,其值为 16 进制数 0x03
        ●
增加了 SNAP 字段,由下面两项组成:
         
◆新增了 3 个字节的组织唯一标识符( Organizationally Unique Identifier OUI ID )字段,其值通常等于 MAC 地址的前 3 字节,即网络适配器厂商代码。
    
2 个字节的 " 类型 " 字段用来标识以太网帧所携带的上层数据类型。
 
 
 
浅谈以太网帧格式
用过 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)
. 各种不同的帧格式
 Ethernet II
就是 DIX 以太网联盟推出的,它由 6 个字节的目的 MAC 地址, 6 个字节的源 MAC 地址, 2 个字节的类型域(用于标示封装在这个 Frame 、里面数据的类型 ) 以上为 Frame Header, 接下来是 46--1500  字节的数据,和 4 字节的帧校验)
 
6
字节目的地址  6 字节目的地址  2 字节类型  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),ctrl( 控制位 )1 byte SAP 用于标示帧的上层协议
 
6
字节目的地址  6 字节目的地址  2 字节长度 / 类型  1 字节 DSAP 1 字节 SSAP 1 字节 CTRL 43-1497 字节数据  4 字节校验  
 Ethernet SNAP( 现在常用的帧格式 )
SNAP Frame
802.3/802.2 Frame 的最大区别是增加了一个 5 Bytes SNAP ID 其中前面 3 byte 通常与源 mac 地址的前三个 bytes 相同为厂商代码!有时也可设为 0, 2 bytes  Ethernet II 的类型域相同
 
6
字节目的地址  6 字节目的地址  2 字节长度  1 字节 DSAP 1 字节 SSAP 1 字节 CTRL 3 字节 ORG 2 字节类型  38-1492 字节数据  4 字节校验  
. 如何区分不同的帧格式
   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 格式的帧

你可能感兴趣的:(网络,职场,休闲,以太网,帧格式)