CSMA/CD
| CSMA/CD CSMA/CDはイーサネットで利用されている媒体アクセス制御方式です。フルスペルではCarrier Sense Multiple Access with Collision Detection です。よく早い者勝ちの媒体アクセス制御方式と呼ばれています。 アルファベットが6つ長々と並んでいるんですが、これは2つずつの組に分けて考えます。その2つずつの組は、CS、MA、CDです。 |
| Carrier Sense(CS) 図に示すような、コンピュータA、B、C、Dの4台が接続されている簡単なネットワーク構成を考えます。(説明の都合上、バス型のトポロジですがスター型のトポロジでも同じことです) ![]() このとき、コンピュータAからコンピュータDに対してデータを送信したいとします。まずコンピュータA(正確には、コンピュータAに取り付けられているNIC)は、ケーブル上にすでにデータが流れているかどうかをチェックします。これが CS (Carrier Sense) です。チェックをして、ケーブル上にデータが流れていなければデータを送信することができます。もしすでにデータが流れていればそのデータがケーブル上からなくなるまでデータ送信を待ちます。 コンピュータAから送信されたデータは、同じLAN上のすべてのコンピュータに届くというのは、前回もお話しました。各コンピュータでは、データのあて先アドレス(MACアドレス)を見て自分あてであればそのデータをさらに上位のプロトコルに渡して、処理するわけですね。自分あてでなければそのデータの処理をそれ以上行いません。つまり、コンピュータDは届いたデータの処理を続けて、コンピュータB、Cではデータの処理をそれ以上行いません。 ![]() |
| Multiple Access(MA) これが基本的な動作で、コンピュータBがデータを送信するとき、コンピュータCがデータを送信するとき、コンピュータDがデータを送信するときもまずケーブル上にデータが流れているかを確認して、ケーブルが空いていたらデータを送信することができます。ケーブルが空いていたら、早い者勝ちで送信するんですね。 このように、ケーブルを複数のコンピュータで共用してデータを送信しています。これが多重アクセス、すなわち MA (Multiple Access)という言葉が意味するものです。 |
| Collision Detection(CD) あと残りは、CDですね。 これはイレギュラーなパターンです。もし複数のコンピュータが Carrier Senseを行って、ケーブルにデータが流れていない!と判断したらどうなるかという話になります。その場合は複数のコンピュータがデータを送信してしまうことになります。 たとえば、さっきの図でコンピュータAからコンピュータDへのデータ送信と、コンピュータBからコンピュータCへのデータ送信が同時に起こったといった状況を考えます。 ![]() A、Bは CS を行いケーブル上にデータが流れていないためデータの送信をはじめます。すると、両方のコンピュータから送信されたデータは途中で衝突を起こしてしまいます。衝突が起こるとデータが壊れてしまい、正常なデータを送ることができません。この衝突が起こったということを検出するのが CD (Collision Detection)です。検出は、NICで行われています。衝突が起こると、通常の範囲外の電圧となってしまうので検出することができます。 衝突を検出したら送信元のコンピュータはデータ送信を中断して、それぞれランダムな時間待ちます。その後、また Carrier Sense を行い・・・という具合にデータの再送を行っていきます。 まとめとして、CSMA/CDの動きをフローチャートにします。 ![]() |
| さらに・・・ ※ここからはちょっと深い内容です。 同時に複数のコンピュータが送信をはじめると、衝突が起こるということですが、厳密に「同時」ってありえないですよね?いくらかのタイムラグが生じるはずです。このタイムラグの時間が10Mbpsの通信速度では、51.2マイクロ秒です(1マイクロ秒は100万分の1秒)。100Mbpsでは、5.12マイクロ秒です。この時間は、512ビットのデータを流すのにかかる時間を表しています。(このような時間の表し方をビット時間といいます) CSMA/CDの規格上、512ビットのデータを送出するとその信号がLAN全体に行き渡り、回線を占有することになります。つまり、他のコンピュータがCarrier Senseを行うと、データが流れていると判断します。このことから、CSMA/CDのフレームの最小サイズが512ビット=64バイトと決まっています。 また、衝突が起こってしまったらランダムな時間待機してまた最初から再送をするということですが、このときまた衝突を起こしてしまったらどうなるでしょう? 答えは、またランダムな時間待って再送を繰り返します。で、また衝突が起こったら同じように再送をします。ただし、これがいつまでも続くわけではなくて、再送回数は16回までです。それ以上は、データを破棄してしまいます。そんなネットワークは使いものになりませんね・・・ ある程度、LAN上にコンピュータの数が増えてくると、衝突が起こる可能性が大きくなってきます。そんなとき、ルータなどによってネットワークをわけると衝突の可能性を小さくし、ネットワークのパフォーマンスを上げることができます。 その辺の話については、そのうちネットワーク機器で触れていきます。 |
(C) Copyright 2000 Gene All Right Reserved