以太网帧结构_Ethernet

 

要讲帧结构,就要说一说OSI七层参考模型。

一个是访问服务点,每一层都对上层提供访问服务点(SAP),或者我们可以说,每一层的头里面都有一个字段来区分上层协议。

比如说传输层对应上层的访问服务点就是端口号,比如说23端口是telnet,80端口是http。IP层的SAP是什么?

其实就是protocol字段,17表示上层是UDP,6是TCP,89是OSPF,88是EGIRP,1是ICMP等等。

以太网对应上层的SAP是什么呢?就是这个type或length。比如 0800表示上层是IP,0806表示上层是ARP。我

第二个要了解的就是对等层通讯,对等层通讯比较好理解,发送端某一层的封装,接收端要同一层才能解封装。

我们再来看看帧结构,以太网发送方式是一个帧一个帧发送的,帧与帧之间需要间隙。这个叫帧间隙IFG—InterFrame Gap

IFG长度是96bit。当然还可能有Idle时间。

以太网的帧是从目的MAC地址到FCS,事实上以太网帧的前面还有preamble,我们把它叫做先导字段。作用是用来同步的,当接受端收到 preamble,就知道以太网帧就要来了。preamble有8个字节前面7个字节是10101010也就是16进制的AA,最后一个字节是 10101011,也就是AB,当接受端接受到连续的两个高电平,就知道接着来的就是D_mac。所以最后一个字节AB我们也叫他SFD(帧开始标示符)。

所以在以太网传输过程中,即使没有idle,也就是连续传输,也有20个字节的间隔。对于大量64字节数据来说,效率也就显得不
 

1s = 1,000ms=1,000,000us

以太网帧最小为64byte(512bit)

10M以太网的slot time = 512×0.1 = 51.2us

100M以太网的slot time = 512×0.01 = 5.12us

以太网的理论帧速率:

Packet/second=1second/(IFG+PreambleTime+FrameTime)

10M以太网:IFG time=96x0.1=9.6us

100M以太网:IFG time=96x0.01=0.96us

以太网发送方式是一个帧一个帧发送的,帧与帧之间需要间隙。这个叫帧间隙IFG—InterFrame Gap

10M以太网: Preamble time= 64bit×0.1=6.4us

100M以太网: Preamble time= 64bit×0.01=0.64us

Preamble 先导字段。作用是用来同步的,当接受端收到preamble,就知道以太网帧就要来了

10M以太网:FrameTime=512bit×0.1=51.2us

100M以太网:FrameTime=512bit×0.01=5.12us

因此,10M以太网64byte包最大转发速度=1,000,000 sec÷(9.6+6.4+51.2)= 0.014880952Mpps

100M以太网64byte包最大转发速度=1,000,000 sec÷(0.96+0.64+5.12)= 0.14880952Mpps

 

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

 

万兆以太网技术发展背景:

目前最常见的以太网是10M以太网以及100M以太网(快速以太网)。100M快速以太网作为城域骨干网带宽显然不够。即使使用多个快速以太网链路绑定使用,对多媒体业务仍然是心有余而力不足。随着千兆以太网的标准化以及在生产实践中的广泛应用,以太网技术逐渐延伸到城域网的汇聚层。千兆以太网通常用作将小区用户汇聚到城域POP点,或者将汇聚层设备连接到骨干层。但是在当前10M以太网到用户的环境下,千兆以太网链路作为汇聚也是勉强,作为骨干则是力所不能及。虽然以太网多链路聚合技术已完成标准化且多厂商互通指日可待,可以将多个千兆链路捆绑使用。但是考虑光纤资源以及波长资源,链路捆绑一般只用在POP点内或者短距离应用环境。

传输距离也曾经是以太网无法作为城域数据网骨干层汇聚层链路技术的一大障碍。无论是10M、100M还是千兆以太网,由于信噪比、碰撞检测、可用带宽等原因五类线传输距离都是100m。使用光纤传输时距离限制由以太网使用的主从同步机制所制约。802.3规定1000Base-SX接口使用纤芯62.5μm的多模光纤最长传输距离275m,使用纤芯50μm的多模光纤最长传输距离550m;1000Base-LX接口使用纤芯62.5μm的多模光纤最长传输距离550m,使用纤芯50μm的多模光纤最长传输距离550m,使用纤芯为10μm的单模光纤最长传输距离5000m。最长传输距离5km千兆以太网链路在城域范围内远远不够。

万兆以太网的技术简介:

万兆以太网技术的研究始于1999年底,当时成立了IEEE802.3ae工作组,并于2002年6月正式发布802.3ae 10GE标准, 802.3ae万兆以太网技术标准的体系结构:

 物理层

在物理层,802.3ae大体分为两种类型,一种为与传统以太网连接速率为10Gbps的"LAN PHY",另一种为连接SDH/SONET速率为9.58464Gbps的"WAN PHY"。每种PHY分别可使用10GBase-S(850nm短波)、10GBase-L(1310nm长波)、10GBase-E(1550nm长波)三种规格,最大传输距离分别为300m、10km、40km,其中LAN PHY还包括一种可以使用DWDM波分复用技术的"10GBASE-LX4"规格。WAN PHY与SONET OC-192帧结构的融合,可与OC-192电路、SONET/SDH设备一起运行,保护传统基础投资,使运营商能够在不同地区通过城域网提供端到端以太网。

传输介质层

802.3ae目前支持9um单模、50um多模和62.5um多模三种光纤,而对电接口的支持规范10GBASE-CX4目前正在讨论之中,尚未形成标准。

数据链路层

802.3ae继承了802.3以太网的帧格式和最大/最小帧长度,支持多层星型连接、点到点连接及其组合,充分兼容已有应用,不影响上层应用,进而降低了升级风险。

