この記事でわかること
- 「衝突(コリジョン)」がネットワーク上で何を指すか
- 衝突ドメイン(Collision Domain)という範囲の概念
- ハブに接続した機器が全員同じ衝突ドメインに入る理由
- CSMA/CD という衝突への対処ルールの仕組み
- スイッチがポートごとに衝突ドメインを分離する理由と、そこから生まれる全二重通信との関係
はじめに
前回の記事では、半二重(ハーフデュプレックス)と全二重(フルデュプレックス)を取り上げました。ハブは半二重、スイッチングハブは全二重という話でしたね。
今回はその続きです。「なぜハブは半二重でしか動けないのか」「スイッチはどうやって全二重を実現しているのか」―― その理由や仕組みを 「衝突ドメイン」 という観点から説明していきます。
衝突(コリジョン)について改めて
衝突については以前の記事でくわしく取り上げました。ここでは簡単におさらいします。
Collision(コリジョン) とは「衝突する」「ぶつかる」という意味で、2台以上の機器がまったく同じタイミングでデータを送り出したとき、信号がケーブル上で干渉し合い、どちらのデータも壊れてしまう現象です。1本の細い道に2台の車が反対側から同時に突っ込んでくるイメージです。
この衝突が「どの範囲で起きうるか」を表す概念が、今回のテーマである衝突ドメインです。
衝突ドメイン(Collision Domain)とは
Collision Domain の Domain(ドメイン) は「領域・範囲」という意味です。つまり衝突ドメインは、 「衝突が起きる可能性のある範囲」 を指します。
この「範囲」が広い、つまりこの範囲に存在する機器が多くなればなるほど、信号の衝突が頻繁に起こるようになります。逆に範囲が狭ければ、信号の衝突の頻度が低下します。
具体的な例を見てイメージを深めていきましょう。
ハブは1つの衝突ドメインを作る
ハブに接続したすべての機器は、1つの共通した衝突ドメインに含まれることになります。
ハブという装置は、あるポートから受け取った信号を、宛先をいっさい確認せずに「残りのすべてのポート」へそのままコピーして送り出します。ハブの内部は、いわば一本の太い道路(導線)を全員で共有しているイメージだからです。
例えば、パソコンAからパソコンB宛てにデータを送ったとしても、ハブはそれをBだけでなく、C・D・E全員に向けて同時に転送してしまいます。
この転送されている瞬間に、別のパソコン(例えばC)が「自分もデータを送ろう」として信号を送信すると、一本の道路の中でデータ同士が正面衝突してしまいます。
つまり、ハブに接続されているAからEのすべてのパソコンは、同じ「衝突が起きるリスクのある空間(衝突ドメイン)」に丸ごと入っている状態なのです。
言い換えれば、「ハブを使うと、つながっている全員が一蓮托生(いちれんたくしょう)の1つの衝突ドメインになってしまう」ということです。
CSMA/CD ── 衝突と向き合うための仕組み
衝突が起きることを前提に、「起きたらどうするか」を決めたルールが CSMA/CD です。スイッチが主流になる前、ハブが主役だった時代に使われていました。
一語ずつ分解します。
CS ── Carrier Sense(キャリアセンス)
- Carrier(キャリア):運ぶもの(ここではケーブルに流れる電気信号のこと)
- Sense(センス):感知する、察知すること
つまり、 「回線が空いているか確認する」 という意味です。回線に他の信号が流れていないことを確認した上で、データを流し始めます。 回線に信号が流れていないことを確認したうえで信号を流し始めます。
MA ── Multiple Access(マルチプルアクセス)
- Multiple(マルチプル):複数の
- Access(アクセス):接続すること、利用すること
これは、「1本の通信路をみんなで自由に共有する」という意味です。同じ回線に繋がっている機器なら、誰でも自由に信号を流すことができます。
CD ── Collision Detection(コリジョンディテクション)
- Collision(コリジョン):衝突
- Detection(ディテクション):見つけること、検知すること
これは、「データが衝突していないか見張る」という意味です。信号を送った後、他の信号とぶつかっていないかを監視します。
衝突が起きたあとの流れ
CSMA/CDの動きを順番に追ってみます。
- 確認:ケーブルが空いていると判断したら、データを送り始める
- 発生:別の機器がまったく同じ瞬間に送信を始め、データが衝突する
- 通知:衝突を検知した機器は送信を止め、周りに「JAMシグナル(衝突の通知)」を流す
- 待機:通知を受け取ったすべての機器が、ランダムな時間だけ待ってから送り直す
この「ランダムな時間」が最大のポイントです。もし全員が「1秒待つ」という同じルールにしていると、1秒後にまた同時に送り始めて再び衝突してしまいます。
待つ時間をバラバラにすることで、2回目の衝突を防ぐ工夫をしています。CSMA/CDは衝突をゼロにする仕組みではなく、「衝突した後のリカバリ方法」を定めたルールなのです。
衝突が多いとどうなるか
ハブを使った環境で機器の台数が増えてくると、衝突が頻発するようになります。
- 空き待ちの発生:誰かが通信している間、他の機器は終わるのをじっと待ちます。
- 一斉の送信:通信が終わり回線が空いた瞬間、待っていた複数の機器が一斉にデータを流し始めます。
- 衝突の悪循環:その結果、衝突が発生する確率が跳ね上がります。
衝突を検知すると、各機器はランダムな時間だけ待ってから送り直します。しかし、接続されている台数が多すぎると、たため同じ待ち時間になってしまう機器が出てきます。
すると、せっかく送り直した瞬間にまた衝突し、さらに待ち時間が延びるという最悪のループに陥ります。
ユーザーから見ると、以下のようなネットワークの遅さとして現れていました。
- 画面が重い:ウェブページの読み込みが極端に遅くなる
- 通信が途切れる:ファイルの転送が途中で止まってしまう
- 順番が来ない:特定の機器が大きなデータを送り続けると、他の機器がまったく通信できなくなる
ハブが主役だった時代、オフィスのネットワークで起きていた「通信が重い」というトラブルの多くは、このデータ衝突の多発が原因だったのです。
スイッチによる衝突ドメインの分割
スイッチングハブ(以下、スイッチ)は、ポートごとに衝突ドメインを分割します。
例えば5台のパソコンがスイッチに接続されていれば、衝突ドメインは5つです。パソコンAとスイッチの間、パソコンBとスイッチの間というように、各機器が独立した専用の通信路を持っています。つまり、1つの衝突ドメインの中には「パソコン1台」と「スイッチのポート1基」の2台(1対1)しか存在しません
パソコンAとBが同時にデータを送り始めても、経路が異なるため衝突(コリジョン)は発生しません。また、AとBが同時にパソコンD宛てにデータを送信した場合、スイッチは内部バッファ(メモリ)にデータを一時的に蓄え、順番に処理して送り出します。そのため、データ同士が衝突することはありません。
これにより、かつて使われていたCSMA/CDのような「衝突を前提とした制御」や「衝突後のリカバリ手順」は、原則として不要になります。
さらにスイッチは、ポートの番号とそこに接続されている機器のMACアドレス(機器に割り当てられた固有の識別番号)を対応付けて学習します。
AからB宛てに送られたデータは、Bが接続されているポートにだけピンポイントで転送されます。従来のハブ(リピーターハブ)のように、関係のない全ポートへ無差別にデータを流すことはありません。そのため、宛先ではないポートの機器に無駄なデータが届くのを防げます。
このようにポートごとに衝突ドメインが分割された結果、送信と受信を同時に行う全二重通信(フルデュプレックス)が可能になります。お互いの通信が干渉しないため、データを送りながら同時に受け取ることができるのです。
衝突しないのになぜ「衝突ドメイン」と呼ぶのか?
「全二重通信で衝突が完全にゼロになるなら、そもそも『衝突ドメイン』という言葉を使う必要はないのでは?」と思うかもしれません。これには技術的な理由が2つあります。
1. ルールの切り替えで復活する空間だから
全二重のときは衝突が起きませんが、設定ミスや古い機器の接続によって片方が「半二重(交互に通信する古いモード)」に切り替わると、そのポートとパソコンの間でたちまち衝突が発生します。つまり、器としての「範囲(ドメイン)」自体はそこに存在し続けており、全二重という仕組みで衝突の発生率をゼロに抑え込んでいる状態なのです。
2. ネットワークの構造を説明するのにわかりやすい言葉だから
通信の歴史と設計図のルールが残っているから現在のネットワークの仕組みは、もともと「1本のケーブルを全員で共有し、データが衝突するトラブルと戦うこと」から発展してきました。技術が進歩して衝突は起きなくなりましたが、基本となる設計図の単位として「衝突ドメイン」という名前がそのまま残っています。また、ネットワーク全体にデータが届く範囲を示す「ブロードキャストドメイン」という別の概念と区別するためにも、この言葉は今でも欠かせません。
今のネットワークにおける「衝突ドメイン」とは、「スイッチの1つのポートがカバーする、1対1の最小の通信空間」の言い換えだと捉えると理解しやすいでしょう
スイッチはどうやって衝突ドメインを分けているのか
スイッチの内部には、届いたデータを一時的にキープしておく「保管場所(メモリ)」があります
データが届くと、スイッチはそれをいったん受け取り、中身に書かれている「宛先MACアドレス」をしっかりと確認してから、正しいポートへと送り出します。ハブのように電気信号をそのまま右から左へ垂れ流すのではなく、「受け取る → 宛先を読み解く → 正しい道へ送り出す」というステップを踏んでいるのです。
この高度な処理を、スイッチ内部にある「通信専用のスピード処理チップ」が一瞬で行っています。
この仕組みがあるおかげで、各ポートの通信はスイッチの内部で完全に切り離されます。物理的に別々の独立した回線でつないでいるのと同じ状態を、1台の機器の中でスマートに実現しているのです。スイッチが「賢いハブ」と呼ばれる理由は、この内部での丁寧な仕分け作業にあります。
ハブとスイッチ、衝突ドメインの違いをまとめると
5台の機器が接続されている場合を並べます。
| 機器 | 衝突ドメインの数 | 通信方式 | 帯域の扱い |
|---|---|---|---|
| ハブ | 1つ(全台が共有) | 半二重 | 全台で割り算 |
| スイッチ | 5つ(ポートごと独立) | 全二重 | ポートごと独立 |
ハブでは、1台が通信しているあいだ、残りは全員待機です。スイッチでは、各ポートが独立しているため、複数の機器が同時に通信を行えます。現代のネットワークでハブがほぼ使われなくなったのは、この違いが積み重なった結果です。
まとめ
- 衝突(Collision) :複数の機器が同時にデータを送ることで、信号がぶつかり合ってデータが壊れてしまう現象です。
- 衝突ドメイン(Collision Domain) :「衝突が起きる可能性のある範囲」のことで、この範囲が広いほど順番待ちや衝突が増えて全体のスピードが落ちます
- ハブ :接続されたすべての機器で1つの衝突ドメインを共有するため、台数が増えるほど衝突が頻発し、通信の通り道も全員で分け合うことになります。
- CSMA/CD :衝突が起きたことを検知して送信を止め、ランダムな時間を置いてから送り直す仕組みで、衝突を防ぐのではなく「起きた後に対処する」ルールです。
- スイッチ :ポートごとに衝突ドメインを1対1に切り離し、送りながら受け取れる通信を実現することで、衝突の問題を根本から解消しています。
前回の「半二重と全二重」と今回の「衝突ドメイン」はセットで理解すると、どちらもよりクリアになります。次回はこの流れをさらに掘り下げていきます。