必威电竞|足球世界杯竞猜平台

以太網幀格式
來源:互聯網

在以太網鏈路上的數據包稱作以太幀。以太幀起始部分由前導碼和幀開始符組成。后面緊跟著一個以太網報頭,以麥金塔地址說明目的地址和源地址。幀的中部是該幀負載的包含其他協議報頭的數據包(例如IP協議)。以太幀由一個32位冗余校驗碼結尾。它用于檢驗數據傳輸是否出現損壞。

結構

來自線路的二進制數據包稱作一個幀。從物理線路上看到的幀,除其他信息外,還可看到前導碼和幀開始符。任何物理硬件都會需要這些信息。

下面的表格顯示了在以1500個八比特組為MTU傳輸(有些吉比特以太網甚至更高速以太網支持更大的幀,稱作巨型幀)時的完整幀格式。一個八比特組是八個位組成的數據(也就是現代計算機的一個字節)。

前導碼和幀開始符

一個幀以7個字節的前導碼和1個字節的幀開始符作為幀的開始。快速以太網之前,在線路上幀的這部分的位模式是10101010 10101010 10101010 10101010 10101010 10101010 10101010 10101011。由于在傳輸一個字節時最低位最先傳輸(LSB),因此其相應的16進制表示為0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xD5。

10/100M 網卡(MIIPHY)一次傳輸4位(一個半字)。因此前導符會成為7組0x5+0x5,而幀開始符成為0x5+0xD。1000M網卡(GMII)一次傳輸8位,而10Gbit/s(XGMII) PHY芯片一次傳輸32位。注意當以字節描述時,先傳輸7個01010101然后傳輸11010101。由于8位數據的低4位先發送,所以先發送幀開始符的0101,之后發送1101。

報頭

報頭包含源地址和目標地址的麥金塔地址,以太類型字段和可選的用于說明VLAN成員關系和傳輸優先級的IEEE 802.1QVLAN 標簽。

幀校驗碼

幀校驗碼是一個32位循環冗余校驗碼,以便驗證幀數據是否被損壞。

幀間距

主條目:en:Interframe gap

當一個幀發送出去之后,發送方在下次發送幀之前,需要再發送至少12個字節的空閑線路狀態碼。

以太幀類型

以太幀有很多種類型。不同類型的幀具有不同的格式和MTU值。但在同種物理媒體上都可同時存在。

??以太網第二版或者稱之為Ethernet II 幀,DIX幀,是最常見的幀類型。并通常直接被IP協議使用。

??Novell的非標準IEEE 802.3幀變種。

??IEEE 802.2邏輯鏈路控制(LLC) 幀

??子網接入協議(SNAP)幀

所有四種以太幀類型都可包含一個IEEE 802.1Q選項來確定它屬于哪個VLAN以及它的IEEE 802.1p優先級(QoS)。這個封裝由IEEE 802.3ac定義并將幀大小從64字節擴充到1522字節(注:不包含7個前導字節和1個字節的幀開始符以及12個幀間距字節)。

IEEE 802.1Q標簽,如果出現,需要放在源地址字段和以太類型或長度字段的中間。這個標簽的前兩個字節是標簽協議標識符(TPID)值0x8100。這與沒有標簽幀的以太類型/長度字段的位置相同,所以以太類型0x8100就表示包含標簽的幀,而實際的以太類型/長度字段則放在Q-標簽的后面。TPID后面是兩個字節的標簽控制信息(TCI)。(IEEE 802.1p 優先級(QoS)和VLANID)。Q標簽后面就是通常的幀內容。

Ethernet II

以太 II 幀(也稱作DIX以太網,是以這個設計的主要成員,DEC,英特爾和Xerox的名字命名的。),把緊接在目標和源麥金塔地址后面的這個兩字節定義為以太網幀數據類型字段。

例如,一個0x0800的以太類型說明這個幀包含的是IPv4數據報。同樣的,一個0x0806的以太類型說明這個幀是一個ARP幀,0x8100說明這是一個IEEE 802.1Q幀,而0x86DD說明這是一個IPv6幀。

