CSMA/CDとは、バス型ネットワークで複数のコンピューターが1本のケーブルを共有して通信するための手順です。「送る前にケーブルを確認し(CS)、衝突したらすぐ止まり(CD)、ランダムな時間を待ってから再送する」という流れで成り立っており、管理装置なしに各コンピューターが自律的に動けるよう設計されました。1980〜90年代のバス型ネットワークを支えた方式ですが、スイッチと全二重通信が普及した現代ではほぼ使われていません。CSMA/CDがどんな問題を解いていたかを知ることで、現代のネットワークが「なぜ衝突を気にしなくていいのか」が自然と見えてきます。
はじめに
バス型ネットワークの記事では、1本のケーブルを複数のコンピューターで共有するバス型ネットワークの弱点として「信号の衝突(コリジョン)」を紹介しました。複数台が同時にケーブルへ信号を送ると、信号同士がぶつかり合って読めなくなる問題です。このとき「CSMA/CDという通信ルールで対処している」と触れましたが、今回はその中身を丁寧に見ていきます。
衝突(コリジョン)
データは電気信号としてケーブルを流れます。コンピューターAとコンピューターBが同時に信号をケーブルに流すと、互いにぶつかり合って歪んでしまいます。これが 衝突(コリジョン) です。受信した信号が壊れている場合、コンピューターはそれを破棄します。衝突が起こると正常なデータが相手に届かないのです。
図:AとBが同時に送信し、ケーブル中央で衝突する様子
CSMA/CD
この衝突の問題を解決するためのルールとして作られたのが CSMA/CD です。CSMA/CDは略語で、通信の手順を頭文字で並べたものです。IEEE(米国電気電子学会)の IEEE 802.3 として標準化されており、Ethernetの通信方式として1980年代以降に広く使われました。
| 略語 | 正式名称 | 意味 |
|---|---|---|
| CS | Carrier Sense | 搬送波感知(キャリア(=信号)を感知する) |
| MA | Multiple Access | 多重アクセス(複数の機器が同じ回線にアクセスする) |
| CD | Collision Detection | 衝突検知 |
日本語に直すと「信号(キャリア)を感知しながら、複数の機器が共有ケーブルにアクセスし、衝突を検出したら対処する」という手順です。名前がそのまま動作を表しています。
CS(Carrier Sense)― 送信前にケーブルを確認する
信号を送り出す前に、ケーブルが今使われているかどうかを確認します。
| 英単語 | 意味 |
|---|---|
| carrier | 搬送波(信号を載せて運ぶ電気の波); 宅配便を運ぶ「配送トラック」のようなもの |
| sense | 感知する・察知する; 物音に耳を澄ませて状況を把握する行為 |
ケーブルに信号(搬送波)が流れていれば「誰かが送信中」と判断し、静かになるまで待ちます。何も流れていなければ送信を開始します。たとえば会議室で発言したいとき、誰かが話しているときは黙って聞いていて、話が終わったのを確認してから発言するのがマナーですね。CSもそのような動きをします。
MA(Multiple Access)― 空いていたら送信を開始する
ケーブルが空いていると確認できたら、信号を送り始めます。ただし、複数台が同時に送信を開始することをルールとして許容しています。これが MA(Multiple Access)の部分です。
| 英単語 | 意味 |
|---|---|
| multiple | 複数の・多数の |
| access | アクセスする・接続する; ケーブルへの接続・送信行為 |
許可を取ってから送るのではなく、「空いていると判断したら送れる」というルールで動いています。1本のケーブルを複数の機器が対等に共有して使えるという意味がこの MA に込められています。会議室で複数人が同じ空間を使って発言できるのと同じ状況です。
CD(Collision Detection)― 衝突を感知したらすぐ止まる
ここが CSMA/CD の核心です。信号を送っている最中に波形の乱れを検知したら、即座に送信を中止します。
| 英単語 | 意味 |
|---|---|
| collision | 衝突・激突; 2台の車がぶつかる交通事故のイメージ |
| detection | 検知・発見; 問題を素早く見つけ出す行為 |
「空いている」と確認したとしても、まったく同じタイミングで別の機器も「空いている」と判断して送り始めてしまい、信号が衝突する場合があります。会議室で2人が同時に話し始めた状態、いわゆる「かぶった」のがわかると、「あっ、すみません」となりいったん話すのをやめますよね。CDの動作はこれと同じです。
図:AとBが同時送信→衝突検知→即座に停止
衝突後の処理 ― ジャム信号とバックオフ
衝突を検知してただ止まるだけでは不十分です。ネットワーク全体に知らせ、次の衝突も防ぐ2段階の処理が続きます。
ジャム信号でネットワーク全体に知らせる
送信を止めた直後、「ジャム信号(Jam Signal)」と呼ばれる短い電気信号をケーブルに送ります。これにより、ケーブルに接続されたすべてのコンピューターが「衝突が起きた」と認識し、受信中のデータを破棄します。
| 英単語 | 意味 |
|---|---|
| jam | 妨害する・詰まらせる; 信号を上書きして状態を全員に知らせる行為 |
| signal | 信号・合図; 状態や意図を伝えるための電気的な合図 |
会議室で2人の声がかぶったとき、どちらかが「かぶりました!」と声を上げることで、その場の全員が「いまの発言は無効」と認識できます。ジャム信号はその声の役割です。
バックオフ(Backoff)― ランダムな待機で再衝突を防ぐ
ジャム信号を送り終えた後、各コンピューターはランダムに選んだ時間だけ待機してから再送します。 back off とはIT用語で「通信やシステム処理が失敗・混雑した際に、リトライ(再試行)するまでの間隔をわざと空ける仕組み」のことです。
かぶった2人が次に話し始めるまでの待機時間が同じだと、また声がかぶります。それぞれが待機時間をランダムにすることで、同じタイミングで話し始めてしまう確率を下げます。
さらに、衝突が繰り返されるたびに選べる待機時間の幅を倍々に広げます( 指数バックオフ )。選択肢が多いほど、2台がたまたま同じ時間を選ぶ確率が下がるためです。ネットワークが混雑しているときほど各台が急がないよう設計された仕組みです。
なお、16回試行してもすべて衝突が続く場合は、通信不能と判断されエラーとして処理されます。
| 衝突回数 | 選択肢の数 | 最小の時間 | 最大の時間 |
|---|---|---|---|
| 1回目 | 2通り | 0秒 | 0.0000512秒 |
| 2回目 | 4通り | 0秒 | 0.0001536秒 |
| 3回目 | 8通り | 0秒 | 0.0003584秒 |
| 4回目 | 16通り | 0秒 | 0.0007680秒 |
※待ち時間は0.0000512秒の整数倍(0倍、1倍、2倍、3倍…)
図:衝突後のランダム待機(バックオフ)と再送の流れ
CSMA/CDの限界 ― バス型ネットワークが抱えた速度問題
CSMA/CDは衝突を「ゼロにする」仕組みではありません。「衝突してしまった後に対処する」仕組みです。
機器が数台しかなく通信量も少ない環境では十分に機能しました。ところが接続台数が増えて全員が頻繁に通信するようになると、衝突の回数が増えていきます。衝突するたびに待ち時間が発生するため、全体として通信の効率が落ちていきます。
50台の機器が同じケーブルを使って通信しようとする状況を想像してみてください。それぞれが少しずつデータを送ろうとするだけで、ケーブルは絶えず衝突と待機を繰り返す状態になります。誰かが送り終わるのを待っている間に、別の誰かがまた衝突を起こします。こうなるとデータが実際に届くまでに予想以上の時間がかかります。
CSMA/CDは衝突を「管理する」ことはできましたが、「根本からなくす」ことはできませんでした。この限界を超えるには、バス型ネットワークの構造そのものを変える必要がありました。
現代ネットワークが衝突をなくした方法 ― 半二重から全二重へ
バス型ネットワークの通信は 「半二重通信(Half Duplex)」 でした。送信と受信を同時にはできず、送っているときは受け取れず、受け取っているときは送れません。会議室での発言に近いイメージで、複数人が同時に話すと声が混ざって伝わらなくなるため、実質的に「話しているか、黙って聞いているか」のどちらかの状態しか取れません。
| 英単語 | 意味 |
|---|---|
| half | 半分の; 両方向のうち片方向しか同時に使えないイメージ |
| duplex | 双方向・二重; 送信と受信が存在する通信形態 |
現代のスイッチングハブ(スイッチ)を使うネットワークでは、各コンピューターが専用のケーブルでスイッチに個別に接続されます。スイッチは宛先のポートにだけデータを送るため、複数の通信が同時に起きても衝突しません。さらに、送信と受信を同時に行える 全二重通信(Full Duplex) が使えます。固定電話で両者が同時に話せるように、ケーブル上の送信用と受信用の信号路が分かれているためです。
| 英単語 | 意味 |
|---|---|
| full | 完全な・すべての; 制限なく両方向フルに使えるイメージ |
| duplex | 双方向・二重; 送信と受信を同時にできる通信形態 |
共有ケーブルがなくなったことで衝突そのものが起きません。CSMA/CDは「共有ケーブルの上でどう秩序を保つか」の答えでしたが、スイッチの普及によってその前提ごとなくなりました。
図:半二重通信と全二重通信の違い
なお、無線LAN(Wi-Fi)では電波を複数の機器が共有するため、衝突に相当する問題は残ります。Wi-Fiでは CSMA/CA(Collision Avoidance:衝突回避) という方式を使います。有線のCSMA/CDが「ぶつかってから止まる」のに対し、Wi-FiのCSMA/CAは「ぶつかる前に調整する」設計です。電波は自分が送信している最中に他の機器の送信を正確に検知するのが難しいため、検知より回避を優先した方式が選ばれています。
| 英単語 | 意味 |
|---|---|
| avoidance | 回避・回避する行為; 問題が起きる前に避けること |
まとめ
CSMA/CDは、バス型ネットワークで1本のケーブルを複数台が共有するための通信ルールです。送信前の確認(CS)、複数台の共有(MA)、衝突の即時検知(CD)、そしてジャム信号とランダム待機(バックオフ)という一連の流れで成り立っています。管理装置なしに自律的に動く設計でしたが、台数増加とともに衝突が増え通信速度が落ちるという限界がありました。スイッチと全二重通信が普及した現代ではこの仕組みは使われておらず、有線LAN上では衝突そのものが起きない環境になっています。Wi-Fiでは同じCSMA系の考え方を発展させたCSMA/CAが使われており、「衝突に対してどう対処するか」という問いへの答えは、媒体の性質によって今も形を変えながら生き続けています。
用語表
| 用語 | 意味 |
|---|---|
| CSMA/CD | Carrier Sense=搬送波感知 / Multiple Access=多重アクセス / Collision Detection=衝突検知; 「誰も話していないのを確認してから発言し、かぶったらすぐ止まる」会議室のルール |
| 搬送波(Carrier) | carrier=運ぶもの; ケーブルを流れる電気の波。信号を運ぶ配送トラックのようなもの |
| 衝突(Collision) | collision=衝突・激突; 2つの信号がぶつかって互いに読めなくなる状態 |
| ジャム信号(Jam Signal) | jam=妨害する / signal=合図; 「衝突した!」をネットワーク全体に知らせる短い電気信号 |
| バックオフ(Backoff) | back=退く / off=切る; 衝突後にいったん送信をやめ、ランダムな時間だけ待機すること |
| 指数バックオフ(Exponential Backoff) | exponential=指数的な; 衝突のたびに待機の選択肢を倍々に増やす仕組み |
| 半二重通信(Half Duplex) | half=半分 / duplex=双方向; 送信か受信かどちらか一方しか同時にできない通信方式 |
| 全二重通信(Full Duplex) | full=完全な / duplex=双方向; 送信と受信を同時に行える通信方式 |
| CSMA/CA | Carrier Sense Multiple Access / Collision Avoidance(衝突回避); Wi-Fiで使う、衝突を事前に防ぐ通信方式 |