以太网帧格式

在乙太網路鏈路上的封包稱作**以太影格**。以太影格起始部分由前導碼和影格開始符組成。後面緊跟著一個乙太網路報頭，以 MAC 位址說明目的位址和源位址。影格的中部是該影格負載的包含其他協定報頭的封包（例如 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 網卡（媒介無關介面 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 值。但在同種物理媒體上都可同時存在。

* 乙太網路第二版 或者稱之為 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 的名字命名的。）, 把緊接在目標和源 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（不包含）的數值未定義。

### 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 以太標準被修改為明確允許緊接著 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）。

## 效率

我們可以計算乙太網路的效率和位元速率：

$$
{\text{Efficiency}}={\frac {\text{Payload size}}{\text{Frame size}}}
$$

當達到允許的最大負載值時可達到最高效率，對於無標籤的乙太網路封包是 ${\frac {1500}{1538}}=97.53\%$ ，而使用 802.1Q VLAN 標籤時是 ${\frac {1500}{1542}}=97.28\%$ 。

由效率中可計算位元速率：

$$
{\text{Net bit rate}}={\text{Efficiency}}\times {\text{Wire bit rate}}\,\!
$$

不帶 802.1Q 標籤的 100BASE-TX 乙太網路的最大位元速率是 97.53 Mbit/s.
註：不帶標籤的最大影格尺寸 = 1518 + 20 (7-byte 前導符，1-byte 影格開始符，12-byte 影格間距)= 1538。

## 矮影格

矮影格是一個尺寸不及 IEEE 802.3 定義的最小長度 64 位元組的乙太網路影格。可能的原因是乙太網路碰撞，資料不足，網卡錯誤或軟體錯誤。

## 注釋

## 參考資料