なんかてきとうに

わりと個人的な忘備録的ですよ。

お勉強

イーサネットフレームの構造

イーサネットのフレームはヘッダ、データ、チェックサム からなります。

イーサネットは、最初、Digital Equipment Corp.、Intel、そしてXeroxの3社によって仕様が決められました。

当初の規格をEthernet(DIX)としましょう。

しばらくして1980年代前半にIEEEが802.2(LLC) 802.3(MAC) として定めました。

その後、802.2で使用していたDSAPというフィールドがちいさすぎたため、SNAPというフィールドとして拡張しました(これも802.2)。

最後に、1997年、IEEEはDIX v2の仕様を802.3に取り込んでいます。

そんなわけで、イーサネットのフレームヘッダーにも3種類あります。

  • DIX (1997年にIEEE802.3として取り込んだもの)

  • IEEE 802.3 (DSAPフィールドのあるもの)

  • IEEE 802.3 SNAP拡張

DIXに802.2(LLC)で拡張したものが IEEE 802.3(DSAP)やIEEE 802.3(SNAP)になっているという感じです。なのでDIXより後者のヘッダの方が大きいです。

実用的にはDIXがつかわれているのかな?

DIX フレーム

DIXフレームは

  • プリアンブル(8バイト)

  • 送信先アドレス(6バイト)

  • 送信元アドレス(6バイト)

  • タイプ、長さ(2バイト)

  • データ(可変)

  • チェックサム(4バイト)

からなります、上4つがヘッダーです。

プリアンブルは、頭62ビットが1010の繰り返し、最後2ビットが11です。

アドレスはMACアドレスですね。

タイプはIPとかIPXとかそういうデータのプロトコルを示しています。 タイプではなく、長さを示す場合もあります。DIXではタイプが使用されます。 値が1500以下の時は長さを、値が1536以上の時はタイプを示します。

チェックサムCRCです。

IEEE 802.3(DSAP) フレーム

IEEE 802.3(DSAP) フレームは

  • プリアンブル(7バイト)

  • SFD(1バイト)

  • 送信先アドレス(6バイト)

  • 送信元アドレス(6バイト)

  • 長さ(2バイト)

  • DSAP(1バイト)

  • SSAP(1バイト)

  • コントロール(1or2バイト)

  • データ(可変)

  • チェックサム(4バイト)

からなります、すこし長くなっていますね。

DIXからの違いはプリアンブルが8バイトだったのにプリアンブル7バイトSFD1バイトにわかれたことです。

データに違いはなくて、プリアンブルは1010の繰り返し、SFDは10101011となっています。

伝送の途中でプリアンブルが欠けることがありますが、10101011があればその次がアドレスのはず、という先頭を検知するビット数を小さくしようという考えみたいです。

アドレスに続くヘッダはタイプから長さに変わっています。

DSAP SSAP のSAPはサービスアクセスポイントで、上位プロトコルを識別するために使用されます。

続くコントロールには制御情報が入ります。

ここではDIXにあったタイプフィールドがなくなっているのがわかります。

IEEE 802.3(SNAP) フレーム

IEEE 802.3(DSAP) フレームは

  • プリアンブル(7バイト)

  • SFD(1バイト)

  • 送信先アドレス(6バイト)

  • 送信元アドレス(6バイト)

  • 長さ(2バイト)

  • DSAP(1バイト)

  • SSAP(1バイト)

  • コントロール(1or2バイト)

  • OUI(3バイト)

  • タイプ(2バイト)

  • データ(可変)

  • チェックサム(4バイト)

からなります、さらに長くなっていますね。

SNAPを使用する場合は、DSAP SSAP はともに0xAA です。

タイプにはDIXのタイプがそのまま使われます。

タイプに対応したベンダー固有のIDが入ります。

DSAPとSSAPは失敗だったからDIXのタイプを取り入れました。という内容ですかね?