當這個工業界的標準通過正式的IEEE標準化過程后,在802.3標準中以太類型字段變成了一個(數據)長度字段。(最初的以太包通過包括他們的幀來確定它們的長度,而不是以一個明確的數值。)但是包的接收層仍需知道如何解析包,因此標準要求將IEEE802.2頭跟在長度字段后面,定義包的類型。多年之后,802.3x-1997標準,一個802.3標準的后繼版本,正式允許兩種類型的數據包同時存在。實際上,兩種數據包都被廣泛使用,而最初的以太數據包在以太局域網中被廣泛應用,因為它的簡便和低開銷。

為了允許一些使用以太II版本的數據報和一些使用802.3封裝的最初版本的數據包能夠在同一個以太網段使用,以太類型值必須大于等于1536(0x0600)。這個值比802.3數據包的最大長度1500字節 (0x05DC)要更大。因此如果這個字段的值大于等于1536,則這個幀是以太II幀,而那個字段是類型字段。否則(小于等于1500而大于46字節),它是一個IEEE 802.3幀,而那個字段是長度字段。1500~1536(不包含)的數值未定義。

802.2 LLC

一些協議,尤其是為OSI模型設計的,會直接在802.2 LLC層上操作。802.2 LLC層同時提供數據報和面向連接的網絡服務。

802.2以太網變種沒有在常規網絡中普遍使用。只有一些大公司的沒有與IP網絡融合的NetWare設備。以前,很多公司Netware網絡支持802.2以太網,以便支持從以太網到IEEE 802.5令牌環網或FDDI網絡的透明橋接。當今最流行的數據包是以太網版本二,由基于IP協議的網絡使用,將其以太類型設置為0x0800用于封裝IPv4或者0x86DD來支持IPv6。

還有一個英特網標準來使用LLC/SNAP報頭將IPv4封裝在IEEE 802.2幀中。這幾乎從未在以太網中實現過。(但在FDDI以及令牌環網,IEEE 802.11和其他IEEE 802網絡中使用)。如果不使用SNAP,IP傳輸無法封裝在IEEE 802.2 LLC幀中。這是因為LLC協議中雖然有一種IP協議類型,卻沒有ARP。IPv6同樣可使用LLC/SNAP在IEEE 802.2以太網上傳播,但,如同IPv4,它也絕少被這樣使用。(盡管LLC/SNAP的IPv6數據包在IEEE 802網絡中被使用)。

子網接入協議

通過檢查802.2 LLC頭,可以確定他是否后繼一個SNAP頭。LLC頭包含兩個附加的8位地址字段,在OSI模型術語中稱作服務訪問點(SAPs)。當源和目標SAP都設置為0xAA時,就會使用SNAP服務。SNAP頭允許以太類型值被任何IEEE 802協議使用,即使支持的是私有協議ID空間。在IEEE 802.3x-1997中,IEEE 以太標準被修改為明確允許緊接著麥金塔地址的16位字段即可用于長度字段,也可用于類型字段。

Mac OS使用 802.2/SNAP 數據包來實現以太網上的AppleTalkV2協議包("EtherTalk")。

Novell raw 802.3

Novell的"raw"802.3幀格式基于早期IEEE 802.3的工作。Novell以它作為起點來創建他自己的以太網上IPX協議的的第一個實現。他們沒有使用LLC頭,而是直接在長度字段后面開始IPX數據包。這不匹配IEEE 802.3標準,但由于IPX的前兩個字節一直是FF(而在IEEE 802.2 LLC中這種模式雖然理論上是可能的但實際上概率極其微小),實用中這種方式與其他以太實現共同存在。但須注意在一些早期的DECnet可能無法識別之。

直到90年代中期,Novell NetWare默認使用這個幀類型,而由于NetWare曾如此流行,而那時IP還不是那么流行,在過去的一些時候,大多數的以太網上都運載著負載IPX的"raw" 802.3數據包。直到Netware 4.10,當使用IPX時,Netware才默認使用IEEE 802.2和LLC(Nerware 幀類型Ethernet_802.2)。

矮幀

矮幀是一個尺寸不及IEEE 802.3定義的最小長度64字節的以太網幀。可能的原因是以太網通訊沖突,數據不足,網卡錯誤或軟件錯誤。

參考資料 >

生活家百科家居網