Session-initiation-protocol-messaging
SIP-メッセージング
SIPメッセージには、*要求*と*応答*の2つのタイプがあります。
- 要求の開始行には、要求を定義するメソッドと、要求の送信先を定義するRequest-URIが含まれます。
- 同様に、応答の開始行には応答コードが含まれます。
リクエスト方法
- SIPリクエスト*は、通信を確立するために使用されるコードです。 それらを補完するために、一般にリクエストが成功したか失敗したかを示す* SIP応答*があります。
METHODSとして知られるこれらのSIP要求により、SIPメッセージが機能します。
- メソッドは、特定のアクションが別のユーザーエージェントまたはサーバーによって実行されるように要求するため、SIPリクエストと見なすことができます。
- 方法は2つのタイプに区別されます-
- コアメソッド
- 拡張メソッド
コアメソッド
以下に説明するように、6つのコアメソッドがあります。
招待する
INVITEは、ユーザーエージェントとのセッションを開始するために使用されます。 つまり、INVITEメソッドは、ユーザーエージェント間のメディアセッションを確立するために使用されます。
- INVITEには、メッセージ本文に発信者のメディア情報を含めることができます。
- INVITEが成功応答(2xx)を受信したか、ACKが送信された場合、セッションは確立されたと見なされます。
- INVITE要求が成功すると、2つのユーザーエージェント間に dialog が確立され、セッションを終了するためにBYEが送信されるまで続行されます。
- 確立されたダイアログ内で送信されるINVITEは、 re-INVITE として知られています。
- Re-INVITEは、セッションの特性を変更したり、ダイアログの状態を更新したりするために使用されます。
招待の例
次のコードは、INVITEの使用方法を示しています。
BYE
BYEは、確立されたセッションを終了するために使用される方法です。 これは、セッションを終了するために、呼び出し元または呼び出し先のいずれかが送信できるSIP要求です。
- プロキシサーバーから送信することはできません。
- BYE要求は通常、プロキシサーバーをバイパスして、エンドツーエンドでルーティングします。
- BYEは、保留中のINVITEまたは確立されていないセッションに送信できません。
登録
REGISTERリクエストは、ユーザーエージェントの登録を実行します。 この要求は、ユーザーエージェントによってレジストラーサーバーに送信されます。
- REGISTERリクエストは、指定されたドメインの信頼できるレジストラに到達するまで転送またはプロキシされます。
- 登録されているユーザーの To ヘッダーにAOR(レコードのアドレス)が含まれています。
- REGISTER要求には期間(3600秒)が含まれます。
- あるユーザーエージェントは、別のユーザーエージェントに代わってREGISTER要求を送信できます。 これは*サードパーティ登録*と呼ばれます。 ここで、 From タグには、 To ヘッダーで識別されたパーティーに代わって登録を送信するパーティーのURIが含まれています。
キャンセル
CANCELは、確立されていないセッションを終了するために使用されます。 ユーザーエージェントはこのリクエストを使用して、以前に開始された保留中のコールの試行をキャンセルします。
- ユーザーエージェントまたはプロキシサーバーのいずれかで送信できます。
- CANCELは、ホップごとの要求です。つまり、ユーザーエージェント間の要素を通過し、次のステートフル要素によって生成された応答を受け取ります。
ACK
ACKは、INVITEメソッドへの最終応答を確認するために使用されます。 ACKは、INVITEで利用できない場合、常にINVITE.ACKの方向に進みます。
- ACKは、最初のINVITEですでに送信されたメディア記述を変更するために使用することはできません。
- ACKを受信するステートフルプロキシは、ACKを別のプロキシまたはユーザーエージェントにダウンストリームで転送する必要があるかどうかを判断する必要があります。
- 2xx応答の場合、ACKはエンドツーエンドですが、他のすべての最終応答では、ステートフルプロキシが関係する場合、ホップごとに動作します。
オプション
OPTIONSメソッドは、ユーザーエージェントまたはプロキシサーバーにその機能について照会し、現在の可用性を検出するために使用されます。 要求への応答には、ユーザーエージェントまたはサーバーの機能がリストされます。 プロキシがOPTIONS要求を生成することはありません。
拡張メソッド
申し込む
SUBSCRIBEは、特定のイベントに関する通知を取得する目的でサブスクリプションを確立するために、ユーザーエージェントによって使用されます。
- サブスクリプションの期間を示す Expires ヘッダーフィールドが含まれています。
- 期間が経過すると、サブスクリプションは自動的に終了します。
- サブスクリプションは、ユーザーエージェント間のダイアログを確立します。
- 有効期限が切れる前にダイアログ内で別のSUBSCRIBEを送信することにより、再度サブスクリプションを再登録できます。
- ユーザーからサブスクリプションに対して200 OKを受け取ります。
- ユーザーは、Expires値が0(ゼロ)の別のSUBSCRIBEメソッドを送信することにより、登録を解除できます。
通知する
NOTIFYは、特定のイベントの発生を取得するためにユーザーエージェントによって使用されます。 通常、サブスクライバーとノーティファイアーの間にサブスクリプションが存在する場合、ダイアログ内でNOTIFYがトリガーされます。
- ノーティファイアによって受信された場合、すべてのNOTIFYは200 OK応答を受け取ります。
- NOTIFYには、イベントを示す Event ヘッダーフィールドと、サブスクリプションの現在の状態を示す subscriptionstate ヘッダーフィールドが含まれます。
- NOTIFYは、サブスクリプションの開始時と終了時に常に送信されます。
公開
PUBLISHは、イベント状態情報をサーバーに送信するためにユーザーエージェントによって使用されます。
- PUBLISHは、イベント情報のソースが複数ある場合に最も役立ちます。
- PUBLISH要求は、ダイアログで送信されないことを除いて、NOTIFYに似ています。
- PUBLISHリクエストには、 Expires ヘッダーフィールドと Min-Expires ヘッダーフィールドが含まれている必要があります。
参照
REFERは、別のユーザーエージェントを参照してダイアログのURIにアクセスするために、ユーザーエージェントによって使用されます。
- REFERには Refer-To ヘッダーが含まれている必要があります。 これは、REFERの必須ヘッダーです。
- REFERは、ダイアログの内側または外側に送信できます。
- 202 Accepted は、他のユーザーエージェントが参照を受け入れたことを示すREFER要求をトリガーします。
INFO
INFOは、メディアセッションを確立した別のユーザーエージェントにコールシグナリング情報を送信するために、ユーザーエージェントによって使用されます。
- これはエンドツーエンドのリクエストです。
- プロキシは常にINFO要求を転送します。
更新
セッションが確立されていない場合、UPDATEを使用してセッションの状態を変更します。 ユーザーはUPDATEでコーデックを変更できます。
セッションが確立されると、セッションを変更/更新するために再招待が使用されます。
プラック
PRACKは、暫定応答(1XX)の信頼できる転送の受信を確認するために使用されます。
- 通常、PRACKは、 RSeq 信頼性のあるシーケンス番号と supported:100rel ヘッダーを含む暫定応答を受信すると、クライアントによって生成されます。
- PRACKには、 rack ヘッダーに(RSeq+ CSeq)値が含まれます。
- PRACKメソッドは、100 Trying応答を除くすべての暫定応答に適用されます。100Trying応答は、確実に転送されません。
- PRACKにはメッセージ本文が含まれる場合があります。オファー/アンサー交換に使用できます。
メッセージ
SIPを使用してインスタントメッセージを送信するために使用されます。 IMは通常、テキスト会話に参加している参加者がリアルタイムで交換する短いメッセージで構成されます。
- MESSAGEは、ダイアログ内またはダイアログ外に送信できます。
- MESSAGEの内容は、 MIME 添付ファイルとしてメッセージ本文に含まれています。
- 通常、メッセージが宛先で配信されたことを示す 200 OK 応答が受信されます。