以太网帧格式EthernetⅡ和ETHERNET8023IEEE8022SAP和SNAP的区别.docx
《以太网帧格式EthernetⅡ和ETHERNET8023IEEE8022SAP和SNAP的区别.docx》由会员分享,可在线阅读,更多相关《以太网帧格式EthernetⅡ和ETHERNET8023IEEE8022SAP和SNAP的区别.docx(8页珍藏版)》请在冰豆网上搜索。
以太网帧格式EthernetⅡ和ETHERNET8023IEEE8022SAP和SNAP的区别
EthernetⅡ/ETHERNET802.3IEEE802.2.SAP/SNAP的区别
1.EthernetV1:
这是最原始的一种格式,是由XeroxPARC提出的3MbpsCSMA/CD以太网标准的封装格式,后来在1980年由DEC,Intel和Xerox标准化形成EthernetV1标准;
2.EthernetV2(ARPA):
这是最常见的一种以太网帧格式,也是今天以太网的事实标准,由DEC,Intel和Xerox在1982年公布其标准,主要更改了EthernetV1的电气特性和物理接口,在帧格式上并无变化;EthernetV2出现后迅速取代EthernetV1成为以太网事实标准;EthernetV2帧头结构为6bytes的源地址+6bytes的目标地址+2Bytes的协议类型字段+数据。
常见协议类型如下:
0800IP
0806ARP
8137NovellIPX
809bAppleTalk
如果协议类型字段取值为0000-05dc(十进制的0-1500),则该帧就不是EthernetV2(ARPA)类型了,而是下面讲到的三种802.3帧类型之一;Ethernet可以支持TCP/IP,NovellIPX/SPX,AppleTalkPhaseI等协议;RFC894定义了IP报文在EthernetV2上的封装格式;
Ethernet_II中所包含的字段:
在每种格式的以太网帧的开始处都有64比特(8字节)的前导字符,如图所示。
其中,前7个字节称为前同步码(Preamble),内容是16进制数0xAA,最后1字节为帧起始标志符0xAB,它标识着以太网帧的开始。
前导字符的作用是使接收节点进行同步并做好接收数据帧的准备。
——PR:
同步位,用于收发双方的时钟同步,同时也指明了传输的速率(10M和100M的时钟频率不一样,所以100M网卡可以兼容10M网卡),是56位的二进制数101010101010.....
——SD:
分隔位,表示下面跟着的是真正的数据,而不是同步时钟,为8位的10101011,跟同步位不同的是最后2位是11而不是10.
——DA:
目的地址,以太网的地址为48位(6个字节)二进制地址,表明该帧传输给哪个网卡.如果为FFFFFFFFFFFF,则是广播地址,广播地址的数据可以被任何网卡接收到.
——SA:
源地址,48位,表明该帧的数据是哪个网卡发的,即发送端的网卡地址,同样是6个字节.
----TYPE:
类型字段,表明该帧的数据是什么类型的数据,不同的协议的类型字段不同。
如:
0800H表示数据为IP包,0806H表示数据为ARP包,814CH是SNMP包,8137H为IPX/SPX包,(小于0600H的值是用于IEEE802的,表示数据包的长度。
)
----DATA:
数据段,该段数据不能超过1500字节。
因为以太网规定整个传输包的最大长度不能超过1514字节。
(14字节为DA,SA,TYPE)
----PAD:
填充位。
由于以太网帧传输的数据包最小不能小于60字节,除去(DA,SA,TYPE14字节),还必须传输46字节的数据,当数据段的数据不足46字节时,后面补000000.....(当然也可以补其它值)
----FCS:
32位数据校验位.为32位的CRC校验,该校验由网卡自动计算,自动生成,自动校验,自动在数据段后面填入.对于数据的校验算法,我们无需了解.
----事实上,PR,SD,PAD,FCS这几个数据段我们不用理它,它是由网卡自动产生的,我们要理的是DA,SA,TYPE,DATA四个段的内容.
----所有数据位的传输由低位开始(但传输的位流是用曼彻斯特编码的)
----以太网的冲突退避算法就不介绍了,它是由硬件自动执行的.
DA+SA+TYPE+DATA+PAD最小为60字节,最大为1514字节.
----以太网卡可以接收三种地址的数据,一个是广播地位,一个是多播地址(我们用不上),一个是它自已的地址.但网卡也可以设置为接收任何数据包(用于网络分析和监控).
----任何两个网卡的物理地址都是不一样的,是世界上唯一的,网卡地址由专门机构分配.不同厂家使用不同地址段,同一厂家的任何两个网卡的地址也是唯一的.根据网卡的地址段(网卡地址的前三个字节),可以知道网卡的生产厂家.有些网卡的地址也可以由用户去设定,但一般不需要.
Ethernet_II的主要特点是通过类型域标识了封装在帧里的数据包所采用的协议,类型域是一个有效的指针,通过它,数据链路层就可以承载多个上层(网络层)协议。
但是,Ethernet_II的缺点是没有标识帧长度的字段。
3.RAW802.3:
(NOVELLEthernet802.3)
这是1983年Novell发布其划时代的Netware/86网络套件时采用的私有以太网帧格式,该格式以当时尚未正式发布的802.3标准为基础;但是当两年以后IEEE正式发布802.3标准时情况发生了变化—IEEE在802.3帧头中又加入了802.2LLC(LogicalLinkControl)头,这使得Novell的RAW802.3格式跟正式的IEEE802.3标准互不兼容;可以看到在Novell的RAW802.3帧结构中并没有标志协议类型的字段,而只有Length字段(2bytes,取值为0000-05dc,即十进制的0-1500),因为RAW802.3帧只支持IPX/SPX一种协议;
原始的802.3帧是早期的NovellNetWare网络的默认封装。
它使用802.3的帧类型,但没有LLC域。
同Ethernet_II的区别:
将类型域改为长度域,其取值范围为:
46-1500。
解决了原先存在的问题。
但是由于缺省了类型域,因此不能区分不同的上层协议。
接下来的2个字节是固定不变的16进制数0xFFFF,它标识此帧为Novell以太类型数据帧。
4.IEEE802.3/802.2LLC:
这是IEEE正式的802.3标准,它由EthernetV2发展而来。
它将EthernetV2帧头的协议类型字段替换为帧长度字段(取值为0000-05dc;十进制的1500);并加入802.2LLC头用以标志上层协议,LLC头中包含DSAP,SSAP以及Crontrol字段;
为了区别802.3数据帧中所封装的数据类型,IEEE引入了802.2SAP和SNAP的标准。
它们工作在数据链路层的LLC(逻辑链路控制)子层。
通过在802.3帧的数据字段中划分出被称为服务访问点(SAP)的新区域来解决识别上层协议的问题,这就是802.2SAP。
LLC标准包括两个服务访问点,源服务访问点(SSAP)和目标服务访问点(DSAP)。
每个SAP只有1字节长,而其中仅保留了6比特用于标识上层协议,所能标识的协议数有限。
因此,又开发出另外一种解决方案,在802.2SAP的基础上又新添加了一个2字节长的类型域(同时将SAP的值置为AA),使其可以标识更多的上层协议类型,这就是802.2SNAP。
802.2SAP
常见SAP值:
0:
NullLSAP[IEEE]
4:
SNAPathControl[IEEE]
6:
DODIP[79,JBP]
AA:
SNAP[IEEE]
FE:
ISODIS8473[52,JXJ]
FF:
GlobalDSAP[IEEE]
在Ethernet802.3SAP帧中,将原Ethernet802.3raw帧中2个字节的0xFFFF变为各1个字节的DSAP和SSAP,同时增加了1个字节的"控制"字段,构成了802.2逻辑链路控制(LLC)的首部。
LLC提供了无连接(LLC类型1)和面向连接(LLC类型2)的网络服务。
LLC1是应用于以太网中,而LLC2应用在IBMSNA网络环境中。
5.IEEE802.3/802.2SNAP:
这是IEEE为保证在802.2LLC上支持更多的上层协议同时更好的支持IP协议而发布的标准,与802.3/802.2LLC一样802.3/802.2SNAP也带有LLC头,但是扩展了LLC属性,新添加了一个2Bytes的协议类型域(同时将SAP的值置为AA),从而使其可以标识更多的上层协议类型;另外添加了一个3Bytes的OUI字段用于代表不同的组织,RFC1042定义了IP报文在802.2网络中的封装方法和ARP协议在802.2SANP中的实现;
今天的实际环境中大多数TCP/IP设备都使用EthernetV2格式的帧。
这是因为第一种大规模使用的TCP/IP系统(4.2/3BSDUNIX)的出现时间介于RFC894和RFC1042之间,它为了避免不能和别的主机互操作的风险而采用了RFC894的实现;也由于大家都抱着这种想法,所以802.3标准并没有如预期那样得到普及;
CISCO设备的EthernetInterface默认封装格式是ARPA(EthernetV2)
不同厂商对这几种帧格式通常有不同的叫法,比如:
FrameType----------------------------------Novell/----------------------------Cisco
EthernetVersion2:
-----------------------Ethernet_II/--------------------arpa
802.3------------------------------------------Raw:
Ethernet_802.3/novell_ether
IEEE802.3/802.2:
-------------------------Ethernet_802.2/----------------sap
IEEE802.3/802.2SNAP:
------------------ETHERNET_SNAP/--------------snap
#######################################################
一、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(LogicLineControl)子层
●介质访问控制MAC(MediaAccessControl)子层
图2 LLC和MAC子层
如图2所示。
其中,LLC子层负责向其上层提供服务;MAC子层的主要功能包括数据帧的封装/卸装,帧的寻址和识别,帧的接收与发送,链路的管理,帧的差错控制等。
MAC子层的存在屏蔽了不同物理链路种类的差异性。
在MAC子层的诸多功能中,非常重要的一项功能是仲裁介质的使用权,即规定站点何时可以使用通信介质。
实际上,局域网技术中是采用具有冲突检测的载波侦听多路访问(CarrierSenseMultipleAccess/CollisionDetection,CSMA/CD)这种介质访问方法的。
在这种介质访问方法中规定:
在发送数据之前,一个节点必须首先侦听网线上的载波,如果在9.6微秒的时间之内没有检测到载波(说明通信介质空闲),节点才可以发送一帧数据。
如果两个节点同时检测到介质空闲并同时发送出一帧数据,则会导致数据帧的冲突,双方的数据帧均被破坏。
一方面,检测到冲突的节点会发送"冲突增强"信号(32比特的"1")通知介质上的每个节点发生了冲突。
另一方面,发生冲突的节点在再次发送自己的数据帧之前会各自等待一段随机的时间。
随着以太网上节点数量的增加,冲突的数量也随之增加,而整个网段的有效带宽将随之减少。
三、以太网帧格式
目前,有四种不同格式的以太网帧在使用,它们分别是:
●EthernetII即DIX2.0:
Xerox与DEC、Intel在1982年制定的以太网标准帧格式。
Cisco名称为:
ARPA。
●Ethernet802.3raw:
Novell在1983年公布的专用以太网标准帧格式。
Cisco名称为:
Novell-Ether。
●Ethernet802.3SAP:
IEEE在1985年公布的Ethernet802.3的SAP版本以太网帧格式。
Cisco名称为:
SAP。
●Ethernet802.3SNAP:
IEEE在1985年公布的Ethernet802.3的SNAP版本以太网帧格式。
Cisco名称为:
SNAP。
在每种格式的以太网帧的开始处都有64比特(8字节)的前导字符,如图3所示。
其中,前7个字节称为前同步码(Preamble),内容是16进制数0xAA,最后1字节为帧起始标志符0xAB,它标识着以太网帧的开始。
前导字符的作用是使接收节点进行同步并做好接收数据帧的准备。
图3 以太网帧前导字符
除此之外,不同格式的以太网帧的各字段定义都不相同,彼此也不兼容。
四、EthernetII帧格式
如图4所示,是EthernetII类型以太网帧格式。
图4 EthernetII帧格式
EthernetII类型以太网帧的最小长度为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.CheckSequence,FCS),采用32位CRC循环冗余校验对从"目标MAC地址"字段到"数据"字段的数据进行校验。
五、Ethernet802.3raw帧格式
如图5所示,是Ethernet802.3raw类型以太网帧格式。
图5 Ethernet802.3raw帧格式
在Ethernet802.3raw类型以太网帧中,原来EthernetII类型以太网帧中的类型字段被"总长度"字段所取代,它指明其后数据域的长度,其取值范围为:
46-1500。
接下来的2个字节是固定不变的16进制数0xFFFF,它标识此帧为Novell以太类型数据帧。
六、Ethernet802.3SAP帧格式
如图6所示,是Ethernet802.3SAP类型以太网帧格式。
图6 Ethernet802.3SAP帧格式
从图中可以看出,在Ethernet802.3SAP帧中,将原Ethernet802.3raw帧中2个字节的0xFFFF变为各1个字节的DSAP和SSAP,同时增加了1个字节的"控制"字段,构成了802.2逻辑链路控制(LLC)的首部。
LLC提供了无连接(LLC类型1)和面向连接(LLC类型2)的网络服务。
LLC1是应用于以太网中,而LLC2应用在IBMSNA网络环境中。
新增的802.2LLC首部包括两个服务访问点:
源服务访问点(SSAP)和目标服务访问点(DSAP)。
它们用于标识以太网帧所携带的上层数据类型,如16进制数0x06代表IP协议数据,16进制数0xE0代表Novell类型协议数据,16进制数0xF0代表IBMNetBIOS类型协议数据等。
至于1个字节的"控制"字段,则基本不使用(一般被设为0x03,指明采用无连接服务的802.2无编号数据格式)。
七、Ethernet802.3SNAP帧格式
如图7所示,是Ethernet802.3SNAP类型以太网帧格式。
图7 Ethernet802.3SNAP帧格式
Ethernet802.3SNAP类型以太网帧格式和Ethernet802.3SAP类型以太网帧格式的主要区别在于:
●2个字节的DSAP和SSAP字段内容被固定下来,其值为16进制数0xAA。
●1个字节的"控制"字段内容被固定下来,其值为16进制数0x03。
●增加了SNAP字段,由下面两项组成:
◆新增了3个字节的组织唯一标识符(OrganizationallyUniqueIdentifier,OUIID)字段,其值通常等于MAC地址的前3字节,即网络适配器厂商代码。
◆2个字节的"类型"字段用来标识以太网帧所携带的上层数据类型。
长度字段
用于IEEE802.3的两字节长度字段定义了数据字段包含的字节数。
不论是在EthernetII还是IEEE 802.3标准中,从前序到FCS字段的帧长度最小必须是64字节。
最小帧长度保证有足够的传输时间用于以太网网络接口卡精确地检测冲突,这一最小时间是根据网络的最大电缆长度和帧沿电缆长度传播所要求的时间确定的。
基于最小帧长为64字节和使用六字节地址字段的要求,意味着每个数据字段的最小长度为46字节。
唯一的例外是吉比特以太网。
在1000Mbit/s的工作速率下,原来的802.3标准不可能提供足够的帧持续时间使电缆长度达到100米。
这是因为在1000Mbit/s的数据率下,一个工作站在发现网段另一端出现的任何冲突之前已经处在帧传输过程中的可能性很高。
为解决这一问题,设计了将以太网最小帧长扩展为512字节的负载扩展方法。
对除了吉比特以太网之外的所有以太网版本,如果传输数据少于46个字节,应将数据字段填充至46字节。
不过,填充字符的个数不包括在长度字段值中。
同时支持以太网和IEEE802.3帧格式的网络接口卡通过这一字段的值区分这两种帧。
也就是说,因为数据字段的最大长度为1500字节,所以超过十六进制数05DC的值说明它不是长度字段(IEEE802.3).而是类型字段(EthernetII)。