与传统的以太网不同,802.3ae仅仅支持全双工方式,而不支持单工和半双工方式,不采用CSMA/CD机制;802.3ae不支持自协商,可简化故障定位,并提供广域网物理层接口。

万兆以太网的应用前景:

万兆以太网在设计之初就考虑城域骨干网需求。首先带宽10G足够满足现阶段以及未来一段时间内城域骨干网带宽需求(现阶段多数城域骨干网骨干带宽不超过2.5G)。其次万兆以太网最长传输距离可达40公里,且可以配合10G传输通道使用,足够满足大多数城市城域网覆盖。 采用万兆以太网作为城域网骨干可以省略骨干网设备的POS或者ATM链路。首先可以节约成本:以太网端口价格远远低于相应的POS端口或者ATM端口。其次可以使端到端采用以太网帧成为可能:一方面可以端到端使用链路层的VLAN信息以及优先级信息,另一方面可以省略在数据设备上的多次链路层封装解封装以及可能存在的数据包分片,简化网络设备。在城域网骨干层采用万兆以太网链路可以提高网络性价比并简化网络。

我们可以清楚地看到,10G以太网可以应用在校园网、城域网、企业网等。但是由于当前宽带业务并未广泛开展,人们对单端口10G骨干网的带宽没有迫切需求,所以10G以太网技术相对其他替代的链路层技术(例如2.5G POS、捆绑的千兆以太网)并没有明显优势。思科和JUNIPER公司已推出10G以太网接口(依据802.3ae草案实现),但在国内几乎没有应用。目前城域网的问题不是缺少带宽,而是消耗大量带宽的Killer Application,是如何将城域网建设成为可管理、可运营并且可盈利的网络。所以10G以太网技术的应用将取决于宽带业务的开展。只有广泛开展宽带业务,例如视频组播、高清晰度电视和实时游戏等,才能促使10G以太网技术广泛应用,推动网络健康有序发展。

 

   分析:①初始态,发送方没有帧发出,发送窗口前后沿相重合。接收方0号窗口打开,等待接收0号帧;②发送方打开0号窗口,表示已发出0帧但尚确认返回信息。此时接收窗口状态不变;③发送方打开0、1号窗口,表示0、1号帧均在等待确认之列。至此,发送方打开的窗口数已达规定限度,在未收到新的确认返回帧之前,发送方将暂停发送新的数据帧。接收窗口此时状态仍未变;④接收方已收到0号帧,0号窗口关闭,1号窗口打开,表示准备接收1号帧。此时发送窗口状态不变;⑤发送方收到接收方发来的0号帧确认返回信息,关闭0号窗口,表示从重发表中删除0号帧。此时接收窗口状态仍不变;⑥发送方继续发送2号帧,2号窗口打开,表示2号帧也纳入待确认之列。至此,发送方打开的窗口又已达规定限度,在未收到新的确认返回帧之前,发送方将暂停发送新的数据帧,此时接收窗口状态仍不变;⑦接收方已收到1号帧,1号窗口关闭,2号窗口打开,表示准备接收2号帧。此时发送窗口状态不变;⑧发送方收到接收方发来的1号帧收毕的确认信息,关闭1号窗口,表示从重发表中删除1号帧。此时接收窗口状态仍不变。

以太网帧结构_Ethernet_02

以太网是无连接的,不可靠的服务,采用尽力传输的机制。以太网CSMA/CD我就不多讲了,我相信大家都了解这个原理。

以太网是不可靠的,这意味着它并不知道对方有没有收到自己发出的数据包,但如果他发出的数据包发生错误,他会进行重传。以太网的错误主要是发生碰撞,碰撞是指两台机器同时监听到网络是空闲的,同时发送数据,就会发生碰撞,碰撞对于以太网来说是正常的。

我们来看一下,假设A检测到网络是空闲的,开始发数据包,尽力传输,当数据包还没有到达B时,B也监测到网络是空闲的,开始发数据包,这时就会发生碰撞,B首先发现发生碰撞,开始发送碰撞信号,所谓碰撞信号,就是连续的01010101或者10101010,十六进制就是55或AA。这个碰撞信号会返回到A,如果碰撞信号到达A时,A还没有发完这个数据包,A就知道这个数据包发生了错误,就会重传这个数据包。但如果碰撞信号会返回到A时,数据包已经发完,则A不会重传这个数据包。

我们先看一下,以太网为什么要设计这样的重传机制。首先,以太网不想采用连接机制,因为会降低效率,但他又想有一定的重传机制,因为以太网的重传是微秒级,而传输层的重传,如TCP的重传达到毫秒级,应用层的重传更达到秒级,我们可以看到越底层的重传,速度越快,所以对于以太网错误,以太网必须有重传机制。

要保证以太网的重传,必须保证A收到碰撞信号的时候,数据包没有传完,要实现这一要求,A和B之间的距离很关键,也就是说信号在A和B之间传输的来回时间必须控制在一定范围之内。IEEE定义了这个标准,一个碰撞域内,最远的两台机器之间的round-trip time 要小于512bit time.(来回时间小于512位时,所谓位时就是传输一个比特需要的时间)。这也是我们常说的一个碰撞域的直径。

512个位时,也就是64字节的传输时间,如果以太网数据包大于或等于64个字节,就能保证碰撞信号到达A的时候,数据包还没有传完。

这就是为什么以太网要最小64个字节,同样,在正常的情况下,碰撞信号应该出现在64个字节之内,这是正常的以太网碰撞,如果碰撞信号出现在64个字节之后,叫 late collision。这是不正常的。

 

 

 

 

 

以太网帧结构_Ethernet_03