計算機網絡協議,以太網幀格式


以太網的MAC幀格式有好幾種,被廣泛應用的是DIX Ethernet V2標准,還有一種是IEEE的802.3標准,該標准經過了多年的發展,已經出現了很多種子標准。DIX Ethernet V2 標准與 IEEE 的 802.3 標准只有很小的差別,因此可以將 802.3 局域網簡稱為“以太網”。嚴格說來,“以太網”應當是指符合 DIX Ethernet V2 標准的局域網

一、DIX Ethernet V2(Ethernet II)

1.幀結構

2.字段分析

=======================================================================================================

源MAC地址 ===> 發送方的MAC地址

=======================================================================================================

目的MAC地址 ===> 接收方的MAC地址

=======================================================================================================

上層協議類型 ===> 該MAC數據報中包裝的網絡層數據報協議類型

若該字段的值小於1518,那么這個字段就是長度字段,並定義后面的數據字段的長度。

若該字段的值大於1518,它就定義使用因特網服務的上層協議(小於0600H的值是用於IEEE802的,表示數據包的長度)

具體協議類型可以參考如下兩個表:

表1:

協議ID(Type) 以太網協議
0x0800 Internet Protocol, Version 4(IPv4)
0x0806 Address Resolution Protocol(ARP)
0x0842 Wake-on-LAN Magic Packet
0x1337 SYN-3 Heartbeat Protocol(SYNdog)
0x22F3 IETF TRILL Protocol
0x6003 DECnet Phase IV
0x8035 Reverse Address Resolution Protocol(RARP)
0x809B AppleTalk(Ethertalk)
0x80F3 AppleTalk Address Resolution Protocol(AARP)
0x8100 VLAN-tagged frame(IEEE 802.1Q)
0x8137 Novell IPX(alt)
0x8138 Novell
0x8204 QNX Qnet
0x86DD Internet Protocol, Version 6(IPv6)
0x8808 MAC Control
0x8809 Slow Protocols(IEEE 802.3)
0x8819 CobraNet
0x8847 MPLS unicast
0x8848 MPLS multicast
0x8863 PPPoE Discovery Stage
0x8864 PPPoE Session Stage
0x886F Microsoft NLB heartbeat
0x8870 Jumbo Frames
0x887B HomePlug 1.0 MME
0x888E EAP over LAN(IEEE 802.1X)
0x8892 PROFINET Protocol
0x889A HyperSCSI(SCSI over Ethernet)
0x88A2 ATA over Ethernet
0x88A4 EtherCat Protocol
0x88A8 Provider Bridging(IEEE 802.1ad)
0x88AB Ethernet Powerlink
0x88CC LLDP
0x88CD sercos III
0x88D8 Circuit Emulation Services over Ethernet(MEF-8)
0x88E1 HomePlug AV MME
0x88E3 Media Redundancy Protocol(IEC62439-2)
0x88E5 MAC security(IEEE 802.1AE)
0x88F7 Precision Time Protocol(IEEE 1588)
0x8902 IEEE 802.1ag Connectivity Fault Management(CFM) Protocol / ITU-T Recommendation Y.1731(OAM)
0x8906 Fibre Channel over Ethernet
0x8914 FCoE Initialization Protocol
0x9000 Configuration Test Protocol(Loop)
0x9100 Q-in-Q

表2:

以太類型值 (16 進制 ) 對應協議 備注
0x0000 - 0x05DC IEEE 802.3 長度  
0x0101 – 0x01FF 實驗  
0x0660 XEROX NS IDP  
0x0661    
0x0800 DLOG  
0x0801 X.75 Internet  
0x0802 NBS Internet  
0x0803 ECMA Internet  
0x0804 Chaosnet  
0x0805 X.25 Level 3  
0x0806 ARP  
0x0808 幀中繼ARP  
0x6559 原始幀中繼RFR  
0x8035 動態 DARP,反向地址解析協議 RARP  
0x8037 Novell Netware IPX  
0x809B EtherTalk  
0x80D5 IBM SNA Services over Ethernet  
0x80F3 AppleTalk 地址解析協議 AARP  
0x8100 以太網自動保護開關 EAPS  
0x8137 因特網包交換 IPX  
0x814C 簡單網絡管理協議 SNMP  
0x86DD 網際協議 v6 IPv6  
0x8809 OAM

重要字段含義:
Dest addr : 以太網 OAM 報文的目的 MAC地址,

為組播 MAC 地址 0180c2000002


Source addr : 以太網 OAM 報文的源 MAC地址,

為發送端的橋 MAC 地址,該地址是一個單播 MAC

地址


Type :以太網 OAM 報文的協議類型,為0x8809


Subtype : 以太網 OAM 報文的協議子類型,
為 0x03


Flags : Flags 域, 包含了以太網 OAM 實體的狀

態信息


Code :本字段指明了 OAMPDU 的報文類型。

0x00 表示 Information OAMPDU 、

0x01表示 Event Notification OAMPDU 、

0x04 表示 Loopback Control OAMPDU


常用的 OAMPDU 報文作用:
l Information OAMPDU 報文用於將以太網OAM 實體

的狀態信息(包括本地信息、遠端信息和自定義信息)

發給遠端的以太網OAM 實體,保持以太網 OAM 連接


Event Notification OAMPDU(事件通知OAMPDU )

報文一般用於鏈路監控,是用於對連接本端和遠端

以太網 OAM 實體的鏈路發生的故障進行告警


Loopback Control OAMPDU(環路控制OAMPDU )

