802.11 標準では、接続手順には、デバイスを Wi-Fi ネットワークの一部にし、ネットワーク内で通信するために実行する必要がある 3 つの主要な手順が含まれています。その3つのステップは、デバイスの検出(スキャン)、デバイス認証(接続前に互換性機能などを確認する)、そして最後に接続を確立する(関連付け)です。今後、この投稿では各ステップの詳細を提供します。接続手順でのメッセージのやり取りを以下に示します。
図 1.オープンシステムでの接続プロセス
図 2.接続プロセスでのメッセージ交換
図2は、接続時のクライアントとAPデバイス間のメッセージ交換手順のWi-Fiスニファログを示しています(ここでは、クライアントデバイスはXiaomi、APはMarvellデバイスです。
ネットワークに参加するには、まずクライアントまたはステーションがネットワークを見つける必要があります。有線ネットワークでは、ケーブルまたはジャックを差し込むだけでネットワークが見つかります。ワイヤレスの世界では、参加プロセスを開始する前に、互換性のあるネットワークを特定する必要があります。このネットワークの識別プロセスは、 スキャンと呼ばれます。
スキャンプロセスにはいくつかのパラメータが必要です。これらのパラメータは、BSSType、BSSID、チャンネルリスト、スキャンタイプ、MinChannelTime、MaxChannelTimeです。パラメータは、メーカーのWi-Fiドライバに応じてデフォルトとして設定されますが、ユーザーが変更することができます、つまり、要件が非表示のネットワークの場合、アクティブスキャンは非表示のネットワーク(SSIDをブロードキャストしないネットワーク)には役立たないため、scantypeパラメータをパッシブスキャンとして設定できます。
スキャン方法には、パッシブスキャンとアクティブスキャンの2つがあります。
デフォルトでは、無線は、運用国で許可されているすべてのチャネルで両方のタイプのスキャンを実行します。デフォルトではどちらのタイプのスキャンも使用できますが、アクティブスキャンは、地域の政府の規制で送信が許可されているチャネルによってのみ実行されます。ライセンスなしの使用が許可されていないチャンネルは、アクティブスキャンから除外されます。
図 3.ビーコンフレーム
ビーコンフレームの必須フィールドの説明。
この情報は、パッシブ スキャン中に潜在的なクライアントだけでなく、BSS に既に関連付けられているクライアントによっても使用されることに注意してください。
パッシブスキャンは、クライアントがビーコンをリッスンして待つ必要があるのに対し、APを見つけるためにアクティブにプローブするよりも、通常、より時間がかかります。パッシブ スキャンの別の制限は、クライアントがチャネルで十分な時間待機しない場合、クライアントが AP ビーコンを見逃す可能性があることです。
アクティブスキャンモードでは、ステーションは引き続き各チャネルを順番に通過しますが、APからの信号を受動的に聞く代わりに、ステーションはこのチャネルで利用可能なネットワークを尋ねることを目的としたプローブリクエスト管理フレームを送信します。IBSS 内の AP またはアクティブ ステーションがその周波数を示している場合は、プローブ応答フレームで応答する必要があります。
図 4. スキャン方法
プローブ要求が発信ステーションによって送信されると、プローブタイマーのカウントダウンが開始され、応答を待ちます。このプローブタイマーの値は、通常、ビーコン間隔よりもはるかに短くなります。一般的な値は 10 ミリ秒の範囲です。タイマーの終了時に、ステーションは受信した回答を処理します。応答が受信されなかった場合、ステーションは次のチャネル(異なる周波数)に移動し、同じ検出プロセスを繰り返します。
プローブ要求の目的は、通常、AP とそれがサポートするネットワーク (SSID や BSSID) を検出することです。
図 5. プローブ要求/応答フレーム
このフレームには、主に SSID と移動局がサポートするレートの 2 つのフィールドが含まれています。プローブ要求を受信したステーションは、この情報を使用して、要求元のステーションがネットワークに参加できるかどうかを判断します。
プローブ応答フレームフィールドは、モバイルステーションがパラメータを一致させてネットワークに参加できるようにするビーコンフレームフィールドと非常によく似ています。
プローブ要求/プローブ応答交換、またはビーコンのリッスンによってネットワーク検出を実行した後、ネットワークに参加したいステーションは、アクセスポイントと認証フレームを交換する認証プロセスを通過します。認証フレームを受信すると、APは確認応答を送信し、次に認証応答を送信します。
「認証」フレームの最初の目的は、デバイス タイプを検証すること、つまり、要求元のステーションがネットワークに参加するための適切な 802.11 機能を持っていることを確認することです。
オープンシステム認証:機能に関連する情報は、認証リクエストを使用してステーションとAP間で交換されます。要求が受け入れられると、APは認証応答で「成功」を送信します。
共有キー認証:IEEE 802.11-1997標準には、「共有キー」と呼ばれるWEP共有キー交換認証メカニズムが含まれていました。この共有キー交換により、デフォルトのオープンシステム認証にさらに 2 つのフレームが追加され、4 フレームの交換が行われます。この後者の方法は共有キー認証と呼ばれ、WEP 暗号化の使用が必要であり、現在では広く使用されていません (また、推奨されません)。
認証の第 1 フェーズは上記で説明されていますが、WPA または WPA2 が使用されている場合は、認証の第 2 フェーズ (つまり、4-way handshakeing process) は、デバイスが関連付けられた後に行われます。
オープンシステム認証と共有鍵認証の詳細については、802.11 セキュリティの投稿 を参照してください。
図 6.認証フレーム
上記のように、認証フレームは次のフィールドで構成されています。
802.11 認証フェーズが成功の結果で完了すると、ステーションはアソシエーション フェーズに移行します。この交換の目的は、ステーションがネットワークに参加し、アソシエーションID[AID]を取得することです。
図 7.関連付けリクエスト
図 8.アソシエーションレスポンス
アソシエーション解除フレーム(DA)は、アソシエーションを解除するステーションのユニキャストMACアドレス、またはAPがネットワーク内のすべてのステーションのアソシエーションを解除する必要がある場合のブロードキャストアドレスです。ユニキャストフレームの場合、フレームは受信局によって確認され、ブロードキャストフレームは確認されません。
図 9.アソシエーション解除フレーム
Disassociation フレームは非常に小さいです。これには、「理由コード」というフィールドが 1 つだけ含まれています。
関連付けが解除されたステーションは、引き続き認証されます。新しい Association リクエスト フレームを送信して、認証済みステータスを保持したまま、再関連付けを試みることができます。別のセルにローミングするステーションは、認証されたステータスを保持し、認証タイムアウトが期限切れになる前に同じセルに戻るときにプロセスを加速できるように、関連付け解除フレームを使用することも選択できます。
図 10.アソシエーション解除フレーム交換
このフレームは、パラメータが変更され、ステーションまたは AP が通信パラメータを再ネゴシエートする必要がある場合にも使用されます。
図 11.認証解除フレーム交換
ローミングとは、802.11 ワイヤレス ネットワークのコンテキストでは、クライアントが確立された Wi-Fi ネットワークの関連付けを、接続を失うことなく、同じ拡張サービス セット (ESS) 内の 1 つのアクセス ポイントから別のアクセス ポイントに移動するプロセスです (例:定義された時間間隔内、通常は数秒の範囲)。パフォーマンスを向上させるには、ローミング時間を短くする必要があります。
ローミング プロセスでは、モバイル デバイスは関連付け解除フレームを以前に関連付けられたアクセス ポイント(AP)に送信し、デバイスが接続する別のアクセス ポイントと 802.11 フレームを交換することで再関連付けプロセスを開始します。クライアントデバイスは別のAPをスキャンし、認証フレームを交換した後、再アソシエーション要求を送信しますが、ここではアソシエーションの代わりに再アソシエーション要求が使用され、接続プロセスの最初の2つのステップは同じままです。
図 12.ローミング プロセスでのメッセージ交換
図 13.ローミング表現
次の表は、NXP i.MX RT SDKで接続および切断プロセスに使用できるAPIの一部を示しています。
テーブル 1.SDK で使用できる API
| API | 形容 | から呼び出すことができます |
| wifi_send_scan_cmd | 使用可能なネットワークをスキャンするために使用されます。単一のSSIDベースのスキャンのみをサポートします。これを複数のSSIDのリストに拡張できます。 | ステーションとAP |
| wlan_add_network | 既知のネットワークのリストに特定のネットワークプロファイルを追加します。 | ステーションとAP |
| wlan_remove_network | 既知のネットワークのリストから特定のネットワークプロファイルを削除します。 | ステーションとAP |
| wlan_connect | 特定のネットワーク(AP)に接続します。 | 駅 |
| wlan_disconnect | ステーションをネットワーク(AP)から切断します。 | 駅 |
| wlan_start_network | 特定のネットワークを開始します。 | AP |
| wlan_stop_network | 特定のネットワークを停止します。 | AP |
このようなAPIの詳細については、ドキュメント「MCUXpresso_SDK_WLAN_Driver_Reference_Manual.pdf」を参照してください。場所