- ベストアンサー
無線LANの隠れ端末問題では、RTS/CTSを利用する訳ですが、
無線LANの隠れ端末問題では、RTS/CTSを利用する訳ですが、 そもそも、RTSを出すことでが電波衝突の原因になるのではないでしょうか? つまり、隠れ端末Bが通信中であることに気づかす、端末AがRTSを出してしまい、 RTSが端末Bの通信を台無しにするのではないでしょうか? RTSを出す前に、我慢して、DATA通信の最大時間、アクセスポイントからの ACKの送信があるのを待ち続けるのでしょうか? どの説明もRTSを出すところからの説明であり、それが衝突しないようにする説明が ないようです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
先の回答で基本的な端末A/BのRTS/CTS・ACK関係の説明がありますので、重複は避けて説明します。 適切な解説サイトが見付かりませんので、簡単に概要を記すると APは常に端末Bの通信を実施しているのでは無く、一定パケット単位で通信を実施しています。 この一定のパケットの間に他からの通信要求が無いか、一定の間隔で通信要求の受付を行い端末Aが通信要求を発呼してAPが端末Aの要求を確認したら、端末Bのデータ通信中でも端末Aのデータ通信を可能にしています。発呼・起呼の関係で通信制御されています。 時間分割で端末A/Bのデータ通信と他からの通信要求の受付を実効しているので、キャリア衝突(端末Bの通信を台無しにする)の可能性は極めて低くなります。 この時間分割のデータ間隔がスロット単位で取り決められているので、端末AはRTS/CTSの制御で端末Bや他の端末C~・・・Zの通信に関係無くAPのサービスを受け付けられるのです。 詳しくは、IEEE 802.11シリーズ;Wi-Fi(ワイファイ)で規格化されているので興味があれば調べてみてください。 無線LAN http://ja.wikipedia.org/wiki/%E7%84%A1%E7%B7%9ALAN
その他の回答 (2)
- semikuma
- ベストアンサー率62% (156/251)
> 問題は、「Carrier Sense」しても、キャリアが検出できないので、隠れ端末問題が起きるのでは ないでしょうか? その通りです。 > この「バックオフタイマ」が何者ものか、よく分からないのです。 CSMA/CAの基本中の基本であり、無線LANに限らずパケットの衝突を防ぐ仕組みの根幹です。 イーサネットなど有線通信で用いられるCSMA/CDでは、Carrier Senseしてメディア(ケーブル)がビジーでなければすぐにパケットを送信します。 複数の端末が同時にパケットを送信すれば、パケットが衝突するので、ダムハブであればハブがビジー信号を発して、全ての端末に送信を止めさせます。 パケットの衝突を検知した端末は、(一定ではなく)ランダムな時間待って、送信を再開します。 待ち時間はランダムなので、複数の端末が同時に送信を再開する確率は低くなり、衝突が回避できます。 このランダムな待ち時間を設定するのが「バックオフタイマ」です。 尚、現在の有線LANではスイッチングハブが普及してメディアを共有することがなくなったので、CSMA/CDはほとんど使われなくなりました。 IEEE802.3委員会は元々CSMA/CDを標準化する委員会であり、10BASE-T以前の昔はイーサネット=CSMA/CDでしたが、100BASE-TXでは必須でなくなり、ギガビットイーサ以降はCSMA/CDは標準ですらなくなりました。 一方無線LANでは、『空間』というメディアを共有せざるを得ないので、CSMA/CAが使われます。 CSMA/CDとの最大の違いは、全ての送信の前にバックオフタイムを入れることです。 無線は有線よりも遥かに隠れ端末の存在確率が大きいためです。 (これもあって一般に無線は有線よりも遅い)。 尚、有線でも無線でも、正しく受信できたときは必ずACK(受信確認)を返信します。 従って、自分へのACKがないということは、他の端末が通信中の確率が高いといえます。 ACKの返信がないときは、パケットの衝突などで正しく受信できなかったものとして、一定時間(無線なら+バックオフタイム)後に再び同じパケットを送信します。
- semikuma
- ベストアンサー率62% (156/251)
> 隠れ端末Bが通信中であることに気づかす、端末AがRTSを出してしまい、 RTSが端末Bの通信を台無しにするのではないでしょうか? その通りです。 無線LANはメディアを共有するため、他の端末の通信を邪魔しないよう、CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)方式を採用しています。 これから送信しようとする無線端末はいきなりRTSを送信するわけではなく、先ず他の端末が通信中でないか、一定時間Carrier Senseをします。 そして他の通信を検知できないとき、初めてRTS信号を発します。 アクセスポイントAPは通信中でなければ、CTSまたはACKを返して、通信が開始されます。 ここで、APが端末Bと通信中であった場合、端末AのRTS信号により端末Bの信号が正しく受信できないので、APはACKもCTSも送信しません。 端末BはACKが返らないので、再び同じ信号を送信します。 端末AはACKもCTSも来ないので、端末BへのACKを受信するまでひたすら待ちます。
補足
早々のご回答ありがとうございます。 >これから送信しようとする無線端末はいきなりRTSを送信するわけではなく、先ず他の端末が通信中でないか、 一定時間Carrier Senseをします。 問題は、「Carrier Sense」しても、キャリアが検出できないので、隠れ端末問題が起きるのでは ないでしょうか? この一定時間は、「DIFS」や「PIFS」とは違うようで、「バックオフタイマ」とよばれているもののように思うのですが、この「バックオフタイマ」が何者ものか、よく分からないのです。 論理的な、最大伝送時間であれば、 >ここで、APが端末Bと通信中であった場合、端末AのRTS信号により端末Bの信号が正しく受信できないので、APはACKもCTSも送信しません。 の「通信中」であるはずはないです。 つまり、最大伝送時間待って、その間にackが無ければ、「伝送中ではない」と言え、それを待って、RTSを送信すれば、「通信中」のはずがありません。 「一定時間」、「バックオフタイマ」、このあたりが分かれば、すっきりします。 もう少し、教えていただけると助かります。
お礼
詳細にご回答いただきありがとうございます。 大変、勉強になりました。