バージョン2フレームフォーマット
以下は DEC、Intel、Xerox によってリリースされたオリジナルのイーサネットバージョン2 の仕様によるフレームフォーマットの説明です。
802.3 は 14 バイトのデータリンクヘッダの後ろに 802.2 によって定義されている LLC ヘッダを定義していますが、
バージョン2では指定はありません。
データリンクヘッダ
- オフセット 0-5: 宛先
- イーサネットフレームの最初の6バイトは宛先です。宛先は送られたデータフレームがどのアダプタへのものかを指定します。
宛先がすべて1のものはブロードキャストで、これはすべての受信イーサネットアダプタによって読み込まれます。
宛先の最初の3バイトは IEEE によってアダプタのベンダに割り当てられており、ベンダが特定できます。
宛先のフォーマットにイーサネットの実装による違いはありません。
- オフセット 6-11: 送信元
- イーサネットフレームの次の6バイトは発信元です。発信元はどのアダプタでメッセージが作られたかを特定します。
宛先と同じように最初の3バイトによってカードのベンダを指定します。
発信元のフォーマットにイーサネットの実装による違いはありません。
- オフセット 12-13: イーサタイプ
- 発信元の後に2バイトのイーサタイプというフィールドが続きます。
イーサタイプは、802.3 の SAP と類似のものです( SAP はこのフレームの置かれているをバッファ指定します)。
802.3 とバージョン2のフレームについて考えると、興味深い問題が見られます。
両方とも発信元の後に2バイトのフィールド(バージョン2ではイーサタイプ、802.3 では長さ)を持っていますが、
両方ともをサポートするようになっている場合には、どちらのタイプのフレームであることをどうやって知るのでしょうか?
実際の答えは簡単です。イーサタイプの値はすべて 16 進数で 05DC ( = 10 進数で 1500 )より大きい値となっています。
イーサネットの最大フレームサイズは 1518 バイトですから、イーサタイプと長さの値が重なることはありません。
発信元の後のフィールドが 16 進数で 05DC 以上であれば、そのフレームはバージョン2であり、
そうでなければその他( 802.3、802.3 SNAP、ノベル)ものなのです。
ユーザデータとフレームチェックシーケンス( FCS )
- データ: 46-1500 バイト
- イーサタイプの後に、46 バイトから 1500 バイトのデータが続きます。
一般的に、TCP/IP や IPX ヘッダ、ユーザの実データなどから成っています。
- 最後の4バイト
- アダプタに読み込まれる最後の4バイトは、フレームチェックシーケンス、または CRC です。
同軸の電圧がゼロに戻ったとき、アダプタは受取った最後の4バイトが、
多項式によって生成されたチェックサムに反していないかを調べます。
計算されたチェックサムが、フレームのチェックサムと一致しないとき、
そのフレームは捨てられ、ステーションのメモリバッファには取り込まれません。