常見以太網幀結構詳解

 

 
 
常見以太網幀結構詳解

1  以太網相關背景
    以太網這個術語通常是指由DEC,Intel和Xerox公司在1982年聯合公佈的一個標準,它是當今TCP/IP採用的主要的局域網技術,它採用一種稱作CSMA/CD的媒體接入方法。幾年後,IEEE802委員會公佈了一個稍有不同的標準集,其中802.3針對整個CSMA/CD網絡,802.4針對令牌總線網絡,802.5針對令牌環網絡;此三種幀的通用部分由802.2標準來定義,也就是我們熟悉的802網絡共有的邏輯鏈路控制(LLC)。由於目前CSMA/CD的媒體接入方式佔主流,因此本文僅對以太網和IEEE 802.3的幀格式作詳細的分析。

    在TCP/IP世界中,以太網IP數據報文的封裝在RFC 894中定義,IEEE802.3網絡的IP數據報文封裝在RFC 1042中定義。標準規定:
1)主機必須能發送和接收採用RFC 894(以太網)封裝格式的分組;
2)主機應該能接收RFC 1042(IEEE 802.3)封裝格式的分組;
3)主機可以發送採用RFC 1042(IEEE 802.3)封裝格式的分組。

    如果主機能同時發送兩種類型的分組數據,那麼發送的分組必須是可以設置的,而且默認條件下必須是RFC 894(以太網)。
    最常使用的封裝格式是RFC 894定義的格式,俗稱Ethernet II或者Ethernet DIX。

    下面,我們就以Ethernet II稱呼RFC 894定義的以太幀,
              以IEEE802.3稱呼RFC 1042定義的以太幀


2 幀格式
Ethernet II和IEEE802.3的幀格式分別如下。

Ethernet II幀格式:
----------------------------------------------------------------------------------------------
| 前序     | 目的地址   | 源地址   | 類型     | 數據           | FCS   |
       ---------------------------------------------------------------------------------------------- | 8 byte    |   6 byte  | 6 byte   | 2 byte   | 46~1500 byte   | 4 byte|



IEEE802.3一般幀格式
       --------------------------------------------------------------------------------------------------------------
| 前序     | 幀起始定界符 | 目的地址   | 源地址 | 長度   | 數據          | FCS   |
        ------------------------------------------------------------------------------------------------------------
| 7 byte   |     1 byte   | 2/6 byte   |2/6 byte| 2 byte | 46~1500 byte | 4 byte |

Ethernet II和IEEE802.3的幀格式比較類似,主要的不同點在於前者定義的2字節的類型,而後者定義的是2字節的長度;所幸的是,後者定義的有效長度值與前者定義的有效類型值無一相同,這樣就容易區分兩種幀格式了。


一、前序字段
前序字段由8個(Ethernet II)或7個(IEEE802.3)字節的交替出現的1和0組成,設置該字段的目的是指示幀的開始並便於網絡中的所有接收器均能與到達幀同步,另外,該字段本身(在Ethernet II中)或與幀起始定界符一起(在IEEE802.3中)能保證各幀之間用於錯誤檢測和恢復操作的時間間隔不小於9.6毫秒。

二、幀起始定界符字段
該字段僅在IEEE802.3標準中有效,它可以被看作前序字段的延續。實際上,該字段的組成方式繼續使用前序字段中的格式,這個一個字節的字段的前6個比特位置由交替出現的1和0構成。該字段的最後兩個比特位置是11,這兩位中斷了同步模式並提醒接收後面跟隨的是幀數據。
當控制器將接收幀送入其緩衝器時,前序字段和幀起始定界符字段均被去除。類似地當控制器發送幀時,它將這兩個字段(如果傳輸的是IEEE802.3幀)或一個前序字段(如果傳輸的是真正的以太網幀)作爲前綴加入幀中。

三、目的地址字段
目的地址字段確定幀的接收者。兩個字節的源地址和目的地址可用於IEEE802.3網絡,而6個字節的源地址和目的地址字段既可用於Ethernet II網絡又可用於IEEE802.3網絡。用戶可以選擇兩字節或六字節的目的地址字段,但對IEEE802.3設備來說,局域網中的所有工作站必須使用同樣的地址結構。目前,幾乎所有的802.3網絡使用6字節尋址,幀結構中包含兩字節字段選項主要是用於使用16比特地址字段的早期的局域網。

