イーサネットII規格のフレームフォーマット(まとめ)
この記事ではフレームフォーマットについてまとめます。特にイーサネットⅡ規格の形式を中心に整理していきます。
予備知識
イーサネットにまつわる言葉には色々と呼び方があります。技術書やネット記事でそれぞれ呼び方が異なっているのですが、まずは基本的な知識を整理していきます。
名称 | 機能 |
---|---|
イーサネット | 有線LANの規格(プロトコル) or 有線LANケーブルそれ自体 (プロトコルは物理層、データリンク層にまたがって定義されている) |
データリンク | 隣接する機器との間に作る論理的な伝送路 |
データリンク層 | (1)隣接機器との通信,(2)ビット列のエラーチェック を行う |
パケット | (一般的な意味で)細切れにされたデータのこと |
ヘッダ | 各層で付加する情報のこと |
ペイロード | (ヘッダが付与されていない)データ本体のこと |
PDU | 各層におけるデータの送受信単位の呼び名 (細切れにされている) |
L2ヘッダ | データリンク層で付加されるヘッダのこと |
イーサネットヘッダ | イーサネットのプロトコルに従って付与されるヘッダのこと |
フレーム | データリンク層におけるパケットのこと (L2ヘッダによってカプセル化されている) |
イーサネットフレーム | イーサネットの規格に従ってカプセル化されるパケットのこと |
フレームフォーマット | フレームの大きさ・中身の定義のこと |
パケット
インターネット通信においてデータは細切れにして送られます。細切れにされた、データの送受信単位のことを(一般的な意味で)パケットと呼びます。
データを細切れにして送信
元あるデータをパケットに分割することで、コンピュータ同士はやり取りを行なっています。
ヘッダ(カプセル化,非カプセル化)
コンピュータがデータを送信する際、送られるのはパケットだけではありません。物理的な仕様,送信相手の特定,パケットの転送,信頼性の確立,セキュリティの確保など、色々な情報がプラスで必要になります。
ヘッダとはパケットにプラスで付加される情報のことです。送信側では正しい通信を実現するため、各層でヘッダを付与していきます(物理層でヘッダは付与されないので注意して下さい)。逆に受信側ではそれぞれの層で付与されたヘッダを外して情報を読み取っていきます。送信側でヘッダを付加することをカプセル化、受信側でヘッダを外すことを非カプセル化と呼びます。
PDU
細切れにされたデータのことを、一般的な意味でパケットと呼びます。しかし正確にはカプセル化されることによって、各層でデータの構成は全く違うモノとなります。そのため一口に「パケット」と大雑把に呼ばれるのではなく、各層で違った名称が付いています。
PDUとはあるプロトコル(通信規約)が扱う1まとまりのデータの送受信単位のことです。パケット,フレームなど、具体的な呼び名はプロトコルによって異なります。
イーサネット
通信機器同士を接続するために利用するケーブル(=有線LAN)の規格です。元々は「規格」を意味する用語でしたが、「有線LANの規格といえばイーサネット」という認識が大きく広がったことから、有線LAN自体をイーサネットと呼んでいるケースもあります。イーサネットという言葉を聞いた時は、規格(プロトコル)を意味するのか?ケーブルを意味するのか?に注意して下さい。
データリンク層
データリンク層はOSI参照モデルにおいてレイヤ2に相当します。
データリンク層の役割は主に2つあります。
(1)MACアドレスによる隣接ノードとの通信
(2)ビット列の整合性チェック・エラー修正
データリンクとは
隣接する機器との間に作る論理的な伝送路のことです。データリンク層では「どの端末に対してデータリンクを作るか?」、「出来上がったデータリンクの中でビットが欠けていないか?」を判断するためにカプセル化の処理を行い、物理層の信頼性を確保します。
フレーム
データリンク層におけるデータの送受信単位のことです。データリンク層の役割は下記の2つがありましたが、これらを実現するための機能をフレームでは定義しています。
(1)MACアドレスによる隣接ノードとの通信
(2)ビット列の整合性チェック・エラー修正
元々のデータにプラスして、データリンク層ではL2ヘッダが付与されることになります。
イーサネットフレームのイメージ
フレーム形式(フォーマット)
フレームの大きさや中身の定義のことです。フレームの大きさはどれくらいの大きさで、どのようなデータが入るのか?ということは規格で既に決まっています。フォーマットと聞くと何だか難しそうですが、形式・構造・構成に近い言葉だと思って下さい。
(1)どのような種類(例えば,IPv4のデータかIPv6のデータか)のデータか?
(2)どこからどこに送るか?
(3)受け取った情報が送信途中に変化しなかったか?
具体的には上記の3つの情報とその大きさを定義しています。
フレームフォーマットの種類
イーサネットのフレームフォーマットには代表的なモノで4種類あります。イーサネットⅡ(DIX)規格、IEEE802.3規格、IEEE802.3+IEEE802.2規格、SNAP規格の4つです。どの規格を使うかは実装次第で、プロトコルによって選択できる場合もあります。ただ現在のネットワークはイーサネットⅡ規格を仕様することがほとんどです。
イーサネットⅡ規格
DEC社、Intel社、Xerox社によって策定された規格です。3社の頭文字をとってDIX規格とも呼ばれます。IEEE802.3規格よりも早く発表されたということもあって、広く世の中に普及しました。今では「イーサネット=インターネットⅡ」というくらい、TCP/IPでやり取りするほとんどのパケットがイーサネットⅡ規格を使っています。
IEEE802.3規格
IEEE802.3委員会がイーサネットⅡをベースに考案した規格です。発表された時はすでにイーサネットⅡ規格がメジャーになっており、広まることはありませんでした。
イーサネットⅡ規格の特徴
1本のケーブルで情報をやり取りするという当時の制約の元に作られた結果、非常にシンプルな仕様(=フォーマット)となっています。イーサネットの伝送速度は当時の10MBit/秒よりずっと速くなりましたし、光通信など新しい技術も登場しています。その中でフレーム形式はずっと変わらずその形を保っています。シンプルかつわかりやすいフォーマットが、30年以上にも及ぶ歴史を支えています。
イーサネットⅡ規格の概要
イーサネットⅡは5つの要素(フィールド)から構成されています。プリアンブル、宛先/送信先MACアドレス、タイプ、イーサネットペイロード、FCS の5つです。
フィールド名称 | 機能 |
---|---|
プリアンブル | フレーム送信の合図となる信号 |
MACアドレス | 機器を識別するための情報 |
タイプ | ネットワーク層でどんなプロトコルを使っているかを表すID |
イーサネットペイロード | ネットワーク層から受け渡しされた元々のデータ (=ほとんどの場合、IPパケットのこと) |
FCS | フレームが壊れていないかチェックするための値 |
これら5つのフィールドによって、データリンク層の機能を実現している点に注目して下さい。
(1)MACアドレスによる隣接ノードとの通信
(2)ビット列の整合性チェック・エラー修正
イーサネットヘッダの別名
イーサネットペイロードを挟んでその前後をまとめて、以下のように呼ぶ場合もあります。
イーサネット(L2)ヘッダ:プリアンブル、宛先/送信先MACアドレス、タイプ
イーサネット(L2)トレーラ:FCS
イーサネットフレームのイメージ
データリンク層から受け渡しされたIPパケットへ、イーサネットヘッダ(=5つのフィールド)を付与します。
イーサネットフレームができるまで
ヘッダを付与されることでイーサネットフレームとなり、物理層で0と1の電気信号に変換され、有線LANへと送信されていきます。
フィールド(5つの要素)の概要
5つのフィールドの概要をご紹介します。
プリアンブル
フレーム送信の合図となる信号です。具体的には8バイト(64ビット)の特別なビット列です。10101010
が7回送られ、最後に10101011
が1つ送られます。受信側の端末がプリアンブルを確認し、この直後から実際のフレームが始まることを認知します。
宛先/送信先MACアドレス
イーサネットネットワークに接続している端末を識別するためのIDです。6バイト(48ビット)で構成されています。00-0c-29-43-5e-be
のように、1バイト(8ビット)ずつ区切って16進数で表記します。イーサネットフレームを送信する際に、以下の2つの情報をセットします。
宛先MACアドレス:フレームを届けたい機器のMACアドレス
送信元MACアドレス:自分のMACアドレス
受信側の端末は宛先MACアドレスを見て、自分のMACアドレスなら受け入れて、関係ないモノは破棄します。また送信元MACアドレスを見て、どの端末から来たイーサネットフレームかを判断します。
タイプ
ネットワーク層でどんなプロトコルを使っているかを表すIDです。2バイト(16ビット)によって、上位層で使っているプロトコルを識別します。
タイプコード | プロトコル |
---|---|
0x0000 - 05DC | IEEE802.3 Lenght Field |
0x0800 | IPv4 |
0x0806 | ARP |
0x0835 | RARP |
0x86DD | IPv6 |
0x8863 | PPPoE |
0x8864 | PPPoE |
多くの場合はIPプロトコルが使われています。
イーサネットペイロード
上位層から受け渡しされるパケットのことです。イーサネットペイロードへL2ヘッダを付与することで、イーサネットフレームを作ることができます。イーサネットペイロードの正体はほとんどの場合IPパケットです(上位層であるネットワーク層では多くの場合、IPプロトコルが使われているから)。
L3から受け渡しされるパケットのサイズは決まっており、46バイト〜1500バイトに収める必要があります。46バイトに足りなければパディングといってダミーのデータを追加します。また1500バイト以上であれば、トランスポート層やネットワーク層でデータを分割して1500バイトに納めます。
FCS
フレームが壊れていないかチェックするための値です。Frame Check Sequenceの略です。イーサネットフレームを送信する際に5つのフィールドに対して一定の計算(チェックサム計算、CRC)を行い、その結果をFCSとしてフレームの最後に付与します。受信側の端末は同じように5つのフィールドで計算を行い、その値がFCSと同じかどうかを比較します。2つのFCSの値が同じであれば正しいイーサネットフレームと判断し、異なっている場合は伝送途中で壊れたと判断します(壊れたイーサネットフレームについては破棄されます)。FCSに置いてイーサネットにおけるエラー検知の全てを行っています。
Discussion