現代のインターネットや学内・社内のローカルエリアネットワーク(LAN)において、スムーズなデータ通信が行えるのは、高度な通信制御技術が裏側で働いているからです。
複数のコンピュータやデバイスが同じネットワーク回線を共有する場合、データの送信タイミングが重なると衝突が発生してしまいます。
このようなデータの衝突(コリジョン)を管理し、効率的に通信を行うための代表的な手法が「コンテンション方式」です。
本記事では、ネットワークの基礎知識として欠かせないコンテンション方式の仕組みや、主要な通信プロトコルについて詳しく解説します。
コンテンション方式の基礎知識
コンテンション(Contention)という言葉は、日本語で「競合」や「争奪」を意味します。
通信の世界におけるコンテンション方式とは、複数の端末が一本の通信路を共有し、早い者勝ちで送信権を獲得する制御方式のことです。
この方式の最大の特徴は、中央で通信を管理する司令塔が存在せず、各端末が自律的に通信を開始する点にあります。
端末はデータを送りたい時に、通信路が空いているかどうかを確認し、空いていれば即座に送信を開始します。
しかし、複数の端末がほぼ同時に「空いている」と判断して送信を始めると、電気信号が混ざり合い、データが破損する「衝突」が発生します。
コンテンション方式では、この衝突が起こることを前提として、衝突した際の再送ルールをあらかじめ決めておくことでネットワークの秩序を保ちます。
かつてのイーサネットや現在のWi-Fiなど、私たちが日常的に利用している通信技術の多くがこの思想に基づいています。
歴史的には、ハワイ大学で開発された無線ネットワークシステムである「ALOHA(アロハ)システム」が、この方式の原点とされています。
衝突を回避するCSMA/CDの仕組み
有線LANの標準規格であるイーサネットにおいて、長年採用されてきたのがCSMA/CD(Carrier Sense Multiple Access with Collision Detection)です。
この名称は「キャリア検知多重アクセス/衝突検出」と訳され、コンテンション方式をより高度化したものと言えます。
CSMA/CDでは、データを送信する前にまず通信路上の電気信号をチェックし、他の端末が通信中かどうかを確認します。
これを「キャリアセンス」と呼び、他者が通信中であれば送信を控えて待機します。
もし通信路が空いていれば送信を開始しますが、それでも物理的な距離による信号の伝搬遅延により、衝突が起こる可能性があります。
そこで重要になるのが「衝突検出(Collision Detection)」の機能です。
キャリアセンスの役割
キャリアセンスは、いわば「話し始める前に誰かが喋っていないか聞き耳を立てる」行為に相当します。
これにより、明らかに通信が行われている最中に無理やりデータを割り込ませるような無駄を省くことができます。
ネットワーク上の全端末がこのルールを守ることで、通信の成功確率は大幅に向上します。
衝突検出と再送処理
データの衝突を検知すると、送信側の端末はすぐに送信を中止し、ネットワーク全体に「ジャム信号」と呼ばれる特殊な信号を送出します。
このジャム信号により、他の端末も衝突が発生したことを認識し、一時的に送信を停止します。
その後、各端末は「バックオフ」と呼ばれる待機時間をランダムに設定し、その時間が経過してから再びキャリアセンスを行います。
待機時間をランダムにすることで、同じタイミングで再送を始めて再び衝突してしまう確率を最小限に抑えています。
無線通信に特化したCSMA/CA
一方で、現代の主流であるWi-Fi(無線LAN)では、CSMA/CDではなくCSMA/CA(Collision Avoidance)が採用されています。
無線通信の場合、自分自身の電波が強すぎるため、送信中に他者の電波による衝突を正確に検知することが物理的に困難だからです。
そのため、CSMA/CAでは「衝突を検出してから対処する」のではなく、「衝突を最大限に回避する」というアプローチを取ります。
衝突回避のアルゴリズム
CSMA/CAでは、通信路が空いていることを確認した後、すぐに送信するのではなく、必ず一定の待機時間を設けます。
この待機時間は「IFS(Inter Frame Space)」と呼ばれ、通信の優先度に応じて長さが調整されます。
さらに、IFSの後にランダムなバックオフ時間を加え、複数の端末が同時に送信を開始するリスクを徹底的に下げています。
ACKによる確認応答
無線環境では衝突が検知できないため、データが正しく届いたかどうかを確認する仕組みが必要です。
受信側の端末は、データを正常に受け取ると「ACK(Acknowledgment)」という確認応答信号を送信側に返します。
送信側は、一定時間内にACKが届かない場合に初めて「衝突またはエラーが起きた」と判断し、データの再送処理を行います。
RTS/CTS方式のオプション
無線LAN特有の「隠れ端末問題」を解決するために、RTS/CTSというオプション機能が使われることもあります。
隠れ端末問題とは、端末Aと端末Bが互いの電波は届かないが、中央のアクセスポイント(AP)とは通信できる状態で、同時にAPへ送信してしまう現象です。
送信前に「送信要求(RTS)」を送り、APから「送信許可(CTS)」を得ることで、周囲の端末にこれから通信を行うことを宣言し、衝突を防ぎます。
コンテンション方式と他方式の比較
ネットワークのアクセス制御には、コンテンション方式以外にもいくつかの手法が存在します。
代表的なものとして、順番待ちを行う「トークンパッシング方式」や、中央が管理する「ポーリング方式」が挙げられます。
それぞれの特徴を理解することで、なぜ現在の主流がコンテンション方式なのかが見えてきます。
| 方式名 | 主な制御方法 | メリット | デメリット |
|---|---|---|---|
| コンテンション方式 | 早い者勝ち・自律分散型 | 構成が簡単で低負荷時の効率が良い | 高負荷時に衝突が増え効率が低下する |
| トークンパッシング方式 | 送信権(トークン)を順番に回す | 衝突が発生せず、安定している | 低負荷時でも順番待ちの遅延がある |
| ポーリング方式 | 中央のホストが送信順を指定する | 確実な制御が可能 | 中央装置の負荷が高く構成が複雑 |
コンテンション方式は、ネットワークに接続される端末が少ない、あるいは通信頻度がそれほど高くない環境で非常に高いパフォーマンスを発揮します。
特別な管理装置が不要なため、ネットワーク機器を安価に製造できるという点も、普及の大きな要因となりました。
コンテンション方式の利点と欠点
コンテンション方式を導入する際のメリットとデメリットを整理しましょう。
まず大きな利点は、ネットワークへの参加や離脱が自由で、シンプルな構成が可能であることです。
端末を追加する際に設定を変更する必要がなく、ケーブルを繋ぐ、あるいはWi-Fiに接続するだけで即座に通信の列に加わることができます。
また、ネットワークが空いている状態では待機時間がほぼゼロであるため、レスポンスが非常に高速です。
一方で、欠点としては「最大遅延時間が保証されない」という点が挙げられます。
通信が極端に混雑すると、衝突と再送が繰り返され、データがいつまで経っても送れない「スループットの低下」が発生します。
リアルタイム性が厳格に求められる産業用ロボットの制御などでは、この不確実性が課題となることもあります。
現代のネットワークにおける立ち位置
「コンテンション方式は古い技術ではないか」と考える方もいるかもしれませんが、実際には進化を続けています。
例えば、有線LANでは現在、スイッチングハブの普及によって「フルデュプレックス(全二重通信)」が一般的になりました。
フルデュプレックスでは送信と受信の経路が分かれているため、物理的な衝突自体が発生しません。
そのため、最新の有線LAN環境においてCSMA/CDが実際に動作する機会は減っています。
しかし、無線LANにおいては現在もCSMA/CAが通信の根幹を支えており、Wi-Fi 6(IEEE 802.11ax)などの最新規格でも改良が加えられています。
Wi-Fi 6では、OFDMA(直交周波数分割多重接続)という技術を組み合わせることで、コンテンションによる待ち時間を減らし、多人数が同時に接続しても快適な通信を実現しています。
ネットワークエンジニアにとって、コンテンション方式の原理を理解することは、トラブルシューティングやパフォーマンス最適化を行う上で不可欠な基礎知識です。
# バックオフ時間の計算イメージ(簡易的なシミュレーション)
import random
def calculate_backoff(attempt_count):
# 衝突回数に応じて待機範囲(スロット数)を2進数で増加させる(指数バックオフ)
max_slots = 2 ** attempt_count
wait_slots = random.randint(0, max_slots)
return wait_slots
# 3回衝突した後の待機スロット数を計算
collision_count = 3
print(f"{collision_count}回衝突後の待機スロット: {calculate_backoff(collision_count)}")
3回衝突後の待機スロット: 5
上記のようなアルゴリズムが、私たちが意識しない一瞬のうちにデバイス内部で実行されています。
まとめ
コンテンション方式は、複数の端末が自律的に通信権を争う、シンプルかつ強力なアクセス制御の手法です。
有線LANでのCSMA/CD、無線LANでのCSMA/CAという形で進化を遂げ、現代の通信インフラの基盤となりました。
「早い者勝ち」という直感的な仕組みでありながら、衝突時の再送ルールを厳密に定めることで、大規模なネットワークの運用を可能にしています。
技術の進歩により物理的な衝突は回避されつつありますが、共有資源を効率的に分配するというその思想は、今もなお形を変えて生き続けています。
この記事を通じて、コンテンション方式の重要性とその仕組みについての理解が深まれば幸いです。
