図9●無線LANのアクセス制御であるCSMA/CA(Carieer SenseMedia Access with Carrier Avoidance)方式を使ってデータ送受信する例。
イーサネットと異なり送信側は衝突を検出できない。そこで,受信側がACK(Acknowledgment)という「受信完了通知」を送ることで制御する。(1)誰も送信していないことを検出した端末Aがデータを送信。アクセスポイントはデータを受信し,端末Bは他の端末が送信していることを知り,自分の送信を控える。(2)アクセスポイントは正常にデータを受け取ったことを示すACKを送る。これにより,端末Aは送信の完了を認識し,端末Bは自分の送信を準備する
図10●異なる端末が同時に通信を開始した場合。
CSMA/CA方式では衝突が起こった場合,ACKが返ってくるまでリトライする。それぞれの端末がランダムな時間だけ待って,もう一度データを送信する。イーサネットのCSMA/CD方式が衝突を検出するのに対して,CSMA/CAでは衝突が起こったと推定する
図11●衝突を効率よく制御するRTS/CTS(Request toSend/Clear to Send)方式。
データを送信する前に,アクセスポイントから送信優先権(CTS)をもらって通信する。CTSを受け取った末がデータを送ることができる。受信側(この場合はアクセスポイント)はデータを受け取ったらACKを返す
図12●無線LANの宿命である隠れ端末問題。
端末が「誰も送信していない」と思っても,アクセスポイントに同時にデータがやってくることもある。各端末がアクセスポイントと十分な強さの電波で通信できていても,各端末がそのアクセスポイントにつながっているすべての端末の電波を受信できているとは限らない

データのアクセス制御

 次に,実際にデータを送受信する場合の制御方法に話しを移そう。無線LANの場合,端末Aが端末Bにデータを送るときには,まずネットワークを監視し,データが流れていないことを確認する。別の端末がデータを送っていれば,それが終わるまで待つ。これが基本動作である。

 ただ,互いの無線LAN端末がたまたま同じタイミングでネットワークが空いていると判断してしまうことがあり得る。この場合,それぞれの端末が送信したデータがネットワーク上で衝突してしまう。

 イーサネットでは,ネットワーク上で衝突が発生するとデータフレームが壊れる。あて先アドレスが壊れたフレームはネットワーク上をさまよい,だれかがそのフレームを受け取る。壊れたフレームを受け取った端末は,(すでに送信元が誰かもわからないため)ネットワーク全体にジャムと呼ぶ信号を送出する。本来の送信元だった端末は,このジャム信号を受信することで自分のデータが衝突し,送信に失敗したことを知る。これがイーサネットの衝突検出である。

 ところが無線の場合,電波の信号レベルの変動が激しいため,衝突により信号そのものが消失してしまうことがある。このため衝突を検出できるとは限らない。

 そこで802.11で採用したのは,衝突を検出する代わりにデータ送受信の成功を通知する方法である(図9[拡大表示])。送信された電波(データ)は,電波が届く範囲にいる端末すべてが受信する。この電波を受信した端末は,自分たちは待つ必要があると判断でき,データ送信を控える。

 データの受け手であるアクセスポイントは,正常に受信し終わったところでACK(Acknowledge)を送出する。送信元端末にとってはACKが送信成功を示すサインとなる。他の端末はACKでネットワークが使用可能になったと判断できる。この方法を,CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance:キャリア検知多重アクセス/衝突回避)方式と呼ぶ。失敗を通知するイーサネットに対し,無線LANでは成功を通知するという方法を採る。

効率の良い制御と隠れ端末問題

 とはいえ,衝突の可能性はゼロではない。実際に衝突が起こった場合はどうなるかを示したのが図10[拡大表示]である。衝突を検出する機構がないため,衝突が発生しても受け手であるアクセスポイントは送られたフレームを無視するだけだ。一方,データを送信した端末A,端末Bは一定時間待ってもACKが返って来ないため,送信に失敗したと判断する。それぞれの端末は,ランダムな時間待って再び送信する。図9の(1)に戻るわけだ。

 ただし,端末数が増えてトラフィックが増大してくると,この方式では効率が悪い。失敗した場合に一定時間待ってリトライするためだ。そこで,もっと明示的に送信の成否を判断できるようにしたのがRTS(Request to Send)/CTS(Clear to Send)と呼ぶ方式である(図11[拡大表示])。

 これは図9のプロセス,つまりデータを送信する前に行われる。データを送ってよいかをあて先に問い合わせ(RTS),許可を得て(CTS)からデータフレームを送る方式だ。他の端末は,別の端末あてのCTSを受け取ってから,次にACKが送られてくるまでの間は確実に送信できないとわかり,衝突の危険性を軽減できる。

 RTS/CTS方式は,単に衝突を回避するためだけのものではない。無線LAN特有の隠れ端末問題に対する有効な解でもある(図12[拡大表示])。インフラストラクチャ・モードでは,同じアクセスポイントを利用する無線LAN端末が互いの電波が届く範囲に設置されなくてもよい。アクセスポイントとの間で電波が届けばよい。このため,アクセスポイントの電波は受け取れるが,他の端末の電波は受け取れないケースが考えられる。これが隠れ端末問題だ。図9の(1)の端末Bのように,端末Aが送信中であることを検知できるとは限らない。そこで,すべての端末と交信できるアクセスポイントがCTSを送ることで送信の成否を確実に通知する。

 しかし,短いデータを送受信する場合,RTS/CTSはオーバーヘッドにもなり得る。直接データを送ってしまった方がネットワークの占有時間が短くなるケースもある。多くの無線LAN機器はデータの大きさでRTSを先に送るか,データをいきなり送信するかを使い分けている。