CSMA/CA
無線LANなどで使われる媒体アクセス制御方式である。媒体の使用状況の確認とランダムな時間の待機を組み合わせ、複数の機器が同時に送信し始める確率を下げる。
イマシルちゃんの解説
無線LANでは、近くの機器が同じ周波数を共有しているよ。
複数の機器が同時に送ると、受信側がデータを正しく読み取れないことがあるんだ。
その衝突を起こりにくくする送信のルールがCSMA/CAだよ。
まず、ほかの機器が電波を使っている間は送信を待つの。
ただ、空いた瞬間にみんなが送るとまた重なってしまうから、それぞれ待つ長さを無作為に選んで送信開始をずらすんだ。
こうして送る前に譲り合うことで、同じ周波数を使う機器どうしが通信できるようにしているんだよ。
この解説はわかりやすかったですか?
より深い解説
定義
CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance:搬送波感知多重アクセス/衝突回避)は、IEEE 802.11の無線LANで使われるメディアアクセス制御の方式である。複数の機器が同じ周波数を共有して通信するときに、送信がぶつからないようにする。
送信の手順
- キャリアセンス:送信の前に、電波が使われていないか(ほかの機器が送信していないか)を確認する
- 待機:使われていなくても、一定の時間(DIFS)に加えて、ランダムなバックオフ時間を待つ
- 送信:待っている間に電波が使われなければ、送信する
- 確認応答:受信側は、正しく受け取ったらACKを返す。ACKが返らなければ、衝突などで失敗したとみなし、バックオフ時間を広げて再送する
複数の機器が同時に「空いた」と判断しても、ランダムな待ち時間の違いによって、送信のタイミングがずれ、衝突が起きにくくなる。
CSMA/CDとの違い
| CSMA/CD | CSMA/CA | |
|---|---|---|
| 使われる場所 | 初期の有線イーサネット(半二重) | 無線LAN |
| 衝突への対応 | 送信中に衝突を検知(Detection)し、すぐに送信をやめて再送する | 衝突を検知するのではなく、事前に回避(Avoidance)する |
| 送信の確認 | 衝突を検知しなければ成功とみなす | ACKで成功を確認する |
無線では、自分が送信している間は自分の強い電波にかき消されて、ほかの機器の電波を受信できないため、衝突を検知することが難しい。そのため、衝突の検知ではなく、回避の方式が使われる。「無線LANの信号レベルで衝突を検知するCSMA/CD方式」という説明は誤りである。
なお、現在の有線イーサネットは、スイッチと全二重通信が使われるため、CSMA/CDはほとんど動作していない。
隠れ端末問題とRTS/CTS
アクセスポイントからは両方の端末の電波が届くが、端末同士は互いの電波が届かない場合、キャリアセンスをしても相手の送信に気づけず、アクセスポイントで衝突が起きる。これを隠れ端末問題という。
対策として、送信の前に、送信要求(RTS)を送り、アクセスポイントが送信許可(CTS)を返す仕組み(RTS/CTS)を使う。CTSは周りのすべての端末に届くので、ほかの端末はその間、送信を控える。
無線LANの関連規格の区別
| 規格・方式 | 内容 |
|---|---|
| CSMA/CA | 送信の衝突を回避するアクセス制御 |
| IEEE 802.1X | EAPを使って端末を認証する枠組み |
| WPS | 接続設定を簡単に行う仕組み |
| WPA2 / WPA3 | 暗号化と認証のセキュリティ方式 |
媒体の確認と送信権の違い
CSMAは、送信前に媒体が使用中かを調べる考え方である。CSMA/CDでは衝突を検出した後、ランダムな時間を待って再送する。直ちに同時再送すると、再び衝突しやすい。
トークンパッシングは、トークンという送信権を持つ端末が送信する方式である。使用状況を確認して競合を避ける考え方とは、送信機会の決め方が異なる。