CSMA/CD

 CSMA/CDとは、「Carrier Sense Multiple Access with Collision Detection(搬送波感知多重アクセス/衝突検出)」の略で、Ethernetで利用されている媒体アクセス制御方式です。「早い者勝ちの媒体アクセス制御方式」とも呼ばれ、IEEE802.3で定められています。

CSMA/CDの動作の仕組みを簡単に説明すると以下の通りです。

 Ethernetに繋がっている端末(PC、プリンタなど)は、常に同じ帯域を共有し、伝送路上で通信できる端末は、常に1台に制限されています。つまり、他の端末が通信中であれば、その端末は通信を行うことができないようになっています。

 通信したい端末は、伝送路上の空き状況を見て、データの送信を開始します。どの端末がデータを送信できるのかは、早いもの勝ちとなっています。

それでは、CSMA/CDをもう少し詳しく説明して行きます。

 まず、通信したい端末は、NICなどで、伝送路上に他のデータが流れていないかどうかを確認します。この動作が、「Carrier Sense」です。

 伝送路上にデータが流れていなければ、PC_Aは、早い者勝ちの法則で、データを送信します。このデータは、PC_Aを除く全ての端末に届きます。

宛先であるPC_D以外の端末は、自分宛のデータではないので破棄します。

通信を行いたい端末が、他にもある場合、通信が終わるのを待ち、ランダムな待機時間後に送信を行います。

 上の例では、PC_Aが無事にPC_Dにデータを送信することができていますが、タイミングが悪かった場合はどうなるのでしょうか?

 タイミングが悪いと複数の端末が同時にデータの送信を開始してしまいます。すると伝送経路上で、互いのデータが衝突(コリジョン)を起こします。

 伝送路上でデータが衝突を起こすと、そのデータは破壊され、ケーブル内に流れる電気信号の波形が崩れます。

 この崩れた電圧が上がった電気信号を各端末が監視を行うことで衝突が起こっているのかどうかを判断しています。

 衝突(コリジョン)を一番最初に検出した端末は、全ての端末に向けて衝突(コリジョン)が起こったことを伝えるデータを流します。このデータを「ジャム信号」と言います。

 端末は、衝突(コリジョン)を検出(Collision Detection)するとランダムな時間を待ってからデータの再送信を行います。このランダムな時間というのが、みそです。

 お互いが同時にデータを送信してしまうと、また衝突が起こってしまうことになります。そこで、ランダムな時間を待機して再度送信するようにしています。

 この送信までの待ち時間を算出するアルゴリズムを「バックオフ・アルゴリズム」言い、再試行の回数が多くなるほど、次の送出までの待機時間が長くなるようになっています。

 再送回数は、16回までとなっており、16回までに通信に成功しないと、通信失敗となり、OS側に通知されるようになっています。

 イーサネットは、仕組みが単純であるため、広く普及し現在においてもLANを支える技術ではありますが、近年では、セグメント内の端末の増加と回線の高速化に伴い、CSMA/CDでは対応できなくなってきています。

そこで、現在では、CSMA/CDではなく、全二重通信が主流になっています。