はじめに
ITの勉強において、やっぱり全範囲を網羅的に勉強しようと思ってもなかなか、先輩・上司に追いつき追い抜くことって時間がかかるものです。そのせいでモチベーション下がったり……
だったら、1つのことに1点集中して『これに関しては同レベルor自分の方が上だ!』と思える領域を少しずつ作っていきましょう!それを続けていけば、どんどんどんどん勝てる領域が多くなり、気づいたら自分が行きたい未来に辿りつきます!
じゃあ今日は、「CSMA/CAにおける『ACK制御方式』」について教えてください。ちなみにみんなはこれを説明できる??なので、今日はこれを教えてください!
了解じゃ!一言で言うと
『CSMA/CA方式におけるACK制御方式とは、送信ステーションがデータを送信し、受信ステーションからACK(確認応答)を受け取ることで通信が成功したかを確認する方法です。で、送信ステーションはデータ送信時にNAV(通信予約時間)を通知することで、他のステーションが送信を控え、結果的に衝突を回避する仕組みになっている』じゃ!では、ネスペ合格レベルを目指す方は以下で詳しく見ていくぞ!
基本知識
ACK制御方式(Acknowledgement)は、CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)方式における通信確認手段です。ACK(Acknowledgement、確認応答)とは、データフレームが正常に受信されたことを送信者に知らせるための応答フレームです。特に無線LAN(Wi-Fi)などの媒体共有型では、衝突が発生しやすいため、送信の成功を確認するためにACK制御が用いられます。
CSMA/CA(搬送波感知多重アクセス/衝突回避)とは名前の通り、衝突を検知するものではなく、回避する方法です。
ACK制御の流れ
では、ACK制御の流れを見ていきましょう!
手順 1: 通信状況確認
送信ステーションが通信中の他のステーションがあるかどうかを確認します。
通信中のステーションがあるかどうかを確認している状態をキャリアセンスといます。
手順 2: ランダム時間待つ
通信中のステーションがないことが分かったら、送信前にランダム時間待ちます。また、このランダム時間のことをコンティションウィンドウやバックオフウィンドウと呼びます。
この仕組みがあることで、複数のステーションが同時にチャネルが空いたと判断し、データを一斉に送信してしまうことを防ぎます。
手順 3: NAVの設定と送信
実際にデータフレームを送信します。そして、そのフレームのデュレーション領域にはNAV(Network Allocation Vector)を格納します。このNAVには、送信ステーションが通信を行うために必要とする時間が設定されており、これを「通信予約時間」と呼びます。
手順 4: 他のステーションによるNAVタイマーの更新
他のステーションは、送信されたフレームのNAV値を読み取り、自身のNAVタイマーを更新します。これにより、指定されたNAVが満了するまではそのチャネルの使用を控え、衝突の発生を抑えることができます。
NAVタイマーの更新とは「自身のNAVタイマーに設定すること」です。こうすることで、衝突の回避になります。
手順 5: ACK(確認応答)フレームの送信
送信ステーションからAPまで正常に通信できた場合は、APから送信元ステーション(AP→送信ステーション)にACKフレームを送信します。このACKフレームは「データを受信しました」という確認信号です。
手順 6: 再送
送信後、一定時間内にACKフレームが受信できなかった場合、送信ステーションはデータフレームの再送を行います。
無線LANでは電波干渉や衝突によりACKが届かないこともあるため、この再送処理は通信の信頼性を確保するために重要な役割を果たします。
隠れ端末問題
ここまでの流れで分かるように、衝突の回避にはステーション間でのNAVが大きな役割を果たしています。しかし、距離的に離れたステーション間ではNAV値が格納されたフレームが届きません。そのため、NAVを使っても衝突を回避できなくなってしまうのです。これが、「隠れ端末問題」です。
無線LANには「すべてのステーションが無線信号を受信できる」性質があり、NAVの仕組みにより、データが自分宛てでない場合でも通信を控えるようになっています。しかし、「隠れ端末問題」が発生する場合があります。
例えば、ステーションAとステーションBが同じアクセスポイントに接続しているが、距離が遠く直接の電波が届かない場合、Aが通信を開始してもBはそれに気付かず、同時に送信を始めてしまう可能性があります。このとき、APで衝突が発生し、通信が失敗することがあります。
この問題に対処するため、RTS/CTS(Request to Send / Clear to Send)方式が利用されます。これは、「個々のステーション間では無理でも、APを介すことで、すべてのステーションとつながりを持てるでしょ!」という考え方から隠れ端末問題を防ぐ方式です。
まとめ
要するに…
CSMA/CA方式における「ACK制御方式」は、無線LANのデータ送信が成功したかどうかを確認し、通信の衝突を避けるための重要な仕組みです。
この方式では、①まず送信ステーションが送信前にチャネル(通信路)の状況を確認し、他のステーションが現在通信中でないことを確認します。無線LANは物理的に1つのチャネルを複数のデバイスが共有するため(媒体共有型)、複数のステーションが同時に送信を試みると衝突が発生し、データが正しく届かない可能性が高くなります。そこで、CSMA/CA方式では送信前に空き状況を確認し、さらに「衝突を避ける手段」として②ランダムな待機時間を設けます。この待機時間は「バックオフ時間」とも呼ばれ、送信ステーションがコンテーションウィンドウ(CW)と呼ばれる範囲内からランダムに選ばれた時間だけ待機する仕組みです。これにより、複数のステーションが同時にデータ送信を試みても、ランダムに異なる待機時間が設定されるため、衝突の可能性が低くなります。③バックオフ時間を待機した後、送信ステーションはデータフレームを送信します。このデータフレームには「NAV」(Network Allocation Vector)と呼ばれる通信予約時間の情報が含まれています。NAVは、他のステーションがどれくらいの間通信を控えるべきかを示しており、この時間内は他のステーションが送信を控えるため、結果的に衝突を避ける効果があります。④NAVを受信した他のステーションは、その時間を自分のNAVタイマーに設定し、タイマーがゼロになるまでは送信を控えるようにします。送信されたデータフレームが受信ステーション(通常はアクセスポイント)に正しく届くと、⑤受信ステーションは「ACK」(Acknowledgement)フレームを送信側に返します。このACKフレームは、データが正常に届いたことを送信側に伝える確認応答であり、送信側はACKを受け取ることで通信が成功したと判断します。逆に、送信ステーションがACKフレームを一定時間内に受け取れなかった場合は、通信が失敗したとみなし、⑥再送処理を行います。
ただし、無線LAN環境では「隠れ端末問題」と呼ばれる課題があり、ACK制御方式だけでは衝突を完全には防げない場合があります。隠れ端末問題とは、物理的に離れたステーション同士が互いの存在を認識できず、同じタイミングで通信を開始してしまい衝突が発生する現象です。例えば、2つのステーションが同じアクセスポイントに接続しているものの、お互いの電波が届かない位置にある場合、どちらか一方がNAVを設定しても、もう一方はその情報を受け取れないため、通信が重なって衝突する可能性が高まります。この問題を解決するために、CSMA/CA方式には「RTS/CTS方式」が用意されています。これは、「個々のステーション間では無理でも、APを介すことで、すべてのステーションとつながりを持てるでしょ!」という考え方から隠れ端末問題を防ぐ方式です。
色々と紹介しましたが要するに、CSMA/CA方式におけるACK制御方式は、無線LAN特有の通信衝突の課題を回避し、通信の成功を確認するための基礎的な仕組みとして重要な役割を果たしています。
おわりに
本日は『CSMA/CAにおけるACK制御方式』について知見を深まりました!
やはり、知識をつけることは大切じゃからのぉ。知識があれば大抵のことはできる。逆に知識がなければ、できるもんもできない。これが世の理じゃよ。
でも、焦らず、1つずつ・1っ歩ずつ進んでいくことが大切じゃ!これからも一緒に頑張っていこう!