四、源地址字段
源地址字段標識發送幀的工作站。和目前地址字段類似,源地址字段的長度可以是兩個或六個字節。只有IEEE802.3標準支持兩字節源地址並要求使用的目的地址。Ethernet II和IEEE802.3標準均支持六個字節的源地址字段。當使用六個字節的源地址字段時,前三個字節表示由IEEE分配給廠商的地址,將燒錄在每一塊網絡接口卡的ROM中。而製造商通常爲其每一網絡接口卡分配後字節。

五、類型字段
兩字節的類型字段僅用於Ethernet II幀。該字段用於標識數據字段中包含的高層協議,也就是說,該字段告訴接收設備如何解釋數據字段。在以太網中,多種協議可以在局域網中同時共存,例如:類型字段取值爲十六進制0800的幀將被識別爲IP協議幀,而類型字段取值爲十六進制8137的幀將被識別爲IPX和SPX傳輸協議幀。因此,在 Ethernet II的類型字段中設置相應的十六進制值提供了在局域網中支持多協議傳輸的機制。
在IEEE802.3標準中類型字段被替換爲長度字段,因而Ethernet II幀和IEEE802.3幀之間不能兼容。

六、長度字段
用於IEEE802.3的兩字節長度字段定義了數據字段包含的字節數。不論是在Ethernet II還是IEEE 802.3標準中,從前序到FCS字段的幀長度最小必須是64字節。最小幀長度保證有足夠的傳輸時間用於以太網網絡接口卡精確地檢測衝突,這一最小時間是根據網絡的最大電纜長度和幀沿電纜長度傳播所要求的時間確定的。基於最小幀長爲64字節和使用六字節地址字段的要求,意味着每個數據字段的最小長度爲46字節。唯一的例外是吉比特以太網。在1000Mbit/s的工作速率下,原來的802.3標準不可能提供足夠的幀持續時間使電纜長度達到100米。這是因爲在1000Mbit/s的數據率下,一個工作站在發現網段另一端出現的任何衝突之前已經處在幀傳輸過程中的可能性很高。爲解決這一問題,設計了將以太網最小幀長擴展爲512字節的負載擴展方法。
對除了吉比特以太網之外的所有以太網版本,如果傳輸數據少於46個字節,應將數據字段填充至46字節。不過,填充字符的個數不包括在長度字段值中。同時支持以太網和IEEE802.3幀格式的網絡接口卡通過這一字段的值區分這兩種幀。也就是說,因爲數據字段的最大長度爲1500字節,所以超過十六進制數 05DC的值說明它不是長度字段(IEEE802.3).而是類型字段(Ethernet II)。

七、數據字段
如前所述,數據字段的最小長度必須爲46字節以保證幀長至少爲64字節,這意味着傳輸一字節信息也必須使用46字節的數據字段:如果填入該該字段的信息少於46字節,該字段的其餘部分也必須進行填充。數據字段的最大長度爲1500字節。

八、校驗序列字段
既可用於Ethernet II又可用於IEE802.3標準的幀校驗序列字段提供了一種錯誤檢測機制,每一個發送器均計算一個包括了地址字段、類型/長度字段和數據字段的循環冗餘校驗(CRC)碼。發送器於是將計算出的CRC填入四字節的FCS字段。

雖然IEEE802.3標準必然要取代Ethernet II,但由於二者的相似以及Ethernet II作爲IEEE802.3的基礎這一事實,我們將這兩者均看作以太網。

3 以太網幀結構的變種格式
以太網幀結構的變種,僅涉及到IEEE802.3幀。下圖描述了IEEE802.3幀數據部分的結構,這個結構就是IEEE802.2定義的LLC(邏輯鏈路控制),LLC用來識別信息包中所承載的協議。LLC報頭包含DSAP(destination service access point,目的服務訪問點)、SSAP(source service access point,源服務訪問點)和控制字段。

當DSAP和SSAP取特定值:0xff和0xaa時,會分別產生兩個變種:Netware-以太網幀和以太網-SNAP幀;其他的取值均爲純802.3幀。

      -----------------------------------------------------------------------------------------------
| 前序 | 幀起始定界符 | 目的地址   | 源地址   | 長度 | 數據   | FCS |
       -----------------------------------------------------------------------------------------------
                                              |            \
                                              |                 \
                                              |                     \
                                              |                         \
                                              |                             \
                                              --------------------------------- \
                                              | DSAP | SSAP | 控制 | 信息 |
                                              ---------------------------------------

一、Netware-以太網幀
Netware-以太網幀對IEEE802.3的數據字段進行了專門分隔以便傳輸NetWare類型的數據。實際使用的幀類型是在系統設置時通過將 NetWare與特定類型的幀綁寫而定義的。下圖顯示了Netware-以太網幀格式。圖中的IPX=0xffff,也就是說,以太網幀中的DSAP= SSAP=0xff時,802.3幀就變成了Netware-以太網幀,用來承載NetWare類型的數據。由於不再有LLC字段,所以這種幀通常稱爲簡化802.3。

