イーサネットのフレーム
イーサネット上で流れるデータをフレームと呼んでいます。これは、データリンク層のPDU(Protocol Data Unit)の名前でしたね?このフレームですが、次のように4種類あります。
- イーサネットver2
- 802.3 Raw
- 802.3 with LLC(802.2)
- 802.3 with SNAP
フレームフォーマットの変遷
4種類のフレームフォーマットなんですが、歴史的な変遷があります。一番古いのは、イーサネットver2です。もともとイーサネットの規格は、DIX規格と呼ばれています。DEC、Intel、XEROXという規格に関わった企業の頭文字をとっています。このDIX規格がのちにIEEE802.3として標準化されました。そのときに、802.3 Rowのフレームフォーマットが制定されています。
しかし、この802.3 Rowのフレームフォーマットは、上位層プロトコルを識別できないという欠点がありました。その欠点を解消するために、802.3 with LLCのフォーマットが制定されています。
この802.3 with LLC では、上位層のプロトコルを識別するためのLLCというフィールドが追加されています。最後の802.3 with SNAPは、802.3 with LLC では識別できないプロトコルを識別するために制定されています。
イーサネットver2
イーサネットver2のフレームフォーマットは次のようになります。
- あて先MACアドレス
あて先コンピュータのMACアドレスが入ります。MACアドレスは6バイトの大きさを持っているのでこのフィールドは、6バイトです。 - 送信元MACアドレス
送信元コンピュータのMACアドレスが入ります。6バイトです。 - タイプ
上位のネットワーク層のプロトコルを識別するための識別番号が入ります。2バイトのフィールドです。つまり、SAPになります。ネットワーク層のプロトコルがIPだと、16進数で0800という値が入ります。 - データ
イーサネットが運ぶデータが格納されます。大きさは可変長ですが、最小が46バイトで最大が1500バイトです。ちなみに、格納できるデータの最大値をMTU(Maximum Transmission Unit)といいます。イーサネットのMTUは1500になるわけですね。 - CRC(Cyclic Redundancy Check)
データのエラーチェックを行うためのフィールドです。エラーチェックの対象は、あて先MACアドレスからデータ部までです。FCS(Frame Check Sequence)と表現される場合もあります。4バイトのフィールドです。
イーサネットヘッダとデータ部、CRCをあわせるとフレームのサイズの範囲がわかります。64~1518バイトの間になりますね。64バイトよりも小さいフレーム、1518バイトよりも大きいフレームはエラーとして扱われ、破棄されることになります。このフレームサイズは4種類のフレームフォーマットですべて共通です。
802.3 Raw
この802.3 Rawのフレームフォーマットは次の図のようになります。
イーサネットver2と比べると、「タイプ」フィールドが「長さ」フィールドに変わっています。この「長さ」は、あとに続くデータ部の長さを表すものです。 たいした違いじゃないように思いますが、実はこれは重大な欠点があります。それは、上位のネットワーク層のプロトコルを識別することができないということです。
Novel NetWareでは、ネットワーク層のプロトコルはIPXしかないので問題は起こりませんが、その他のネットワークアーキテクチャでは、ネットワーク層のプロトコルはひとつとは限りません。そういった場合、このフレームフォーマットは対応できないことになります。その問題を解決するために考えられたのが、次の802.3 with LLCです。
802.3 with LLC
次の図が802.3 with LLC のフレームフォーマットです。
802.3 with LLC(以下、LLC)は、802.3 Raw のデータ部の先頭部分にフィールドを追加しています。
- DSAP
DSAPはDestination SAPを意味します。これは送信先のネットワーク層のプロトコルを識別するためのフィールドです。1バイトの大きさです。 - SSAP
SSAPはSource SAPのことで、送信元のネットワーク層のプロトコルを識別します。DSAPと同じく、1バイトの大きさです。通常、送信先と送信元は同じプロトコルを利用するのでDSAP、SSAPは同じものになります。 - 制御
データリンクレベルでコネクションの確立やフロー制御を行うためのフィールドです。これも1バイトの大きさです。
こういったフィールドを追加することによって、LLCフォーマットでは802.3 Rawの問題を解決しています。
しかし、DSAP、SSAPは最上位ビットが予約されていて実際には7ビット、つまり2~7=128種類のプロトコルしか識別できません。各ベンダ固有のプロトコルをつくりたいというときなどは、これだけでは足りなくなってきてしまいます。それをなんとかしようと、802.3 with SNAP(以下、SNAP)フォーマットが考えられました。
802.3 with SNAP
SNAPフレームフォーマットは次のようになっています。
- 組織ID
これは、MACアドレスの上位3バイトの組織IDと同じです。IEEEが各ベンダごとに組織IDを割り当てています。 - タイプ
イーサネットVer2のフレームフォーマットのタイプと同じものです。2バイトの大きさを持っています。これによりイーサネットver2との互換性も保てるし、2バイトなので各ベンダごとに固有のプロトコルを作った場合も十分な種類があります。
イーサネットのフレームフォーマットは4種類あるけど・・・
さて、イーサネットのフレームとしては4種類あるわけですが一番大事なのは、イーサネットver2です。TCP/IPはこのフレームフォーマットを採用しているからですね。TCP/IPだけでなく、他のプロトコルを利用しているネットワークの管理者の方だったら、こういった違いをしっかりと押さえておく必要がありますが・・・あと、4種類ともフレームの大きさは64~1518バイトというのは変わりません。










