關於以太網幀格式的那點事兒

以太網幀格式

目前,有四種不同格式的以太網幀在使用,它們分別是:

  • lEthernet II即DIX2.0:Xerox與DEC、Intel在1982年制定的以太網標準幀格式。Cisco名稱爲:ARPA。
  • lEthernet 802.3 raw:Novell在1983年公佈的專用以太網標準幀格式。Cisco名稱爲:Novell-Ether。
  • lEthernet 802.3 SAP:IEEE在1985年公佈的Ethernet 802.3的SAP版本以太網幀格式。Cisco名稱爲:SAP。
  • lEthernet 802.3 SNAP:IEEE在1985年公佈的Ethernet 802.3的SNAP版本以太網幀格式。Cisco名稱爲:SNAP。


在每種格式的以太網幀的開始處都有64比特(8字節)的前導字符,如圖3所示。其中,前7個字節稱爲前同步碼(Preamble),內容是16進制數0xAA,最後1字節爲幀起始標誌符0xAB,它標識着以太網幀的開始。前導字符的作用是使接收節點進行同步並做好接收數據幀的準備。



  


除此之外,不同格式的以太網幀的各字段定義都不相同,彼此也不兼容。


Ethernet II幀格式


如圖所示,是Ethernet II類型以太網幀格式。
在每種格式的以太網幀的開始處都有64比特(8字節)的前導字符,如圖3所示。其中,前7個字節稱爲前同步碼(Preamble),內容是16進制數0xAA,最後1字節爲幀起始標誌符0xAB,它標識着以太網幀的開始。前導字符的作用是使接收節點進行同步並做好接收數據幀的準備。
6字節 6字節 2字節 46-1500字節 4字節
目標地址 源地址 類型 數據 FCS

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地址"字段到"數據"字段的數據進行校驗。

  

Ethernet 802.3 raw幀格式

如圖5所示,是Ethernet 802.3 raw類型以太網幀格式。


6字節 6字節 2字節 2字節 44-1498字節 4字節
目標MAC地址 源MAC地址 總長度 0xFFFF 數據 FCS

在Ethernet 802.3 raw類型以太網幀中,原來Ethernet II類型以太網幀中的類型字段被"總長度"

字段所取代,它指明其後數據域的長度,其取值範圍爲:46-1500。


接下來的2個字節是固定不變的16進制數0xFFFF,它標識此幀爲Novell以太類型數據幀。

 

Ethernet 802.3 SAP幀格式

如圖6所示,是Ethernet 802. 3 SAP類型以太網幀格式。

  

6字節 6字節 2字節 1字節 1字節 1字節 43-1497字節 4字節
目標MAC地址 源MAC地址 總長度 DSAP SSAP 控制 數據 FCS

圖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無編號數據格式)。


Ethernet 802.3 SNAP幀格式


如圖7所示,是Ethernet 802. 3 SNAP類型以太網幀格式。


6字節 6字節 2字節 1字節 1字節 1字節 3字節 2字節 38-1492字節 4字節
目標地址 源地址 總長度 0xAA 0xAA 0x03 OUI ID 類型 數據 FCS

圖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字節,即網絡適配器廠商代碼。

  ◆2個字節的"類型"字段用來標識以太網幀所攜帶的上層數據類型。


Ethernet V2幀與IEEE 802.3幀的比較

因爲這兩種幀是我們在現在的局域網裏最常見的兩種幀,因此,我們對它們進行一些比較。


Ethernet V2可以裝載的最大數據長度是1500字節,而IEEE 802.3可以裝載的最大數據是1492字節(SNAP)或是1497字節; Ethernet V2不提供MAC層的數據填充功能,而IEEE 802.3不僅提供該功能,還具備服務訪問點(SAP)和SNAP層,能夠提供更有效的數據鏈路層控制和更好的傳輸保證。那麼我們可以得出這樣的結 論:Ethernet V2比IEEE802.3更適合於傳輸大量的數據,但Ethernet V2缺乏數據鏈路層的控制,不利於傳輸需要嚴格傳輸控制的數據,這也正是IEEE802.3的優勢所在,越需要嚴格傳輸控制的應用,越需要用 IEEE802.3或SNAP來封裝,但IEEE802.3也不可避免的帶來數據裝載量的損失,因此該格式的封裝往往用在較少數據量承載但又需要嚴格控制 傳輸的應用中。


在實際應用中,我們會發現,大多數應用的以太網數據包是Ethernet V2的幀(如HTTP、FTP、SMTP、POP3等應用),而交換機之間的BPDU(橋協議數據單元)數據包則是IEEE802.3的幀,VLAN Trunk協議如802.1Q和Cisco的CDP(思科發現協議)等則是採用IEEE802.3 SNAP的幀。大家有興趣的話,可以利用Sniffer等協議分析工具去捕捉數據包,然後解碼查看是不是這樣的。


補充Ethernet II幀格式中Ethertype字段

順便提供一下各種Ethertype(以太網類型):


知名協議已經分配了 EtherType 值,下面表格中列出了 EtherType 字段中常用值及其對應的協議:

Ethertype ( 十六進制 ) 協議
0x0000 - 0x05DC IEEE 802.3 長度
0x0101 – 0x01FF 實驗
0x0600 XEROX NS IDP
0x0660
0x0661
DLOG
0x0800 網際協議(IP)
0x0801 X.75 Internet
0x0802 NBS Internet
0x0803 ECMA Internet
0x0804 Chaosnet
0x0805 X.25 Level 3
0x0806 地址解析協議(ARP : Address Resolution Protocol)
0x0808 幀中繼 ARP (Frame Relay ARP) [RFC1701]
0x6559 原始幀中繼(Raw Frame Relay) [RFC1701]
0x8035 動態 DARP (DRARP:Dynamic RARP)
反向地址解析協議(RARP:Reverse Address Resolution Protocol)
0x8037 Novell Netware IPX
0x809B EtherTalk
0x80D5 IBM SNA Services over Ethernet
0x 80F 3 AppleTalk 地址解析協議(AARP:AppleTalk Address Resolution Protocol)
0x8100 以太網自動保護開關(EAPS:Ethernet Automatic Protection Switching)
0x8137 因特網包交換(IPX:Internet Packet Exchange)
0x 814C 簡單網絡管理協議(SNMP:Simple Network Management Protocol)
0x86DD 網際協議v6 (IPv6,Internet Protocol version 6)
0x880B 點對點協議(PPP:Point-to-Point Protocol)
0x 880C 通用交換管理協議(GSMP:General Switch Management Protocol)
0x8847 多協議標籤交換(單播) MPLS:Multi-Protocol Label Switching <unicast>)
0x8848 多協議標籤交換(組播)(MPLS, Multi-Protocol Label Switching <multicast>)
0x8863 以太網上的 PPP(發現階段)(PPPoE:PPP Over Ethernet <Discovery Stage>)
0x8864 以太網上的 PPP(PPP 會話階段) (PPPoE,PPP Over Ethernet<PPP Session Stage>)
0x88BB 輕量級訪問點協議(LWAPP:Light Weight Access Point Protocol)
0x88CC 鏈接層發現協議(LLDP:Link Layer Discovery Protocol)
0x8E88 局域網上的 EAP(EAPOL:EAP over LAN)
0x9000 配置測試協議(Loopback)
0x9100 VLAN 標籤協議標識符(VLAN Tag Protocol Identifier)
0x9200 VLAN 標籤協議標識符(VLAN Tag Protocol Identifier)
0xFFFF 保留
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章