CSMA/CDってなに?それはネットワークの交通整理役です!

ネットワークの知識
スポンサーリンク

ネットワークに接続されたたくさんのデバイスが、同時にデータを送ろうとしたらどうなるでしょうか?

想像してみてください、たくさんの車が一斉に交差点に突っ込んできたら大混乱ですよね?

ネットワークでも同じようなことが起こります。この大混乱を防ぐための交通整理役が「CSMA/CD」なんです。

今回はネットワークの交通整理役である「CSMA/CD」についてお話していきたいと思います。

スポンサーリンク

そもそもデータってどうやって流れるの?

半二重通信と全二重通信のイメージ

半二重通信と全二重通信のイメージ


データがネットワーク上を流れる方法は、大きく分けて2種類あります。

1つ目が、今ではほとんど使われていない半二重通信(はんにじゅうつうしん)というもの。

半二重通信は、例えるなら片側通行の道路や一方通行の道って考えるとイメージしやすいです。データを送るか、データを受け取るか、どちらか一方しか同時にできません。もし複数の車が同時に同じ方向へ進もうとしたら、ぶつかってしまいますよね?これをネットワークの世界では「コリジョン(衝突)」と呼びます。昔のネットワーク機器である「ハブ」は、この半二重通信を使っていました。ハブは安いんで割と使っている人や会社もまだあるんじゃないですかね。

2つ目が、今の主流である全二重通信(ぜんにじゅうつうしん)というもの。

全二重通信は、行きと帰りの車線が別々にある道路や二車線の道路のようなものです。データを送るのと、データを受け取るのを同時に行うことができます。これなら、お互いのデータがぶつかることはありません。現在のほとんどのネットワーク機器(スイッチやパソコンなど)は、この全二重通信を使っています。

CSMA/CDとは?コリジョンを防ぐ賢い仕組み

CSMA/CDは「Carrier Sense Multiple Access with Collision Detection」の略で、日本語にすると「搬送波感知多重アクセス/衝突検出」となります。

主に半二重通信のイーサネット(Ethernet)で使われる、コリジョンを避けて効率的にデータを送るための賢いルールです。

CSMA/CDの動作は、交通整理とデータ送信を組み合わせたようなものです。具体的には以下のステップで動きます。

  1. データを送信したいデバイスはケーブルが使用されていないかを確認する。
  2. ケーブルが使用されていなければ、データの送信を始める。
  3. コリジョンが発生するとジャミング信号を送信し各コンピュータにコリジョン発生を通知する。
  4. ジャミング信号を受信するとランダムな時間待機し(バックオフアルゴリズム)、その後でデータを再送する。

とまぁ専門的に言うたら上記のような順番になるんですけど、ここでは理解を深めるために専門用語を少なくして、ちょっと違う言い方でお伝えしますね。

1.耳を澄ます(Carrier Sense:搬送波感知)

データを送りたいデバイスは、まずケーブル(ネットワークの道)が今使われていないかを確認します。「もしもし、今道は空いてますか?」と耳を澄ますイメージです。もし誰かがデータ(車)を送っていたら、しばらく待ちます。

2.GOサイン!(Multiple Access:多重アクセス)

ケーブルが空いていることを確認できたら、データを送信し始めます。「よし、道が空いた!出発だ!」とデータを送り出します。

ここがさっき話した「ケーブルが使用されていなければ、データの送信を始める。」ってやつですね。

3.衝突検知!(Collision Detection:衝突検出)

もし、運悪く同時に複数のデバイスがデータを送り始めてしまい、コリジョン(衝突)が発生してしまったら、すぐにそれを検出します。衝突を検知したデバイスは、「ジャミング信号」と呼ばれる特殊な信号をネットワーク全体に送ります。もう各パソコンに送っちゃいます。これは「大変だ!衝突が起きたぞ!みんな止まれ!」という緊急の合図です。

4.仕切り直し!(Backoff Algorithm:バックオフアルゴリズム)

ジャミング信号を受け取ったすべてのデバイスは、データを送るのを中断します。そして、それぞれがランダムな時間(バックオフ時間)だけ待ちます。この「ランダムな時間」というのがポイントで、全員が同じ時間待ってしまうと、また同時に送り出して衝突してしまう可能性があるからです。ランダムに待つことで、次に送るタイミングがバラバラになり、衝突を避けやすくなります。

ランダムな時間を待った後、もう一度ステップ1に戻り、ケーブルが空いているか確認してからデータを再送します。

CSMA/CDは、このように「送信前に確認し、衝突したら仕切り直す」というルールで、半二重通信環境での効率的なデータ送信を可能にしているのです。

CSMA/CDの一番重要なポイントとは?

CSMA/CDの知識で一番重要なポイントってなんでしょう?

それは下記の2つです。

ここがポイント!

  • ケーブルが使われている間は待機する: これはCSMA/CDの「Carrier Sense(搬送波感知)」の部分ですね。他のデバイスが送信している間に割り込んで送ることはしません。
  • コリジョンを検出したらランダムな時間を待ってから再送する: これは「Collision Detection(衝突検出)」後の「Backoff Algorithm(バックオフアルゴリズム)」の部分です。優先的に送ったり、データのサイズを変えたりはしません。