對那些使用或考慮使用NetWare的人,在涉及幀類型時應該小心:Novell使用術語以太網-802.3,因此如果將NetWare設置爲以太網-802.2幀,網絡實際上是符合以太網-802.3標準的,也就是說,有LLC結構的。
       
    --------------------------------------------------------------------------------------------
| 前序   | 幀起始定界符 | 目的地址   | 源地址   | 長度   | 數據   | FCS |
    --------------------------------------------------------------------------------------------
                                                |        \
                                                |           \
                                                |              \
                                                |                 \
                                                |                    \
                                                -----------------------
                                                | IPX頭 |   信息   |
                                                ------------------------

二、以太網-SNAP幀
以太網-SNAP幀與Netware-以太網幀不同,可以用於傳輸多種協議。因爲在以太網-SNAP幀中包含以太網類型字段,故AppleTalk Phase II、NetWare及TCP/IP協議均能傳輸。因此,SNAP可以被看作一種擴展,它允許廠商創建自己的以太網傳輸協議。以太網-SNAP標準由 IEEE802.1委員會制定以保證IEEE802.3局域網和以太網之間的互操作性。

下圖顯示了以太網-SNAP幀格式。儘管這種幀格式是基於IEEE802.3幀格式的,但它並不使用DSAP和SSAP信箱機制和控制字段。相反,在這些字段中使用特定的值表示該幀是SNAP幀。

-------------------------------------------------------------------------------------
| 前序   |定界符 | 目的地址   | 源地址   | 長度   | 數據   | FCS |
-------------------------------------------------------------------------------------
                                         |         \
                                         |            \
                                         |               \
                                         |                 \
                                         |                   \
                                         ------------------------------------------------
                                         |DSAP|SSAP|控制|機構代碼|類型|信息|
                                         ------------------------------------------------

十六進制值AA被放置在DSAP和SSAP字段,而十六進制值03被放置在控制字段,這指明傳輸的是SNAP幀。將十六進制值03放置在控制字段表明使用無編碼格式,這是SNAP幀支持的唯一一種格式。
    機構代碼字段指明在後續的以太網類型字段中放置的是由哪一個機構分配的值。在機構代碼字段中的十六進制值00-00-00指明施樂公司分配了以太網類型字段的值。通過使用以太網-SNAP幀,可以按與原始的以太網幀類似的方式獲得支持多協議的能力,原始以太網設置類型字段的目的與此相同。

4 幀判定
接收工作站可以通過判斷以太幀的字段正確解釋幀中承載的數據。爲此,應首先檢查跟在源地址之後的兩個字節的值。如果該值大於1500,則必定是Ethernet II幀;否則該幀或者是純IEEE802.3幀,或者是這種幀的變種。此時,必須檢查更多的字節。
如果下面的兩個字節取值十六進制FF:FF,則該幀是NetWare-以太網,這是因爲在IPX頭結構中前兩個字節的校驗和字段取值十六進制FF:FF;如果這兩個字節取值爲十六進制AA:AA,則表示是以太網-SANP幀;此外,這兩個字節的任何其它取值均指示該幀純802.3幀。
 
5 IPX的四種以太幀封裝格式
介紹了上面的四種以太幀的格式,現在以IPX報文爲例,介紹如何利用四種以太幀的格式進行封裝。
一、Ethernet II封裝格式
-------------------------------------------------------------------------------------
| 前序   | 目的地址   | 源地址   | 0x8137   | IPX 數據報 | FCS   |
-------------------------------------------------------------------------------------
二、Netware-以太網幀
--------------------------------------------------------------------------------------------------------
| 前序   | 幀起始定界符 | 目的地址   | 源地址   | 長度   | IPX 數據報   | FCS |
---------------------------------------------------------------------------------------------------------
三、以太網-SNAP幀
---------------------------------------------------------------------------------------------------------------------------
|前序|定界符|目的地址|源地|長度|0xAA|0xAA |0x03|0x000000 |0x8137| IPX 報文 | FCS |
---------------------------------------------------------------------------------------------------------------------------
四、純802.3幀
---------------------------------------------------------------------------------------------------------------------------
|前序|定界符|目的地址|源地|長度| 0xe0 | 0xe0 | 0x03 | IPX 報文 | FCS |
---------------------------------------------------------------------------------------------------------------------------
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章