[ネットワークメモ]
 情報処理技術者(テクニカルエンジニア:ネットワーク)
 を目指す初心者のためのネットワークメモ。
 今回はイーサネットのお話です。
▲IT関連情報へ戻る
直感的に理解するイーサネット(第3回) (2003/12/18 更新)
●フレーム
イーサネットで送るデータの単位を「フレーム」と呼びます。この「フレーム」は決まった構造になっています。今回はその構造を見ていきます。

図:イーサネットのフレーム構造
図:イーサネットのフレーム構造

宛先MACアドレス(6bytes)
そのデータの宛先の識別子。MACアドレスとはネットワークカードやルータなどのネットワーク機器に全世界で重複なく割り当てられている番号。先頭 3bytes がIEEEで管理しているベンダ番号。残り 3bytes は各ベンダが自由に決められる番号。ベンダがカードやハードウェアの作成時に埋め込むと考えていい。

送信元MACアドレス(6bytes)
送り主のMACアドレス。送り主がユーザのパソコンなら、おそらくパソコンに刺さっている『ネットワークカード』のMACアドレス。送り主がデータを中継しているルータなら、そのルータのMACアドレス。

プロトコルタイプ(2bytes)
データ部のプロトコルタイプ。プロトコルとは「プログラムのことだ」と少し乱暴だが言い切ってしまおう。プロトコルがどういうものかわかっている人は気にしなくていい。つまりここでは、データ部のデータがなんというプログラムで動くかを指定している。「IP」っていうプログラムだったり「AppleTalk」ってプログラムだったり、「NetBIOS」ってプログラムだったりする。

データ部(46〜1500bytes)
送信したいデータの内容。

FCS(4bytes)
フレームチェックシーケンスの略。データ伝送中に、ノイズとかなんらかの影響でデータが壊れていないかどうかをチェックするのに使用する。送信元はフレーム全体にある計算を施して求められた解がFCSになるようにする。データ受信側が同じ計算をして解がFCSと違っていれば、それは壊れたデータとして破棄する。合っていればOK。
[最小フレームサイズについて]

上記のフレーム構造からイーサネットフレームは最小でも64bytesあることがわかります。データ部で送る必要なデータが例え2bytes分であろうと、残り44bytes分のダミーデータを詰め込んで、むりやり64bytesまでは持っていきます。どうしてでしょうか。それは、「衝突」を検出する仕組みの構造上仕方ないからです。下の図を見てください。

[フレームサイズが 64bytes より小さい場合]
図:フレームサイズが64bytesより小さい場合
CompA はデータを送出し終えています。このあと、CompB が「衝突」検出のJAM信号を送っても、データを送出し終えている CompA は涼しい顔をしています。でも本当は CompA のデータは「衝突」しています。

[フレームサイズが 64bytes 以上の場合]
図:フレームサイズが 64bytes 以上の場合
CompA はデータの送信中に「衝突」を検出します。CompA はランダム時間後にそのデータを送りなおすことができます。

「フレームサイズが 64bytes 以上なら、絶対に送信中に『衝突』が検出できるのか? 誰がそんなこと決めたんだ?」と疑う人も中にはいるでしょう。決めたのはきっとイーサネット黎明期に開発に携わった誰かだと思います。絶対に「衝突」を検出できるかどうかについてですが、検出できないような長いネットワークを作ってはいけないという制約があります。下の図を見てください。

[イーサネットの長さの制限]
図:イーサネットの長さの制限
最悪のケースを考えます。ネットワークの一番端にある CompA が送ったデータの先頭がネットワークの反対の端にある CompB の直前で「衝突」したとします。「衝突」から最も近い CompB がそれを検出して、すぐにJAM信号を発します。そのJAM信号が CompA に届くことで CompA も衝突を認識します。つまり 64bytes を送信中に、電気信号がネットワークの端からもう一方の端まで、行って帰ってくることができる長さに、イーサネットは構築しないとダメなのです。10base-T なら、1秒間に 10Mbit 送信できるので、64bytes を送信するのに必要な時間は

(64×8)÷10000000=0.0000512秒

この間に電気信号がネットワークの端から端まで行って帰ってこなくてはいけないのです。それはどのぐらいの長さのネットワークかと言うと、ハブをカスケードで4段までつないでいいぐらいの長さです。そうです、ハブのカスケード接続の制限は、これが原因です。
ですから、ファストイーサ(100base)なら、64bytes を送信するのに必要な時間は

(64×8)÷100000000=0.00000512秒

「0」一つ分短くなります。この短時間のうちに電気信号がネットワークの端から端まで行って帰ってこなくてはいけないのですから、さらにネットワークは短くなければなりません。どのぐらいの長さかと言うと、100base ハブをカスケードで2段までつないでいいぐらいの長さです。100base の時にカスケード段数が変わってしまうのはそういう理由です。
ちなみにこの 64bytes を送信するのに必要な時間というのは「スロットタイム」と呼ばれています。単位としては 「512ビット時間」とされています。

長くなってしまいましたが、今回はここまでです。ネットワークには「仕様」となぜその「仕様」なのかの「理由らしきもの」とがあります。なぜ「理由らしきもの」なのかと言うと、自分が納得するための「理由」ということで、「本当の理由」ではないことがよくあるからです。ただ「仕様」だけ覚えると、自分の中でよくわからなくなってきますので、できる限り「理由らしきもの」とセットにして覚えましょう。「理由らしきもの」の中にさらにわからない点が出てきたりしますので、それをまた突き詰めていくと「本当の理由」に近づいていきます、ような気がします。

講師プロフィール:里村俊一
1995年 慶應義塾大学経済学部卒
同年 千代田生命情報システム株式会社入社
1998年 千代田生命情報システム株式会社を退社し、株式会社知識計画に入社。
2001年 情報処理技術者(テクニカルエンジニア:ネットワーク)を取得。
今に至る。

ご意見・お問合せはinfo@satram.jpまで
Copyright 2003 Satellite RAMBLING. All rights reserved.