イーサネットのフレーム

イーサネット上で流れるデータをフレームと呼んでいます。これは、データリンク層のPDU(Protocol Data Unit)の名前でしたね? このフレームですが、次のように4種類あります。 ・イーサネットver2 ・802.3 Raw ・802.3 with LLC(802.2) ・802.3 with SNAP この4種類のフレームフォーマットは、上位のプロトコルによって使い分けがされます。いま一番使われ ているTCP/IPでは、イーサネットver2のフレームが使用されます。 フレームフォーマットの変遷 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 では識別できないプロトコルを識別するために制定されて います。 この4つのうち、今回はイーサネットver2について取り上げていきますね。 イーサネットver2 イーサネットver2のフレームフォーマットは次のようになります。 ────────────────────────── |あて先 |送信元 |タイプ| データ | CRC | |MACアドレス |MACアドレス| | | | ────────────────────────── ・あて先MACアドレス あて先コンピュータのMACアドレスが入ります。MACアドレスは6バイトの大 きさを持っているのでこ のフィールドは、6バイトです。 ・送信元MACアドレス 送信元コンピュータのMACアドレスが入ります。6バイトです。 ・タイプ 上位のネットワーク層のプロトコルを識別するための識別番号が入ります。 2バイトのフィールドです。つまり、SAPになります。ネットワーク層のプロトコルがIPだと、16進数 で0800という値が入ります。 ここまでの14バイトがイーサネットのヘッダに当たります。 ・データ イーサネットが運ぶデータが格納されます。大きさは可変長ですが、最小が 46バイトで最大が15 00バイトです。ちなみに、格納できるデータの最 大値をMTU(Maximum Transmission Unit)といいま す。イーサネットのMTUは 1500になるわけですね。 ・CRC(Cyclic Redundancy Check) データのエラーチェックを行うためのフィールドです。エラーチェックの対 象は、あて先MACアドレ スからデータ部までです。FCS(Frame Check Sequence) と表現される場合もあります。 イーサネットヘッダとデータ部、CRCをあわせるとフレームのサイズの範囲がわかります。64〜151 8バイトの間になりますね。64バイトよりも小さいフレーム、1518バイトよりも大きいフレームは エラーとして扱われ、破棄されることになります。このフレームサイズは4種類のフレームフォーマット ですべて共通です。 ====================================================================== 「きょうのネットワーク用語」 ・MTU(Maximum Transmission Unit) フレームが運ぶことができるデータの最大値 ・CRC(Cyclic Redundancy Check) フレームのエラーチェックをするためのフィールド。イーサネットでは、 エラーチェックの対象はあて先MACアドレス〜データ部。 802.3 Raw この802.3 Rawのフレームフォーマットは次の図のようになります。 イーサネットver2と比べると、「タイプ」フィールドが「長さ」フィールドの 変わっています。この「長さ」は、あとに続くデータ部の長さを表すものです。 たいした違いじゃないように思いますが、実はこれは重大な欠点があります。 それは、上位のネットワーク層のプロトコルを識別することができないという ことです。 Novel NetWareでは、ネットワーク層のプロトコルはIPXしかないので問題は 起こりませんが、その他のネットワークアーキテクチャでは、ネットワーク層 のプロトコルはひとつとは限りません。そういった場合、このフレームフォー マットは対応できないことになります。その問題を解決するために考えられた のが、次の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フレームフォーマットは次のようになっています。 LLCフォーマットのあとにさらに、「組織ID」「タイプ」が追加されていま す。 ・組織ID これは、MACアドレスの上位3バイトの組織IDと同じです。IEEEが各ベ ンダごとに組織IDを割り当てています。3バイトの大きさです。 ・タイプ イーサネットVer2のフレームフォーマットのタイプと同じものです。2 バイトの大きさを持っています。これによりイーサネットver2との互換 性も保てるし、2バイトなので各ベンダごとに固有のプロトコルを作っ た場合も識別することが可能になっています。 4種類あるけど・・・ さて、イーサネットのフレームとしては4種類あるわけですが一番大事な のは、イーサネットver2です。TCP/IPはこのフレームフォーマットを採 用しているからですね。TCP/IPだけでなく、他のプロトコルを利用して いるネットワークの管理者の方だったら、こういった違いをしっかりと押 さえておく必要がありますが・・・ あと、4種類ともフレームの大きさは64〜1518バイトというのは変 わりません。