四种格式的以太网帧结构
用过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字节的帧校验)
它的帧头与Ethernet有所不同其中EthernetII帧头中的类型域变成了长度域,后面接着的两个字节为0xFFFF用于标示这个帧是Novell Ether类型的Frame,由于前面的0xFFFF站掉了两个字节所以数据域缩小为44-1498个字节,帧校验不变。
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,一个控制域 1 byte! SAP用于表示帧的上层协议。
Ethernet SNAP Frame
与802.3/802.2 Frame的最大区别是增加了一个5 Bytes的SNAP ID,其中前面3个byte通常与源mac地址的前三个bytes相同,为厂商代码!有时也可设为0。后2 bytes 与Ethernet II的类型域相同。
附上三种帧抓包图片:
Ethernet II:
IEEE 802.3 SAP:
IEEE 802.3 SNAP:
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,80C4 SNA 04,05,08,0C
DRP 6003 X.25 7E
LAT 6004 ISO 20,34,EC,FE,14,54
LAVC 6007 SNAP AA
ARP(AppleTalk) 80F3