注意しておきたいのが、CSMA/CDは、半二重通信においてコリジョンを「検出して」対処する仕組みであり、全二重通信のようにコリジョンを「発生させない」仕組みではないということはしっかり理解しておきましょう。

デュプレックス設定とオートネゴシエーション

ネットワーク機器には、この半二重通信か全二重通信かを設定する「デュプレックス設定」というものがあります。

/* コマンド */
(config-if)#duplex {full | half | auto}

ネットワーク機器に半二重通信か全二重通信かを設定するときは、上記のコマンドを使用します。

今はね。基本全二重通信なんですけど、まぁ設定できるってことで補足説明的な感じで聞いていただきたいんですけども。

デフォルトではオートネゴシエーションを使って、対向の機器と自動的に最適な通信モードを決定するので、上記のコマンドで説明すると「auto」になっています。

だから、基本はほとんど設定することってないんですよ。

しかし、任意で設定したいとき。

全二重通信に設定するときは「full」を入力して、半二重通信なら「half」を入力します。

デュプレックスの不一致にご注意!

もし、片方の機器が「全二重」、もう片方が「半二重」のように設定が食い違ってしまうと、通信速度が極端に遅くなったり、通信が途切れたりするトラブルの原因になります。特に厄介なのは、設定が食い違っていても、機器の状態表示は「正常(up/up)」になってしまうことが多い点です。Ciscoの機器では、このような不一致を検出し、エラーメッセージを出してくれる機能もありますが、基本的には両方の機器で設定を合わせるか、オートネゴシエーションを両方で有効にすることが重要です。

だから、基本であるデフォルト設定は「auto」なんです。

ややこしい!CSMA/CAとごっちゃにならないように!

実はネットワーク用語の中にはCSMA/CDと似たものでCSMA/CAというものがあるんですね~。

有線LANではCSMA/CDというアクセス制御方式を用いてコリジョンを回避していますが、無線LANではCSMA/CAというアクセス制御方式を用いてコリジョンを回避します。

これ一文字違いなんですよね💦

紛らわしい!

最後の文字が「D」なら有線LANで、「A」なら無線LANのコリジョンを回避するアクセス制御方式というのは知っておきましょう。

オートネゴシエーションの賢さ

オートネゴシエーションは、接続された機器同士が「お互いどんな速さで、どんな通信モードで話せるかな?」と情報交換し、一番良い条件で自動的に設定を合わせてくれる便利な機能です。トラブルを避けるためにも、オートネゴシエーションを使う場合は、必ず接続する両方の機器で有効にしておくようにしましょう。

理解度テスト!CCNA対策

問題:以下の選択肢のうち、CSMA/CDの動作について正しい記述を2つ選びなさい。





正解:
ケーブルが使用されていないことを確認してからデータの送信を開始する
コリジョンを検出した場合、ランダムな時間待機した後にデータを再送する

ケーブルが使用されていないことを確認してからデータの送信を開始する:これはCSMA/CDの「Carrier Sense(搬送波感知)」の動作そのものです。
コリジョンを検出した場合、ランダムな時間待機した後にデータを再送する:これはCSMA/CDの「Collision Detection(衝突検出)」後の「バックオフアルゴリズム」の動作です。

ケーブルが使用されている間は待機します。は誤りです。

優先順位はなく、ランダムな時間を待ちます。は誤りです。

CSMA/CDは、全二重通信環境で効率的にコリジョンを回避するために使用される。は誤りで、CSMA/CDは半二重通信環境でコリジョンを「検出して」対処する仕組みであり、全二重通信ではコリジョン自体が発生しません。

問題: あるネットワークエンジニアが、新しいスイッチと既存のハブを接続しました。スイッチのポートはデフォルト設定(オートネゴシエーション有効)のままで、ハブは半二重通信に固定設定されています。この接続環境で発生する可能性のある問題として、最も適切なものはどれか。




正解:通信速度が低下し、断続的な通信が発生する可能性がある。

通信速度が低下し、断続的な通信が発生する可能性がある。これが「デュプレックスの不一致」によって起こる典型的な問題です。スイッチは全二重でデータを送り続けようとし、ハブは半二重なのでケーブルが空いているか確認しながらデータを送ろうとするため、頻繁にコリジョンが発生し、結果として通信効率が著しく低下します。

他の選択肢は下記の理由で誤りです。
全く通信ができないわけではなく、非常に不安定で遅い通信になることが多いです。

デュプレックスが不一致のため、高速な通信は期待できません。

オートネゴシエーションは片側が固定設定の場合、通信モードの不一致を招くことがあります。この場合、スイッチは10Mbpsまたは100Mbpsであれば半二重、1Gbps以上であれば全二重といったルールで通信モードを決定しますが、結果としてハブとの間でデュプレックスの不一致が生じます。

まとめ

ネットワークのデータ衝突を防ぐ交通整理役がCSMA/CDです 🚥。

これは、半二重通信で使われ、送信前にケーブルが空いているか確認し、衝突したらランダムな時間待機して再送します。現在の主流は衝突しない全二重通信で、多くの機器がオートネゴシエーションで最適な通信モードを自動設定します。CSMA/CDは有線LAN、似た用語のCSMA/CAは無線LANで使われると覚えておきましょう。デュプレックス設定の不一致はトラブルの元なので注意が必要です。

コメント

タイトルとURLをコピーしました