すべてのパソコンが勝手にデータを送信しようとし,データ信号が伝送路上で衝突したら少しの間だけ我慢する――。ここでは,イーサネットの最大の特徴である通信方式CSMA/CDの振る舞いを探っていこう。

1本のケーブル上を全信号が行き交う

図1 イーサネットの“ココロ”CSMA/CDのしくみ
10BASE5の場合,同軸ケーブル上で実際に信号が衝突する(電圧値が変化する)。
 まずは,従来の10BASE5方式におけるCSMA/CDの動作から見ていこう(図1[拡大表示])。10BASE5は1本の同軸ケーブルに複数のパソコンがぶら下がる配線形態になる。

 今,パソコンAがパソコンXに対してフレーム(イーサネットでデータをやりとりする単位)を送信するケースを考えてみよう。

 Aは,まずケーブル上に信号が流れていないかを確認する(1)。これは,自分がフレームを送信しても大丈夫かどうかを調べるためだ。これをキャリア・センス(carrier sense)という。そして,信号がなければ,Aは一瞬待ってからフレームを送信し始める(2)。一瞬待つのは,もし直前に信号が流れていた場合に信号同士の隙間を空けるためである。なお,キャリアを検出した場合は,信号がなくなるまで待ってから信号の送出を始める。

 Aが送信を始めると,送出信号は同軸ケーブルを電気信号として伝わり,最終的に同軸ケーブルにつながっているすべてのパソコンに届く。10BASE5の場合,見かけ上は1対1で通信しているようでも,実際には1台のパソコンがケーブルにつながっている全端末に同時に「話しかけている」わけだ。

基本は“早い者勝ち”

 さて,ここまでの流れをA以外のパソコンの視点で見てみよう。Aが信号を送信し始めるためにケーブル上の信号を調べているときは,ほかのパソコンもすべて同様にケーブル上の信号をチェックしている。つまり,(1)でAがデータを送信し始めることができたのは,「運良く先に送信することができた」からなのだ。(1)の段階ではどのパソコンでも早い者勝ちで信号を送信できる。

 ところが,ひとたびAが信号を送信し始めると状況は一変する。ほかの端末は,信号がケーブル上を流れていることを検出すると,ケーブル上に信号がなくなるまで信号を送信できなくなる(3)。

10BASE5では電気信号が実際に衝突

 うまくいけばイーサネットはここまでのしくみで動作する。しかし,話はそう簡単ではない。

 Aが送信する信号が全端末に届く前,つまりAが送信するのとほぼ同時にほかのパソコンXが送信を始める可能性があるからだ(4)。Aが送信した信号は非常に速いスピードでケーブルを伝わっていく。しかし,それでもケーブルの端から端まで伝わるには時間がかかる。したがって,Aからの電気信号がXに到達する前にXが信号を送信し始めてしまうことがあり得る。

 この結果,両者が送信した電気信号は衝突する(5)。この衝突のことをコリジョン(collision)と呼ぶ。信号の衝突が発生すると,Aが送信していた信号もXが送信し始めた信号も電気的に壊れてしまう。壊れた信号はケーブルを伝わり,AやXは壊れた信号を検出する。するとAやXは,正規の信号を送出するのをやめて,「ジャム信号」(詳細は後述)と呼ぶ特別な信号を送出する(6)。

 最終的に,AもXも信号の送信を停止し,あらかじめ決められている範囲でランダムな時間だけ待ってから送信を再開する(8)。以上が10BASE5におけるCSMA/CDの動作である。