以太網幀格式
目前,有四種不同格式的以太網幀在使用,它們分別是:
在每種格式的以太網幀的開始處都有64比特(8字節)的前導字符,如圖3所示。其中,前7個字節稱爲前同步碼(Preamble),內容是16進制數0xAA,最後1字節爲幀起始標誌符0xAB,它標識着以太網幀的開始。前導字符的作用是使接收節點進行同步並做好接收數據幀的準備。
除此之外,不同格式的以太網幀的各字段定義都不相同,彼此也不兼容。
Ethernet II幀格式
如圖所示,是Ethernet II類型以太網幀格式。
在每種格式的以太網幀的開始處都有64比特(8字節)的前導字符,如圖3所示。其中,前7個字節稱爲前同步碼(Preamble),內容是16進制數0xAA,最後1字節爲幀起始標誌符0xAB,它標識着以太網幀的開始。前導字符的作用是使接收節點進行同步並做好接收數據幀的準備。
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類型以太網幀格式。
在Ethernet 802.3 raw類型以太網幀中,原來Ethernet II類型以太網幀中的類型字段被"總長度"
字段所取代,它指明其後數據域的長度,其取值範圍爲:46-1500。
接下來的2個字節是固定不變的16進制數0xFFFF,它標識此幀爲Novell以太類型數據幀。
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無編號數據格式)。
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字節,即網絡適配器廠商代碼。
◆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 字段中常用值及其對應的協議:
目前,有四種不同格式的以太網幀在使用,它們分別是:
- 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 | 保留 |