有線のデータパケットとそのペイロードであるフレームは、バイナリデータで構成されています。
イーサネットフレームの内部構造は、IEEE 802.3で規定されています。
イーサネットフレームの内部構造は、IEEE 802.3で規定されています。以下の表は、MTUが1500オクテットまでのペイロードサイズの場合、伝送されるイーサネットパケットと内部のフレームを示したものです。
エーテルタイプ(Ethernet II)または長さ(IEEE 802.3) | ペイロード | フレーム・チェック・シーケンス(32ビットCRC) | インターパケット・ギャップ | ||||||
---|---|---|---|---|---|---|---|---|---|
7オクテット | 1オクテット | 6オクテット | 6オクテット | (4オクテット) | 2オクテット | 46-1500オクテット | 4オクテット | 12オクテット | |
レイヤー2イーサネットフレーム | ← 64-1522オクテット → | ||||||||
レイヤー1イーサネットパケット & IPG | ← 72~1530オクテット → | ← 12オクテット → |
オプションの802.1Qタグは、フレーム内で追加のスペースを消費します。 このオプションのフィールドサイズは、上の表の括弧内に示されています。 IEEE 802.1ad(Q-in-Q)では、各フレームに複数のタグを入れることができます。 このオプションはここでは説明しません。
イーサネットパケット – 物理層
プリアンブルとスタートフレームデリミタ
イーサネットパケットは、7オクテットのプリアンブルと1オクテットのSFD(Start Frame Delimiter)で始まります。
プリアンブルは、1ビットと0ビットを交互に並べた56ビット(7バイト)のパターンで構成され、ネットワーク上の機器が簡単に受信機のクロックを同期させることができ、ビットレベルの同期を実現します。 プリアンブルの後に続くSFDは、バイトレベルの同期と、新しい受信フレームのマークを提供します。 大きなシンボルではなくシリアルビットを送信するイーサネットでは、プリアンブルとフレームのSFD部分の(符号化されていない)オンザワイヤのビットパターンは、10101010 10101010 10101010 10101010 10101010 10101011です(4.2.5項、3.2.2項)。4.2.5項
SFDは、イーサネットパケットの最初のフィールドであるプリアンブルの終わりを示すとともに、イーサネットフレームの始まりを示す8ビット(1バイト)の値です。 SFDは、プリアンブルのビットパターンを崩し、実際のフレームの開始を知らせるように設計されています。:4.2.5項 SFDの直後には、イーサネットフレームの最初のフィールドである宛先MACアドレスが続きます。 SFDは2進数の10101011(0xD5、イーサネットLSB第1ビット順の10進数213)です。:3.2.2項、3.3項、4.2.6項
イーサネットMACを物理媒体に接続するには、物理層のトランシーバー回路(略してPHY)が必要です。 PHYとMACの間の接続は、物理媒体とは独立しており、メディア・インディペンデント・インターフェイス・ファミリー(MII、GMII、RGMII、SGMII、XGMII)のバスを使用します。 ファストイーサネットトランシーバチップは、MIIバスを使用します。MIIバスは4ビット(1ニブル)幅のバスであるため、プリアンブルは0xAの14インスタンスで表され、SFDは0xA 0xB(ニブル)となります。 ギガビットイーサネットのトランシーバーチップは、8ビット幅のGMIIバスを使用しているため、プリアンブルの後に続くSFDは、0x55 0x55 0x55 0x55 0x55 0xD5(バイト)となります。
Frame – Data Link LayerEdit
HeaderEdit
ヘッダーには、デスティネーションおよびソースのMACアドレス(それぞれ6オクテット長)、EtherTypeフィールド、およびオプションとしてIEEE 802.1QタグまたはIEEE 802.1adタグが含まれています。 1500以下の値は、ペイロードのサイズをオクテット単位で示すために使用されることを意味し、1536以上の値は、フレームのペイロードにどのプロトコルがカプセル化されているかを示すために、EtherTypeとして使用されることを意味します。
IEEE 802.1QタグまたはIEEE 802.1adタグが存在する場合は、仮想LAN(VLAN)のメンバーシップとIEEE 802.1pの優先度を示す4オクテットのフィールドです。 タグの最初の2オクテットは、TPID(Tag Protocol IDentifier)と呼ばれ、フレームが802.1Qタグまたは802.1adタグであることを示すEtherTypeフィールドと兼用されます。 802.1Q は、0x8100 の TPID を使用します。
PayloadEdit
802.1Qタグが存在する場合、最小ペイロードは42オクテットで、存在しない場合は46オクテットです。 実際のペイロードが少ない場合は、それに応じてパディング・バイトが追加されます。 最大ペイロードは1500オクテットです。
ジャンボフレーム
フレームチェックシーケンス
フレームチェックシーケンス(FCS)は、4オクテットの巡回冗長検査(CRC)で、受信側で受信したフレーム全体の中で破損したデータを検出することができます。
規格では、この計算は、左シフトのCRC32 BZIP2(ポリ=0x4C11DB7、初期CRC=0xFFFFFFFF、CRCはポストコンプリメント、検証値=0x38FB2284)アルゴリズムを使用して行われます。
規格では、データは最下位ビット(ビット0)から、FCSは最上位ビット(ビット31)から送信されることになっています。:3.2.9項 もう一つの方法は、右シフトCRC32(poly = 0xEDB88320, initial CRC = 0xFFFFFFFF, CRC is post complemented, verify value = 0x2144DF1C)を使ってCRCを計算することです。
規格では、データの受信時に受信側が新しいFCSを計算し、受信したFCSと受信側が計算したFCSを比較することになっています。 もう一つの方法は、受信データとFCSの両方にCRCを計算することで、ゼロではない固定の「検証」値が得られます。 この結果、ゼロではない固定の「検証」値が得られます(CRC生成時にポストコンプリメンテーションが行われるため、結果はゼロではありません)。 データは最下位ビットから受信され、データのオクテットをバッファリングする必要がないため、受信機は通常、右シフトのCRC32を使用します。
しかし、論理的に右シフトするCRCのハードウェア実装では、左シフトする線形フィードバック・シフト・レジスタをCRCの計算の基礎として使用し、ビットを反転させることで、0x38FB2284の検証値を得ることができます。 CRC の補完は、計算後および送信中に実行されるため、ハードウェア レジスターに残るのは補完されていない結果です。したがって、右シフトの実装の場合の残余は、0x2144DF1C の補完 = 0xDEBB20E3 となり、左シフトの実装の場合は、0x38FB2284 の補完 = 0xC704DD7B となります。
End of frame – physical layerEdit
フレームの終了は、通常、物理層のデータストリーム終了シンボル、またはキャリア信号の消失によって示されます。
Interpacket gap – physical layerEdit
Interpacket gap (IPG)とは、パケット間のアイドルタイムのことです。 パケットを送信した後、送信機は次のパケットを送信する前に、最低96ビット(12オクテット)のアイドルライン状態を送信することが要求されています。