データリンク層で活躍するプロトコル「イーサネット」

ネットワーク

前回の記事ではデータリンク層のネットワーク機器「L2スイッチ」について紹介しました。

今回はデータリンク層のプロトコル「イーサネット」について紹介します。


OSI参照モデルのデータリンク層では、
隣接するノードと通信を行うための機能が定義されていましたね。
「イーサネット」を利用することで隣接するノードと通信することができます。
現在のLANはほとんど「イーサネット」で構築されていますので押さえておきましょう。
※LANについての詳細はこちら。

イーサネットは、使用するケーブルや通信速度によっていくつかの規格に分類されます。
100Mbpsの通信速度で通信ができるイーサネットを「ファストイーサネット」
1Gbpsの通信速度で通信ができるイーサネットを「ギガビットイーサネット」と呼びます。

イーサネットに対応したネットワーク機器のケーブルの差込口(「イーサネットインターフェース」と呼ばれます)には「MACアドレス」と呼ばれる固有のアドレスが割り当てられています。

イーサネットでは通信相手を識別するためのアドレスとしてこの「MACアドレス」を使用します。
※MACアドレスについての詳細はこちら。

また、イーサネットでは、
送信したいデータに宛先MACアドレスと送信元MACアドレスをくっつけて送信することで、「誰が」「誰宛に」データを送信したかが分かるようになっています。
このデータにくっつける情報を「イーサネットヘッダ」と呼びます。
「イーサネットヘッダ」の構成は下の図のようになっています。

順にみていきましょう。

・宛先MACアドレス
データの送り先のネットワーク機器のMACアドレスが設定されます。

・送信元MACアドレス
データを送信するネットワーク機器のMACアドレスが設定されます。

・タイプ部
データリンク層の一つ上の層であるネットワーク層で使用するプロトコルを表す数値が設定されます。

例えば、 「0x0800」 は「IP」というプロトコルを表しています。
※「0x」は次につづく数値が16進数であることを表す記号です。
16進数についてはこちら。

ネットワーク機器がデータを受信したとき、
OSI参照モデルの下位の層から上位の層に向けて”非カプセル化”の処理を行います。
この”非カプセル化”の処理をデータリンク層の「イーサネット」が行うとき、
「イーサネットヘッダ」の「タイプ部」の値を参照して、上位のネットーワーク層のどのプロトコルにデータを渡せばよいか判断します。

タイプ部の数値が、
「0x0800」ならネットワーク層のプロトコル「IP」にデータを渡します。



データを受信したネットワーク機器は、イーサネットヘッダの宛先MACアドレスを確認して、自身のMACアドレス宛であればデータを受信し、そうでなければデータを破棄するようになっています。

また、イーサネットでは「データ」の後ろに「FCS」(フレームチェックシーケンス)という送信エラーチェック用の値をセットするようになっています。
「FCS」は「イーサネットヘッダ」と「データ」の値から計算して求めた値です。
「イーサネットヘッダ」と「データ」 の値が1ビットでも変わると、計算される「FCS」の値も異なります。
データを受信したネットワーク機器は、自分自身で「イーサネットヘッダ」と「データ」から計算した「FCS」と、受信した「データ」の後ろにくっついている「FCS」を比較し一致していなければデータを破棄するようになっています。
「FCS」が一致しないということはデータが到着するまでの間に、
電波の干渉などを受けて壊れてしまっていることを意味しています。そういったデータを受信しないようにするために「FCS」を利用しているのです。

また、イーサネットでは送ることができる「データ」のサイズ
(これをMTU(MaximumTransmissionUnit、最大転送サイズ)といいます)が1500バイトと決まっています。
1500バイトより大きなデータを送信したい場合は、
送信時に1500バイト以下になるように分割して送信し、
受信時に分割されて送られてきたデータをもとの形に戻す必要があります。
イーサネットではMTUを1500バイトと決めているだけで上記のようなデータを分割して送信する機能はありません。上記の処理を行うのは一つ上の層の「ネットワーク層」の役割です。

コメント

タイトルとURLをコピーしました