
IEEE 802.3 SNAP フレームフォーマット
IEEE 802.3 の仕様そのものはうまく動作しているのですが、上位層の中には、
適切な動作のためにイーサタイプを必要とするものもあります。
たとえば、TCP/IP は ARP と通常の IP データとを区別するために、イーサタイプを使用します。
このように、バージョン2との互換性を提供するために、 802.3 SNAP(サブネットワークアクセスプロトコル)が作られました。
SNAP フレームフォーマットは、802.3 のデータリンクヘッダの後に、802.2 の LLC ヘッダが続き、
その後に5バイトの SNAP フィールドが来て、ユーザデータ、FCS で終わります。
データリンクヘッダ
- オフセット 0-5: 宛先
- イーサネットフレームの最初の6バイトは宛先です。宛先は送られたデータフレームがどのアダプタへのものかを指定します。
宛先がすべて1のものはブロードキャストで、これはすべての受信イーサネットアダプタによって読み込まれます。
宛先の最初の3バイトは IEEE によってアダプタのベンダに割り当てられており、ベンダが特定できます。
宛先のフォーマットにイーサネットの実装による違いはありません。
- オフセット 6-11: 送信元
- イーサネットフレームの次の6バイトは発信元です。発信元はどのアダプタでメッセージが作られたかを特定します。
宛先と同じように最初の3バイトによってカードのベンダを指定します。
発信元のフォーマットにイーサネットの実装による違いはありません。
- オフセット 12-13: 長さ
- イーサネットの 13-14 バイト目は長さの情報です。32 ビットの CRC、DLC アドレス、長さ情報自身で、プリアンブルは含まれません。
イーサネットフレームは 64 バイト〜 1518 バイトの範囲内です。
802.2 LLC ヘッダ
データリンクヘッダに続いて LLC ヘッダが来ます。これは 802.2 の仕様によります。
LLC ヘッダの目的はデータリンク層に「天井の穴」を開けることにあります。
アダプタがどのバッファにデータを置いたのかを指定することによって、LLC ヘッダは上位層に対してどこでデータを見つけたらよいのかを教えます。
- オフセット 15: DSAP
- DSAP(サービス接続の目的地点)は、受信ステーションのメモリバッファに対してポインタのように振る舞います。
受信 NIC に対して、このフレーム情報をバッファのどこに置いたらよいのかを知らせます。
この機能はユーザが複数のプロトコルスタックを動かしているときなどに重要なものです。
- オフセット 16: SSAP
- SSAP (サービス接続の源地点)は、DSAP に類似していて、送信プロセスに対して源を指定します。
- オフセット 17: コントロール
- LLC フレームのタイプを指定する1バイトです。
SNAP ヘッダ
- オフセット 18-20: ベンダコード
- SNAP ヘッダの最初の3バイトはベンダコードです。
この部分にゼロが設定されることもあるのですが、通常は発信元の最初の3バイトと同じです。
- オフセット 21-22: ローカルコード
- ベンダコードの後に、フレームのイーサタイプを含む2バイトのフィールドが続きます。
これがバージョン2との互換のためのものです。
ユーザデータとフレームチェックシーケンス( FCS )
- データ: 38-1492 バイト
- SNAP ヘッダの後に、38 バイトから 1492 バイトのデータが続きます。
一般的に、TCP/IP や IPX ヘッダ、ユーザの実データなどから成っています。
- 最後の4バイト
- アダプタに読み込まれる最後の4バイトは、フレームチェックシーケンス、または CRC です。
同軸の電圧がゼロに戻ったとき、アダプタは受取った最後の4バイトが、
多項式によって生成されたチェックサムに反していないかを調べます。
計算されたチェックサムが、フレームのチェックサムと一致しないとき、
そのフレームは捨てられ、ステーションのメモリバッファには取り込まれません。