乙太網路訊框格式
此條目可參照英語維基百科相應條目來擴充。 (2019年8月27日) |
此條目需要補充更多來源。 (2019年8月27日) |
在乙太網路鏈路上的封包稱作以太訊框。以太訊框起始部分由前導碼和訊框開始符組成。後面緊跟著一個乙太網路報頭,以MAC位址說明目的位址和源位址。訊框的中部是該訊框負載的包含其他協定報頭的封包(例如IP協定)。以太訊框由一個32位元冗餘校驗碼結尾。它用於檢驗資料傳輸是否出現損壞。
結構
來自線路的二進制封包稱作一個訊框。從物理線路上看到的訊框,除其他資訊外,還可看到前導碼和訊框開始符。任何物理硬體都會需要這些資訊。[note 1]
下面的表格顯示了在以1500個八位元組為MTU傳輸(有些十億位元乙太網路甚至更高速乙太網路支援更大的訊框,稱作巨型訊框)時的完整訊框格式。[note 2] 一個八位元組是八個位組成的資料(也就是現代電腦的一個位元組)。
前導碼 | 訊框開始符 | MAC 目標位址 | MAC 源位址 | 802.1Q 標籤 (可選) | 以太類型 | 負載 | 冗餘校驗 | 訊框間距 |
---|---|---|---|---|---|---|---|---|
10101010 7個octet | 10101011 1個octet | 6 octets | 6 octets | (4 octets) | 2 octets | 46–1500 octets | 4 octets | 12 octets |
64–1522 octets | ||||||||
72–1530 octets | ||||||||
84–1542 octets |
前導碼和訊框開始符
一個訊框以7個位元組的前導碼和1個位元組的訊框開始符作為訊框的開始。快速乙太網路之前,線上路上訊框的這部分的位元型樣是10101010 10101010 10101010 10101010 10101010 10101010 10101010 10101011。由於在傳輸一個位元組時最低位最先傳輸(LSB),因此其相應的16進制表示為0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xD5。
10/100M 網卡(媒介無關介面 PHY)一次傳輸4位元(一個半位元組)。因此前導符會成為7組0x5+0x5,而訊框開始符成為0x5+0xD。1000M網卡(GMII)一次傳輸8位元,而10Gbit/s(XGMII) PHY晶片一次傳輸32位元。 注意當以octet描述時,先傳輸7個01010101然後傳輸11010101。由於8位元資料的低4位元先傳送,所以先傳送訊框開始符的0101,之後傳送1101。
報頭
報頭包含源位址和目標位址的MAC位址,以太類型欄位和可選的用於說明VLAN成員關係和傳輸優先級的IEEE 802.1Q VLAN 標籤。
訊框校驗碼
訊框校驗碼是一個32位元迴圈冗餘校驗碼,以便驗證訊框資料是否被損壞。
訊框間距
當一個訊框傳送出去之後,傳送方在下次傳送訊框之前,需要再傳送至少12個octet的空閒線路狀態碼。
以太訊框類型
以太訊框有很多種類型。不同類型的訊框具有不同的格式和MTU值。但在同種物理媒體上都可同時存在。
- 乙太網路第二版[note 3] 或者稱之為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)和VLAN ID)。Q標籤後面就是通常的訊框內容。
Ethernet II
以太 II 訊框 (也稱作DIX乙太網路,是以這個設計的主要成員,DEC,Intel和Xerox的名字命名的。[1]),把緊接在目標和源MAC位址後面的這個兩位元組定義為乙太網路訊框資料類型欄位。
例如,一個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封包的最大長度1500byte (0x05DC)要更大。因此如果這個欄位的值大於等於1536,則這個訊框是以太II訊框,而那個欄位是類型欄位。否則(小於1500而大於46位元組),他是一個IEEE 802.3訊框,而那個欄位是長度欄位。1500~1536(不包含)的數值未定義。[2]
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訊框中。[3] 這幾乎從未在乙太網路中實現過。(但在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 以太標準被修改為明確允許緊接著MAC位址的16位元欄位即可用於長度欄位,也可用於類型欄位。
Mac OS使用 802.2/SNAP 封包來實現乙太網路上的AppleTalk V2協定套件("EhterTalk")。
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)。
效率
我們可以計算乙太網路的效率和位元速率:
當達到允許的最大負載值時可達到最高效率,對於無標籤的乙太網路封包是,而使用802.1Q VLAN標籤時是。
由效率中可計算位元速率:
不帶802.1Q標籤的100BASE-TX乙太網路的最大位元速率是97.53 Mbit/s. 註:不帶標籤的最大訊框尺寸=1518 + 20 (7-byte 前導符,1-byte 訊框開始符, 12-byte 訊框間距)= 1538。
矮訊框
矮訊框是一個尺寸不及IEEE 802.3定義的最小長度64位元組的乙太網路訊框。可能的原因是乙太網路碰撞,資料不足,網卡錯誤或軟體錯誤。[4]
注釋
- ^ 前導碼和訊框開始符無法在包嗅探程式中顯示。這些資訊會在OSI第1層被網卡處理掉,而不會傳入嗅探程式採集資料的OSI第2層。也存在OSI實體層的嗅探工具以顯示這些前導碼和訊框開始符,但這些裝置大多昂貴,多用於檢測硬體相關的故障。
- ^ 前導碼和訊框開始符的位元型樣以位元串的方式給出,最左的位元最先傳輸(而非以位元組為單位,乙太網路傳輸最優先的位)。這個註腳與IEEE 802.3標準吻合。
- ^ 第一版以太訊框在早期乙太網路原型中使用,並使用8位元MAC位址,從未在商業中使用
參考資料
- ^ Drew Heywood; Zubair Ahmad. Drew Heywood's Windows 2000 Network Services. Sams. 2001: 53. ISBN 0672317419.
- ^ IEEE Std 802.3-2005, 3.2.6
- ^ RFC 1042
- ^ Glossary of Terms - R (Zarlink Semiconductor). [2011-03-01]. (原始內容存檔於2009-10-26). 071227 products.zarlink.com