次にフレームの受信処理について見てみる。こちらの方は送信とは違って比較的単純である。衝突が起こらずに正しく受信ができたフレームのうち、宛先アドレスが自分のステーション・アドレスに一致するか、ブロードキャスト・フレームなどの場合はそれを上位の層へ通知し、そうでなければ破棄する。
1.キャリアの検出とフレームの受信開始
ステーションは、ネットワーク媒体上のデータのキャリアを検知すると、フレームの受信を開始する。10Mbit/sのイーサネットではフレームの先頭のプリアンブル部分で同期を取り、IEEE 802.3でいうところのSFD(Start Frame Delimiter。データ部分の始まりを知らせる符号)を検出すると、その次の信号からフレームを組み立てはじめる。
10Mbit/sのイーサネットでは、フレームが終了したかどうかを、ネットワーク媒体がアイドル状態になったことによって認識するため、フレームに続くノイズ・データを拾ってしまうことがある。そのため、フレームはオクテット境界で切り捨てることになっている。つまり、フレームの最後の8ビットに満たないビットは捨てられるので、7ビット分のノイズは捨てることができる。100Mbit/s以降のイーサネットではフレームの終了を異なる方法で認識するため、このような処理は不要である。
2.フレーム・サイズの確認
受信したフレームのサイズが小さすぎないか確認する。衝突検出によって送信が中断された場合にはフレームは最小サイズ(64オクテット)未満になるので、64オクテット未満のフレームは衝突したフレームと判断し無視する。このような規定サイズ以下のパケットは「Runt Packet」と呼ばれる(「runt」は「小さい」、「ちびの」という意味)。
3.フレームの宛先アドレスの確認
フレームの宛先アドレスを調べる。宛先アドレスがブロードキャスト・アドレス(すべてのステーションを送信対象とするアドレス)ではなく、自ステーションに割り当てられているMACアドレス、またはマルチキャスト・アドレス(ある特定の複数のステーションに向けて送信するためのアドレス)と一致しなければ、関係がないフレームなので無視する。
なおブリッジやスイッチング・ハブ、ネットワーク・プロトコル・アナライザ(ネットワークのパケットをキャプチャして解析する機器)などは、これとは異なり、どの宛先のフレームでも受信する「Promiscuous(無差別)モード」で動作する。
4.フレームの正当性の確認
フレームのサイズがイーサネットの最大サイズを超えている場合、フレーム中に記録されているFCS値(送信側で計算したCRC値のこと)と、受信したデータから計算したCRC値が一致しない場合は、エラー・フレームの受信を上位層に通知し、そのフレームを破棄する。
5.受信したフレームの処理
正常なフレームは上位層に渡される。
以上のようにCSMA/CDは、単純で安価なネットワークを効率よく使うために開発された技術であり、システムを複雑にするようなメカニズムは含まれていない。
例えば、送信時に衝突が起こらなくても、信号の伝送中にノイズを拾い、エラーを含むフレームが相手に届くかもしれない。その場合、受信者はエラー・フレームを黙って破棄してしまうし、もしかしたら宛先アドレスなどが書き換わっていて相手に届かないかもしれない。このような事態は、適切に設計されたネットワークでは起こる可能性が低いうえ、対応するには複雑なメカニズムが必要になる。また必要ならば上位のプロトコルで対応すればすむことで、TCP/IPではそのためのメカニズムを用意している。
つまりCSMA/CDは、フレームの配送についてはできる限りの努力をする(が、必要以上のことはしない)という方針であり、確実に配送ができるということを保証しないため「最善努力型配送(best effort deliver)」と呼ばれる。しかし、だからといって頻繁にエラーが発生するというわけではなく、実際に使ってみても分かるように、効率の良い配送を実現している。
今回のまとめ
Copyright© Digital Advantage Corp. All Rights Reserved.