淺談以太網幀格式

淺談以太網幀格式

                                      

 

一、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)

二.各種不同的幀格式
下面介紹一下各個幀格式 
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

2.1 Ethernet地址
  
  爲了標識以太網上的每臺主機,需要給每臺主機上的網絡適配器(網絡接口卡)分配一個唯一的通信地址,即Ethernet地址或稱爲網卡的物理地址、MAC地址。
  
  IEEE負責爲網絡適配器製造廠商分配Ethernet地址塊,各廠商爲自己生產的每塊網絡適配器分配一個唯一的Ethernet地址。因爲在每塊網絡適配器出廠時,其Ethernet地址就已被燒錄到網絡適配器中。所以,有時我們也將此地址稱爲燒錄地址(Burned-In-Address,BIA)。
  
  Ethernet地址長度爲48比特,共6個字節,如圖1所示。其中,前3字節爲IEEE分配給廠商的廠商代碼,後3字節爲網絡適配器編號。
  

 


  

圖1  Ethernet地址


  
  2.2 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")通知介質上的每個節點發生了衝突。另一方面,發生衝突的節點在再次發送自己的數據幀之前會各自等待一段隨機的時間。
  
  隨着以太網上節點數量的增加,衝突的數量也隨之增加,而整個網段的有效帶寬將隨之減少。
  
  在後面的章節中,我們將學習如何利用網橋、交換機等設備將一個網段劃分成多個獨立的衝突域,進而增加每個網段的可用帶寬。
  
  3 以太網幀格式
  
  目前,有四種不同格式的以太網幀在使用,它們分別是:
  
  ●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  以太網幀前導字符


  
  除此之外,不同格式的以太網幀的各字段定義都不相同,彼此也不兼容。
  
  3.1 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地址。
  
  接下來的2個字節標識出以太網幀所攜帶的上層數據類型,如16進制數0x0800代表IP協議數據,16進制數0x809B代表AppleTalk協議數據,16進制數0x8138代表Novell類型協議數據等。
  
  在不定長的數據字段後是4個字節的幀校驗序列(Frame Check Sequence,FCS),採用32位CRC循環冗餘校驗對從"目標MAC地址"字段到"數據"字段的數據進行校驗。
  
  3.2 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以太類型數據幀。
  
  3.3 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無編號數據格式)。
  
  3.4 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字節,

 

http://zhangbaoli.bokee.com/5521187.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章