レイヤ2:イーサネット/IEEE802.3
http://www5e.biglobe.ne.jp/%257eaji/3min/14.html
今日は、イーサネットとIEEE802.3の話。
この2つはLANの規格。
※今更ながら、「LAN」とは、コンピュータや通信機器をケーブルや無線電波などで接続し、
相互にデータ通信できるようにしたネットワークのこと。
そして、イーサネットとIEEE802.3この2つはほぼ同一である。
まず、初めにイーサネットが存在した。
1970年代の末期にXeroxが開発。
1980年に、Xerox、intel、DECの3社が共同で企画をまとめた。
これを3社の頭文字をとって、DIX-Etherrnetと言う。
最初からIEEEの規格ではなかった。
DIX-Etherrnetが便利だったので、IEEEが標準化したものがIEEE802.3.
なので、最近はIEEE802.3も含めてイーサネットと呼ばれることが多い。
■イーサネットのフレーム構造
イーサネットは、LANの規格として、
同軸ケーブル(10Mbps)、CSMA/CDアクセス制御方式、バス型・スター型物理トポロジを使用する。
<<同時ケーブルは今は使わない方がいいのでは?>>
確かにそう。
しかし、イーサネット/IEEE802.3が作られた当初は同軸ケーブルが基本だった。
要するに過去の名残。
レイヤ2では「フレームを作成」する。
つまりカプセル化する。
レイヤ3で作成されたパケットをフレームにする。
イーサネットの場合、パケットに付け加えられる情報は以下の通りとなる。
青色のところは、フレームに包まれるパケットの部分。
それ以外のところがイーサネットでフレームを作るときに付け加えられる情報になる。
パケットが最小で46バイトだから、1フレーム全体で最小72バイト。
最大で1526バイトと考えることもできる。
しかし、プリアンブルは、「これはフレームですよ。プリアンブルが終わるとデータが始まります」という前触れの部分となる。
なのでプリアンブルの部分は計算に入れないで、最小64バイト、最大1518バイトと考えるのが普通。
次に、MACアドレスのあと、「タイプ」がある。ここまでがパケットの先頭につける情報。
そして、パケットの後ろにエラーチェック用のFCSをつけて、フレームが完成する。
▼IEEE802.3との違い
IEEE802.3ではタイプのところに「長さ/タイプ」が入る。
さらにパケットが最大1497バイトになり、減った3バイト分IEEE802.3で決められたLLC副層の情報が入る。
イーサネットとの違いはこれだけ。
■イーサネットの特徴
作られたイーサネットのフレームはNICを通してメディア上を流れる。
イーサネットでは、送信されたフレームは、メディアを通り、すべてのノードに到達する。
このような型をブロードキャスト型という。
※ブロードキャスト型:全員に送信するという意味。
問題は、誰かが送っている最中は他の人は送信できない。
同軸ケーブルは伝送路が1本しかないので、衝突が発生する。
※同軸ケーブルは銅線1本でベースバンド方式だから、信号が1つしかない
そのため、イーサネットでは「フレームを送る=メディアへアクセスする」時にCSMA/CDという制御をつかう。
これは、メディアへアクセスする際の3つの行動の頭文字をとったもの。
「自由に発言権がある会議」と考えるのが手っ取り早い。
まず、発言がある場合、他の人が発言していないかどうかを確かめる。
誰かが話していたら終わるのを待つ。
これがキャリア検知(CD)という。
誰かが話し終わったら、誰でも発言していい。
別に発言の順番などはない。
これが多重アクセス(MA)
発言したい人がたまたま同時に発言してしまった場合、つまり自分がしゃべりつつ、他人の声が聞こえた場合、一旦話すのを止め少し待つ。
これが衝突検出(CD)だ。
▼イーサネットの場合
1.送信準備
イーサネットフレームを作成。衝突カウンタを0にする。
※衝突カウントとは、衝突の回数を数えるもの
2.CSMA
キャリア信号を検知する。なければ一定時間待ったあと、送信開始。
※なぜ一定期間待つかというと、フレームを連続して送るノードがあった場合、そのノードが占有してしまうことになる。
なので、一定時間待って、他ノードが送信するチャンスを与える。(多重アクセス回避)
3.CD
送信途中に衝突したかどうかを検出。衝突していなければ、送信完了。
衝突していた場合、フレーム送信を一時中止し、JAM信号を送信。
4.バックオフ
衝突カウンタをプラス1。
衝突カウンタ16ならば、作成したフレームを破棄。送信中止。
16未満ならランダムな時間待機後、2に戻る。
■受信側の対応
送信時ほど複雑ではないが、受信側も制御を行う。
イーサネットはフレームが全員に届く。
誰かに送ったが、全員に届いてしまうのであれば宛先は不要なはず。
しかし、自分が読み込む必要のないデータをわざわざ読み込んで、「これは自分にはいらない」と判断するのは煩わしい。
なので、宛先は必要。
受信をした時点で、宛先MACアドレスと自分のMACアドレスを比較する。
自分宛でない場合は、その場で破棄する。
そうすれば、わざわざ自分宛でないフレームを処理する手間が省ける。
その後、エラーチェックを行い、正しいデータであることを確かめる。
エラーだったら、破棄する。
それが終わったら、レイヤ3に引き渡し上位の処理を行う。
■ベストエフォート型配送
イーサネットはCSMA/CDというシンプルなアクセス制御を行う。
言葉にすれば、「誰かが通信しているなら、待つ。誰もしていないのなら送信できる。もし誰かとぶつかったらもう1回。」
制御に特別な機器が必要ない。なので安価にネットワークが構築できる。
これがイーサネットが普及し、現在の主流になっている理由の一つだ。
しかし、シンプルさ故の欠点もある。
エラーフレームは問答無用で破棄してしまうところ。
もしかしたら、衝突以外のノイズなどでエラーになっていたかもしれない。
だが、送信した側は破棄されたかどうかわからない。
だからと言って、受け取った側がエラーだからと修正したりもしない。
このような通信をベストエフォート型配送という。
<今日のポイント>
・イーサネットとIEEE802.2はフレームの情報量が少し違う
・宛先MACアドレスと送信元MACアドレスをフレーム情報として付加する
・イーサネットは送ったフレームが全ノードに届くブロードキャスト型ネットワークである
・イーサネットはCSMA/CDアクセス制御方式を使用する
└キャリア信号があるかどうかチェックする(CS)
└なければ一定時間待ってから送信する(MA)
└衝突が発生したかどうかチェックする(CD)
└発生した場合、少し待ってから再送する(バックオフ)
・受信側は、宛先MACアドレスが自分宛かどうか確かめ、違うならフレームを破棄、自分宛なら上位レイヤに引き渡す
・イーサネットはベストエフォート型配送である