メインコンテンツまでスキップ

11. ALTERNATE-SERVER Mechanism (代替サーバーメカニズム)

本セクションでは、サーバーがクライアントを別のサーバーにリダイレクトできるようにするSTUNのメカニズムについて説明します。この拡張はオプションであり、使用法では、この拡張を使用するかどうか、またいつ使用するかを定義しなければなりません (must)。

この拡張を使用するサーバーは、エラーコード300 (Try Alternate) のエラー応答メッセージでリクエストメッセージに応答することにより、クライアントを別のサーバーにリダイレクトします。サーバーは、エラー応答にALTERNATE-SERVER属性を含めなければなりません (MUST)。エラー応答メッセージは認証されてもよいです (MAY)。ただし、ALTERNATE-SERVERが使用される場合によっては、応答を認証することが不可能または実用的でない場合があります。

この拡張を使用するクライアントは、300 (Try Alternate) エラーコードを次のように処理します。クライアントは、エラー応答内のALTERNATE-SERVER属性を探します。見つかった場合、クライアントは現在のトランザクションを失敗と見なし、属性で指定されたサーバーで、以前のリクエストに使用したのと同じトランスポートプロトコルを使用してリクエストを再試行します。そのリクエストが認証される場合、リダイレクトを実行したサーバーに送信されたときに、リクエストが行われるはずだったサーバーでクライアントが使用したのと同じクレデンシャルを利用しなければなりません (MUST)。クライアントが過去5分以内にこのリクエストを送信しようとしたサーバーにリダイレクトされた場合、リダイレクトを無視し、トランザクションが失敗したと見なさなければなりません (MUST)。これにより、リダイレクトループの場合にサーバー間の無限のピンポンが防止されます。