報文主要用於遠端環回控制環回控制 OAMPDU

報文用來控制遠端設備的 OAM 環回狀態,該報文

中帶有使能或去使能環回功能的信息,根據該信息

開啟或關閉遠端環回功能

0x880B 點對點協議 PPP  
0x880C 通用交換管理協議 GSMP  
0x8847 多協議標簽交換(單播)MPLS  
0x8848 多協議標簽交換(組播)MPLS  
0x8863 以太網上的 PPP(發現階段)  
0x8864 以太網上的 PPP(會話階段)  
0x88BB 輕量級訪問點協議 LWAPP  
0x88CC 鏈接層發現協議 LLDP  
0x8E88 局域網上的 EAP  EAPOL  
0x9000 配置測試協議( Loopback )  
0x9100 VLAN 標簽協議標識符  
0x9200 VLAN 標簽協議標識符  
0xFFFF 保留  

=======================================================================================================

數據 ===> 攜帶的數據;大小為46-1500字節

因為標准規定以太網幀的總長度最短為64字節,最長為1518字節。而除了數據外其它部分已占用了 6+6+2+4=18 字節長度。因此數據部分的長度就是 [64 ~ 1518] - 18 = [46 ~ 1500] 字節。我們知道mac數據報中大部分情況是包含的Ip數據報。而IP數據報最小可以為20字節。這種情況下20個字節滿足不了mac幀數據部分的最短要求。於是當數據字段的長度小於46字節時,MAC子層就會在數據字段的后面加入一個整數字節的填充字段,以保證以太網的MAC幀長不小於64字節

問題一:

上層協議如何知道填充字段的長度呢?

當上層使用IP協議時,其首部就有一個“總長度”字段。此“總長度”加上填充字段的長度,等於MAC幀數據字段的長度。因此填充字段的長度=MAC幀數據字段的長度-IP數據報中的總長度字段

問題二:

在以太網V2的MAC幀格式中,首部並沒有一個數據長度字段,那么,MAC子層又怎樣知道從接收到的以太網幀中取出多少字節的數據交付上一層協議呢?

曼徹斯特編碼的一個重要特點就是:在曼徹斯特編碼的每一個碼元(不管碼元是1或0)的正中間一定有一次電壓的轉換(從高到低或從低到高)。當發送方把一個以太網幀發送完畢后,就不再發送其他碼元了(既不發送1,也不發送0)。因此,發送方網絡適配器的接口上的電壓也就不再變化了。這樣,接收方就可以很容易地找到以太網幀的結束位置。在這個位置往前數4字節(FCS字段長度是4字節),就能確定數據字段的結束位置

=======================================================================================================

幀檢驗序列 FCS ===> 4byte;使用CRC檢驗。當傳輸媒體的誤碼率為 1x10^-8 時MAC子層可使未檢測到的差錯小於 1x10^-14

=======================================================================================================

3.注意事項

1.MAC數據報的隔離

在以太網上傳送數據時是以幀為單位傳送的。以太網在傳送幀時,各幀之間還必須有一定的間隙。因此,接收端只要找到幀開始定界符,其后面的連續到達的比特流就都屬於同一個MAC幀

2.無效數據幀

什么類型的數據幀被認為是無效數據幀?

(1)幀的長度不是整數個字節

(2)用收到的幀檢驗序列FCS查出有差錯

(3)收到的幀的MAC客戶數據字段的長度不在46~1500字節之間

對無效數據幀的處理措施

對無效MAC幀就簡單地丟棄。以太網不負責重傳丟棄的幀

3.以太網V2 MAC幀(Ethernet II)和 IEEE 802.3標准規定的MAC幀的區別

(1)IEEE802.3規定的MAC幀的第三個字段是“長度/類型”(Ethernet II 規定該字段是類型)。當該字段值大於0x0600時,就表示“類型”(同Ethernet II)當該字段值小於0x0600時才表示“長度”,即MAC幀的數據部分長度(因為以太網采用了曼徹斯特編碼,長度字段並無實際意義)

(2)當“長度/類型”字段值小於0x0600時,數據字段必須裝入上面的邏輯鏈路控制LLC子層的LLC幀

二、IEEE 802.3 SAP

1.IEEE 802.3 SAP 幀格式

2.LLC幀格式

DSAP SSAP 控制字段 LLC數據

DSAP ===> 1byte;目的服務訪問點,指示數據接收方LLC子層的SAP。全1 為全局地址,全0為空地址。在以太網中,該值固定為0xAA

SSAP ===> 1byte;源服務訪問點,指示數據發送方LLC子層的SAP。在以太網中,該值固定為0xAA

控制字段 ===> 1byte ;控制屬性,指示數據鏈路層所用的服務類型。在以太網中都是無連接服務,所以該值固定為0x03

LLC數據 ===> n byte

三、IEEE 802.3 SNAP

在SNAP以太網標准中,除了LLC頭部還有5個字節的SNAP頭作為LLC的擴展

目的地址 源地址 長度/類型 DSAP SSAP 控制 OUI ID Type 數據 FCS

目的地址 ===> 6byte

源地址 ===> 6byte

長度 ===> 2byte

DSAP ===> 1byte

SSAP ===> 1byte

控制 ===> 1byte

OUI ID ===> 3byte;組織唯一標識符,指示幀中Data字段數據報對應協議的發布組織,IEEE發布的以太網協議類型此字段為0x00000

Type ===> 2byte;指示幀中數據包所對應的協議類型

數據 ===> 38byte - 1492byte

FCS ===> 4byte


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM