■ イーサネットとIEEE802.3の関係
さて、レイヤ2の話が続く。
今日はイーサネットとIEEE802.3の話だ。
LANの規格ですね。
その2つはほぼ同一と聞きましたけど?
そうだな、当然と言えば当然だ。
まず、最初にイーサネットが存在した。
創世記みたいですね。
そしてイーサネットはこう言いたもうた。「光あれ」
黙って聞け。
1970年代の末期にXeroxが開発。1980年に、Xerox、intel、DECの3社が共同で規格をまとめた。これを3社の頭文字をとって、DIX-Ethernetと言う。▼ link
最初からIEEEの規格ではなかったってことですか?
そうだ。
このDIX-Ethernetが便利だっていうので、IEEEが標準化したものがIEEE802.3だ。
イーサネットはIEEE802.3の生みの親なんですね。
確かに同じになりますね、これは。
うむ。
なので最近では、IEEE802.3も含めてイーサネットと表記されることが多い。
ははぁ、了解です。
■ イーサネットのフレーム構造
イーサネットは、LANの規格として、同軸ケーブル(10Mbps)、CSMA/CDアクセス制御方式、バス型・スター型物理トポロジを使用する。
あれ? 同軸ケーブルって今は使うのはよろしくない、となっているのでは?
うむ。今はそうだ。
だが、イーサネット/IEEE802.3が作られた当初は同軸ケーブルが基本だったのだ。なのでそういうことになっている。
過去の名残って奴ですか。
そうだな。これについてはまた先で説明する。
それはともかく、レイヤ2ではフレームを作成するのだったな。
また出てきましたね。カプセル化って奴ですか。
レイヤ2ではレイヤ3で作成されたパケットをフレームにするんです、はい。
うむうむ。いくらなんでも覚えたようだな。
さて、イーサネットの場合、パケットに付け加えられる情報は以下の通りになる。
8バイト | 6バイト | 6バイト | 2バイト | 46〜1500バイト | 4バイト |
プリアンブル | 宛先MACアドレス | 送信元MACアドレス | フレームタイプ | パケット | FCS |
[Table14-01:イーサネットフレーム]
青色の所は、フレームに包まれるパケットの部分だ。それ以外のところが、イーサネットでフレームを作るときに付け加えられる情報になる。
このようなレイヤ2の情報を付加するということだな。
パケットが最小で46バイトだから、1フレーム全体で最小72バイト。最大で1526バイトってことですか。
そう考えることもできる。だがプリアンプルは、これは「フレームですよ。プリアンブルが終わるとデータが始まりますよ」という前触れの部分だ。
ここは計算に入れないで、最小64バイト、最大1518バイトと考えるのが普通だ。
ふむふむ。
プリアンブルが終わると、宛先MACアドレスと送信元MACアドレスがある。
MACアドレスについては前回話したな。
えぇ、48ビットのNICにつけられたアドレスですよね。
その後、タイプがある。ここまでがパケットの先頭につける情報だ。
そして、パケットの後ろにエラーチェック用のFCSをつけて、フレームが完成する。
なるほどなるほど。
その後レイヤ1に引き渡し、電気信号に変えて相手に伝えるわけですね。
そうだ。ちなみにIEEE802.3ではタイプのところが「長さ/タイプ」が入る。
さらにパケットが最大1497バイトになり、減った3バイト分IEEE802.2で決められたLLC副層の情報が入る。そこがイーサネットとIEEE802.3の違いだ。
そんだけなんですか?
他にも4ビットほどオプションがつけれるようになったが、それだけだ。
実際の長さはオプションをつけなければ変わらないし、中身もほぼ同一だ。
ははぁ。
■ イーサネットの特徴
さて、このように作られたイーサネットのフレームは、NICを通してメディア上を流れる。
[Figure14-01:イーサネットによるフレーム伝送]
イーサネットでは、送信されたフレームは、メディアを通りすべてのノードに到達する。
このような型をブロードキャスト型という。
ぶろーどきゃすと?
全員が受け取るんですね。
そうだ。特定の誰かにデータを送るときでも、全員が受け取ることになる。
とりあえず、全員に送っておけば、送りたい人にも届く。シンプルだろ?
シンプルっていうか、豪快っていうか。
■ CSMA/CD
問題は、誰かが送っている最中は他の人は送信できない。同軸ケーブルは伝送路が1本しかないので衝突が発生するからだ。
同軸ケーブルは、銅線1本でベースバンド方式だから、信号が1つしか通らないんですよね。
露骨な解説ありがとう。
ともかく、そのためイーサネットでは「フレームを送る=メディアへアクセスする」時にCSMA/CDという制御を使う。
しーえすえむえー/しーでぃー?
これはメディアへアクセスする際の3つの行動の頭文字をとったものだ。
そうだな自由に発言権がある会議だと考えるのが手っ取り早い。
会議ですか?
うむ。
まず、発言がある場合、他の人が発言していないかどうか確かめる。誰かが話していたら終わるのを待つ。これがキャリア検知(CS)だ。
ふむふむ。
誰かが話し終わったら、誰でも次に発言してよい。
別に発言の順番などない。これが多重アクセス(MA)。
多重アクセス。
発言したい人がたまたま同時に発言してしまった場合。つまり自分が喋りつつ、他人の声が聞こえた場合、いったん話すのを止め、少し待つ。
これが衝突検出(CD)だ。
ん?
誰かの発言が終わるのを待ってから喋るのに、何故他の人と発言がぶつかる事があるんですか?
それは、音が伝わるスピードに限界があるからだ。
誰かが喋る声が聞こえる前に、誰も喋っていないから発言してしまうという可能性があるのだ。さらに誰も喋っていないことを確認してから、喋りだすまでにラグがあるからだな。
ははぁ。
実際のイーサネットの場合は、以下のようになる。
1.送信準備
- イーサネットフレームを作成。衝突カウンタを0にする。
衝突カウンタって?
衝突の回数を数えるものだ。後で使う。
2.CSMA
- キャリア信号を検知する。なければ一定時間待った後、送信開始。
何故一定時間待つかというと、フレームを連続して送るノードがあった場合、そのノードが占有してしまうことになる。
なので一定時間まって、他ノードが送信するチャンスを与えるためだ。
ははぁ、多重アクセスですね。
そうだ。
3.CD
- 送信中に衝突したかどうか検出。衝突していなければ、送信完了。
- 衝突していた場合、フレームの送信を一時中止し、JAM信号を送信。4へ進む。
衝突してなければ、これで終わりですか。
衝突が発生してなければ、無事相手に届いたことになるからな。
4.バックオフ
- 衝突カウンタをプラス1。
- 衝突カウンタが16ならば、作成したフレームを破棄。送信中止。
- 16未満ならば、ランダムな時間待機後、2に戻る。
この衝突が起きた場合の行動をバックオフと言い、待つランダムな時間のことをバックオフ時間と呼ぶ。
ふむふむ。衝突が起きて、相手に上手く届かなかった場合、もう一度送りなおすのですね。
でも、何故16回送るのに失敗したら、止めてしまうのです?
あまり連続して衝突が発生する場合、ネットワーク自体に障害が発生しているか、あまりにも混雑しすぎている事が多い。
その場合、何度やっても無意味だからだ。
ははぁ。
言葉だけでは、わかりづらいかもしれんので、下の図でもう一度説明する。
[Figure14-02:CSMA/CD]
うむ。CSMA/CDはわかったかな?
う〜ん。なんとか。
■ 受信側の対応
ならばよし。
さて、送信の場合はCSMA/CDでアクセス制御を行うわけだが。フレームを受け取った側が行うことも説明する。
うへぇ。受信側もなにか制御をするんですか。
送信時ほど複雑なことを行わない。
イーサネットはフレームが全員に届くのだったな?
えぇ、上でそうおっしゃってますよね。
誰かに送ったのだが、全員に届いてしまう。
それだったら、宛先など必要ないだろう?
そう言われればそうですね。
だが、自分が読む必要のないデータをわざわざ読んで、「これは自分にはいらない」と判断するのも莫迦らしい。
なのでやはり宛先は必要なのだよ。
それもそうですけど。いるのかいらないのかどっちなんですか?
もちろん必要だ。
なので、受信した時点で、宛先MACアドレスと自分のMACアドレスを比較する。
自分宛てかどうか確かめるんですね。
そうだ。自分宛でない場合は、その場で破棄する。
そうすれば、わざわざ自分宛てでないフレームを処理する手間が省ける。
なるほど。
その後、エラーチェックを行い、正しいデータであることを確かめる。
エラーだったら、破棄する。それが終わったなら、レイヤ3に引き渡し、上位の処理を行うわけだ。
自分宛かどうか確かめ、エラーがないかどうか確かめ、その上で次に進む、と。
■ ベストエフォート型配送
さきほども言ったが、イーサネットはCSMA/CDというシンプルなアクセス制御を行う。
言葉にすれば、「誰かが通信してるなら、待つ。誰もしてないなら送信できる。もし誰かとぶつかったらもう1回」だ。
そう聞くと、なんかやけに簡単ですね。
簡単なのだよ。なので制御に特別な機器が必要ない。なので安価にネットワークが構築できるわけだ。
これがイーサネットが普及し、現在の主流になってる理由の1つだな。
シンプルさは勝利の秘訣って感じですか。
だが、シンプルさ故の欠点もある。エラーフレームは問答無用で破棄してしまう所だ。
もしかしたら、衝突以外のノイズなどでエラーになってしまったかもしれない。しかし送信した側は破棄されたかどうかわからない。
そうですね。
相手に送ったはいいですけど、それが破棄されたかどうか確かにわからないですね。
だからといって、受け取った側がエラーだからと修正したりもしない。
このような通信方法はベストエフォート型配送という。
べすとえふぉーと。
うむ。まあイーサネットはかなり信頼性の高い方式なので、それほどエラー発生率が高いわけではないけどな。
ただ上位レイヤで、確実に配送する方法を確保するためのプロトコルを使用はする。
え〜っと。レイヤ4ですね。
ほほぅ、その通りだ。それについてはその時話そう。
さて、イーサネットについてはもう少し話すことがあるので、次回もイーサネットの話だ。
了解です。
3分間ネットワーキングでした〜♪
- Xerox
-
ゼロックス社
情報関連機器メーカ。
日本だと富士ゼロックスや、富士写真フィルムなどが有名。
- intel
-
インテル社
ご存知CeleronやPentiumを作り出しているメーカ。
- DEC
-
ディジタルイクイップメント社[Digital Equipment Corporation]
Compaq社に吸収合併されて今はありません。
- パケットに…
-
パケットの頭と後ろに情報が付け加えられる。
先頭につけるのをフレームヘッダ、後ろに付け加えられるのをフレームトレーラと呼ぶ。
- タイプ
-
使用されるレイヤ3以上のプロトコルを、16進数で表記します。
例えばIPv4なら0800、ARPなら0806など。
- オプション
-
VLAN使用時のタグ情報が入ります。
VLANについては後述。
- ブロードキャスト型
-
[broadcast]
ブロードキャストは、全体に送信するという意味で使用される。
今後も頻繁に出てくる言葉である。
- CSMA/CD
-
[Carrier Sense Multiple Access / Collision Detection]
キャリア検知・多重アクセス/衝突検出、と訳される制御方式。
- キャリア信号
-
[carrier]
メディア上を流れている信号の事。運ぶ[carry]もの。
- 一定時間
-
IFG[Interframe Gap]
フレーム間隔時間と呼ぶ。
10Mbpsのイーサネットの場合9.6μs(マイクロ秒)。
100Mbpsの場合は960ns(ナノ秒)。
- JAM信号
-
[jam]
jamは故障・妨害の意味。
他ノードへ衝突が発生したことを伝え、今受け取ったフレームを破棄するようにするに伝える。
- バックオフ
-
[backoff]
身を引く、引っ込める。
- ベストエフォート型配送
-
[best effort deliver]
最善努力型配送。
確実に配送できるよう努力はするが、それ以上の保障はしないという配送方法。
- ネット君の今日のポイント
-
- イーサネットとIEEE802.3はフレームの情報が少し違う。
- 宛先MACアドレスと送信元MACアドレスをフレーム情報として付加する。
- イーサネットは送ったフレームが全ノードに届くブロードキャスト型ネットワークである。
- イーサネットはCSMA/CDアクセス制御方式を使用する。
- キャリア信号があるかどうかチェックする(CS)。
- なければ一定時間待ってから送信する(MA)。
- 衝突が発生したかどうかチェックする(CD)。
- 発生した場合、少し待ってから再送する(バックオフ)。
- 受信側は、宛先MACアドレスが自分宛かどうか確かめ、違うならばフレームを破棄、自分宛ならば上位レイヤに引き渡す。
- イーサネットはベストエフォート型配送である。
- 参考リンク
-
- ゼロックス社http://www.xerox.com/▲
- インテル社http://www.intel.co.jp/jp/index.htm▲
- デジタルエクイップメント社http://www.dec.com/▲