CSMA/CDとは何か
CSMA/CDは「Carrier Sense Multiple Access with Collision Detection」の略で、日本語にすると「搬送波感知多重アクセス・衝突検出方式」と呼ばれます。初期のイーサネットで採用されていた通信制御の仕組みで、10Base5や10Base2といった同軸ケーブルを使うバス型LAN、またはハブを利用したスター型LANで広く用いられていました。
しかし現在は、スイッチングハブと全二重通信が普及したため、CSMA/CDが使われる場面はほとんどなくなっています。試験では仕組みを理解しておくことが目的です。
CSMA/CDの基本動作
CSMA/CDの考え方はとてもシンプルで、「空いているときに送る、ぶつかったらやり直す」というルールに従います。イメージしやすいように、複数人が同時に話そうとする会議を例にすると分かりやすいです。
1人が話しているときに、他の人はそれを聞いていて発言を控えます。誰も話していないタイミング(回線が空いている状態)になれば、自分が発言を始めることができます。ところが、もし複数人が同時に話し始めたら声がかぶって聞き取れなくなります。これが「コリジョン(衝突)」です。衝突が起きたときは全員が一旦黙り、ランダムに時間をおいてから再び発言を試みます。この「待ち時間」を設けることで、再度同じタイミングで衝突する確率を下げているのです。
これをネットワークに置き換えると次のようになります。
- Carrier Sense(搬送波感知):ケーブルに信号が流れていないか確認する。
- Multiple Access(多重アクセス):複数の端末が同じケーブルを共有して利用する。
- Collision Detection(衝突検出):もし同時送信で衝突したら検出し、再送を行う。
バックオフと再送
衝突が検出されたとき、端末は「ジャム信号」と呼ばれる通知を流して全員に「衝突が起きた」と知らせます。その後、各端末はランダムな時間だけ待ってから再送を試みます。これを「バックオフ」と呼びます。
バックオフは最大15回繰り返され、それでも成功しない場合は16回目でフレームを破棄します。この挙動は試験で問われることがあるため、覚えておくと安心です。
全二重通信と半二重通信
ネットワークの通信方式には「全二重通信」と「半二重通信」があります。
全二重通信(full duplex) は、送信と受信を同時に行える方式です。まるで電話のように、お互いが同時に会話できるイメージです。この仕組みを使うと、同じ帯域幅でも2倍の効率で通信が可能になります。
半二重通信(half duplex) は、送信と受信を同時に行えず、交互にしか通信できません。トランシーバーのように「どうぞ」と言って相手に譲らなければならないイメージです。そのため全二重に比べると効率は半分になってしまいます。
全二重と半二重の違い
CSMA/CDは半二重通信のときにしか使われません。半二重通信では「同時に送ることはできないが、交互に送受信する」形になります。そのため衝突が起こる可能性があるのです。
一方で現在主流の全二重通信では、送信と受信を同時に行えるため衝突は発生しません。スイッチを使ったLAN環境では基本的に全二重通信が使われるため、CSMA/CDは過去の技術として理解しておけば十分です。
ここは試験でも「CSMA/CDは半二重でのみ利用される」という点がよく問われます。全二重の環境では不要であることを必ず押さえておきましょう。
スイッチでの設定例
Cisco Catalyst スイッチでは、通信速度や通信モードを手動で固定することができます。例えば「FastEthernet0/1」を100Mbps・全二重で動作させる場合は以下のように設定します。
Catalyst(config)# interface FastEthernet 0/1
Catalyst(config-if)# speed 100
Catalyst(config-if)# duplex full
このように固定設定することで、誤った通信モードが選ばれるのを防ぐことができます。
オートネゴシエーション機能
イーサネットLANでは、機器同士が同じ速度・同じ通信モードで動作しなければ通信が安定しません。そのため、IEEE802.3uで標準化された オートネゴシエーション 機能が導入されています。
これは接続された機器同士が「FLPバースト」と呼ばれる信号をやり取りしながら、どの速度・モードで通信できるかを自動で調整する仕組みです。決定するときは優先順位に従います。
代表的な優先順位は以下の通りです。
- 1000BaseT / 全二重
- 1000BaseT / 半二重
- 100BaseTX / 全二重
- 100BaseTX / 半二重
- 10BaseT / 全二重
- 10BaseT / 半二重
実際にはさらに細かい定義がありますが、試験対策としては「より高速で、かつ全二重が優先される」と理解しておけば十分です。
自動設定の例
通信速度・モードを自動に任せる場合は以下のように設定します。
Catalyst(config)# interface FastEthernet 0/1
Catalyst(config-if)# speed auto
Catalyst(config-if)# duplex auto
オートネゴシエーションのトラブル
オートネゴシエーションは便利ですが、相手がこの機能をサポートしていない場合や、手動で固定設定されている場合に問題が起こることがあります。
例えば、片方が 全二重通信 に固定されていて、もう片方が オートネゴシエーション のままだと、オートネゴシエーション側は半二重を選んでしまうケースがあります。これを「デュプレックス不一致」と呼びます。
デュプレックス不一致が起きると、以下のようなトラブルが発生します。
- 通常のデータ通信:速度低下(「なんだか遅い」程度)
- 音声通話やビデオ会議:品質劣化(音声が途切れる、映像が乱れるなど)
特に音声トラフィックでは半二重の制約が致命的となり、業務に大きな影響を与えることもあります。そのため、エンジニアにとって「誤って半二重にならないようにする」ことは非常に重要です。
試験では「オートネゴシエーションが失敗するとどうなるか」「全二重と半二重の違いは何か」がよく問われるので、しっかり整理して覚えておきましょう。
フロー制御の役割
スイッチは、受信したフレームを一度 バッファメモリ に保存し、MACアドレステーブルを参照して宛先へ転送します。フレームが転送されると、バッファからは削除されます。
ただし、大量のフレームが一度に到着すると、バッファが一杯になって入りきらないフレームは破棄されてしまいます。このときTCP通信であれば再送処理が行われますが、その分遅延が発生し、アプリケーションの応答が悪くなる原因となります。
こうした問題を防ぐために導入されているのが フロー制御 です。フロー制御は、スイッチのバッファが溢れる前に、送信元に「ちょっと待って」と知らせて送信を抑制する仕組みです。
フロー制御の方法は、半二重通信と全二重通信で異なります。
半二重通信でのフロー制御
半二重通信では バックプレッシャ と呼ばれる仕組みを使います。
バッファが限界に近づくと、スイッチは ジャム信号 を送信します。これを受けた送信側は CSMA/CDのルール に従い、ランダムな時間だけ待機してから再びフレームを送信します。
これはちょうど、混雑した道路に「通行止め」の信号を一時的に出して、車(フレーム)の流れを抑制するイメージです。
全二重通信でのフロー制御
全二重通信では IEEE802.3xフロー制御 が採用されています。
バッファが溢れそうになると、スイッチは送信側に対して PAUSEフレーム を送ります。送信側はこのフレームに書かれた時間だけ送信を一時停止します。バッファに余裕が戻れば、スイッチは PAUSE解除 を通知し、送信を再開できるようにします。
つまり、半二重のように「ぶつかったからやり直す」のではなく、全二重では「ちょっと待って」と直接指示する方式です。そのため効率的に制御できる点が特徴です。
固定設定とオートネゴシエーションの選択
フロー制御を理解する上で、もう一つ重要なのが 「通信モードの設定方法」 です。ネットワーク構築では「固定設定」と「オートネゴシエーション(自動設定)」のどちらを選ぶかで悩むことがあります。
実はCiscoの公式でも「固定・Autoどちらが推奨」という答えはありません。
重要なのは 両端の機器で同じ設定を使うこと です。
代表的な設計ポリシーを整理すると次のようになります。
| 接続の種類 | 設定方法 | 理由 |
|---|---|---|
| NW機器 ⇔ NW機器 | Auto ⇔ Auto | 自動最適化の結果を確認できる |
| スイッチ ⇔ PC | Auto ⇔ Auto | PCのNICはデフォルトでAuto |
| スイッチ ⇔ サーバ | サーバ側に合わせる(原則はAuto) | サーバが固定の場合は合わせる |
| NW機器 ⇔ ONU | ONU側に合わせる | キャリア機器の設定に従う必要がある |
特に重要なのは「モードの不一致を避けること」です。片方が固定で片方がAutoだと、Auto側が誤って半二重を選んでしまい、デュプレックス不一致 が起こります。
不一致を避けるための実践的な方法
実際の運用では「まずAutoで接続して、結果を確認する」ことが一番安全です。
- Autoで接続して半二重になった場合 → 相手は固定設定の可能性が高い
- Autoで全二重になった場合 → 相手側の設定が正しいかどうかを再確認できる
こうすることで、相手機器の設定ミスを早期に見抜くことができます。サーバやキャリア機器と接続する場合も、この手順を踏めばトラブルを防ぎやすくなります。
試験では「フロー制御の仕組み」「半二重と全二重で異なる動作」「デュプレックス不一致のリスク」が問われやすいので、整理して押さえておくと安心です。