猫型エンジニアのブログ

プログラム/ネットワーク系の技術関連をまとめたページです 

SIPお勉強 その1

業務でSIPを使うようになったので、そのお勉強メモです。できる限りRFCや専門書籍に当たって正確な理解を深めたい。

SIP標準化の歴史

ここを参照。結構紆余曲折を経てるのね。

まずRFC

SIP関連のRFCは以下のサイトに和訳付きでまとまっています。全部で40近くあるんですね...。少なくともSIPは『シンプルなプロトコル』とはいえない。

www.softfront.co.jp

シーケンス例

具体的なヘッダの値のサンプル等を確認したいときはこことかここを参照。

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)

Re: [Sip] Difference between dialog and session in SIP?