SIPお勉強 その1
業務でSIPを使うようになったので、そのお勉強メモです。できる限りRFCや専門書籍に当たって正確な理解を深めたい。
SIP用語その1
DialogとTrunsactionとSessionの違いは誰もが最初は戸惑うと思う。Registerリクエストがdialogを生成しないのはちょっと意外だけど、そもそもRegisterって2者間の通話とは関係ないから当然か...。
Dialog
Dialogは「呼」や「コール」といった概念と同じ。
- A dialog represents a peer-to-peer SIP relationship between two user agents that persists for some time. (rfc3261)
- Call-ID:The Call-ID header field acts as a unique identifier to group together a series of messages. It MUST be the same for all requests and responses sent by either UA in a dialog.(rfc3261)
- Dialogは「Call-ID・From-tag・To-tagの3つの組み合わせ」で識別される。
- ダイアログは、特定のメソッドを持つリクエストに対する失敗ではない応答の生成を通して生成される。リクエストに対する非最終応答で確立されたダイアログは、earlyステートにあり、それはearlyダイアログと呼ばれる。
- REGISTERリクエストはダイアログを確立しない。
Transaction
TransactionはDialogのサブセット。DialogとTransactionの違いがいまいちわからない場合は、こことかここを参照。Cseqが同じなら同一のトランザクションとなる。
- SIPトランザクション(SIP Transaction): SIPトランザクションはクライアントとサーバーのあいだで発生し、クライアントからサーバーに送られた最初のリクエストから、サーバーからクライアントに送られた最終応答(非1xx)までのすべてのメッセージからなる。リクエストがINVITEで最終応答が非2xxの場合、トランザクションはその応答に対するACKも含む。INVITEリクエストに対する2xx応答へのACKは、別のトランザクションである。
- a SIP transaction consists of a single request and any responses to that request, which include zero or more provisional responses and one or more final responses. (rfc3261)
- The CSeq header field serves as a way to identify and order transactions.
Session
SDP仕様によれば「マルチメディアセッションとは、マルチメディアを送る側と受ける側および送り手から受け手に流れるデータストリームのセットのことである。マルチメディアカンファレンスは、マルチメディアセッションの一例である。」(rfc2327)