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

SIP

SIP とは

SIP(Session Initiation Protocol)は端末間のセッションの生成・変更・転送・切断等を行うプロトコルのことである。

SIP では端末のことをユーザエージェント(UA: User Agent)と呼び、次の 2 通りの UA が存在する。

  • ユーザーエージェント・クライアント (UAC : User Agent Client): SIP リクエストを生成・送信し、応答を受信・処理する UA
  • ユーザーエージェント・サーバ (UAS : User Agent Server): SIP リクエストを受信・処理し、応答を生成・送信する UA

SIP で規定されているのはセッションを制御する機構であり、やりとりするデータについては規定されていない。 例えば、セッションを生成した後にリアルタイムデータ(音声・映像)の転送には、RTP(Real-time Transport Protocol)を用いる。

SIP はデータ自体は定義されていないので、音声データであれば IP 電話, 音声+映像であればテレビ電話, テキストであればチャットといったさまざまな形で用いられる。

SIP がセッションを生成している間にセッション情報交換を行う。SDPを用いてやりとりを行なっている。

SIP のメッセージには 2 種類存在し、クライアントからサーバへ送信するリクエストとサーバからクライアントへ送信するレスポンスが存在する。 それぞれについてこちらで定義されている。

  • リクエスト

    メッセージ説明
    INVITEセッション開始を要求
    ACKセッション生成の確認
    BYEセッション終了
    REGISTERURI 登録要求
  • レスポンス

    番号説明
    100Trying処理中
    180Ringing呼び出し中(電話であれば音がなる)
    200OK成功

    ステータスコードの分類は以下のように定義されている

    コード説明
    1xxProvisional
    2xxSuccessful
    3xxRedirection
    4xxRequest Failure
    5xxServer Failure
    6xxGlobal Failures

SIP のシーケンスは次のようになる。

  • UA が相手の IP アドレスを知っている場合

    SIPシーケンス IPアドレス既知

    IP アドレスを知っているの相手の UA と直接やりとりを行う。

  • UA が相手の IP アドレスを知らない場合

    SIPシーケンス IPアドレス未知

    IP アドレスを知らないため、SIP サーバを介してセッション情報を交換する。 そのため、初めに各 UA は REGISTER リクエストを使用して、SIP URI と IP アドレスの対応付けを SIP サーバに登録する必要がある。

    着呼側の UA は INVITE リクエストの SIP メッセージから発信元 IP アドレスを取得し、発呼側は 200 OK レスポンスの SIP メッセージから発信先 IP アドレスを取得する。

平成 26 年のネットワークスペシャリストの午後 2 問 2 では SIP の INVITE リクエストの内容についての図が書かれている。 平成26年 午後2 図3

この図の Via フィールドはリクエストを経由したパスを表しており、SIP サーバ A \rightarrow SIP サーバ B への INVITE では Via フィールドは 2 つになっている。 また、SIP サーバ B \rightarrow サーバ UA への INVITE では Via フィールドは 3 つとなる。Via フィールドに追記する際には既存 Via フィールドの上位に追記するようになっている。 サーバ UA から 200 OK レスポンスを SIP サーバ B へ送る際には Via フィールドをそのままにして送り出す。 それぞれの SIP サーバでは最上位の位置する Via フィールド(自分が付与したもの)を削除し、次に最上位となった場所へレスポンスを送信する仕組みなっている。 RFC3261 page-14にその説明が書かれている。 SIPシーケンス Viaフィールド

RFC3261 に記載されているデータの流れは以下である。(SDP の body は表示しない(「〇〇 SDP not shown」と書かれている))

注意

図の番号とヘッダーの数字が一致しないので合うように変更して記載している。 (図の番号に合わせてヘッダーメッセージを選択している。)

1\textcircled{\scriptsize 1} INVITE Alice \rightarrow atlanta.com proxy

SIPシーケンス ヘッダーメッセージ付き1

INVITE sip:bob@biloxi.com SIP/2.0
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
Max-Forwards: 70
To: Bob <sip:bob@biloxi.com>
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 314159 INVITE
Contact: <sip:alice@pc33.atlanta.com>
Content-Type: application/sdp
Content-Length: 142

2\textcircled{\scriptsize 2} INVITE atlanta.com proxy \rightarrow biloxi.com proxy

SIPシーケンス ヘッダーメッセージ付き2

INVITE sip:bob@biloxi.com SIP/2.0
Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
;received=192.0.2.1
Max-Forwards: 69
To: Bob <sip:bob@biloxi.com>
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 314159 INVITE
Contact: <sip:alice@pc33.atlanta.com>
Content-Type: application/sdp
Content-Length: 142

3\textcircled{\scriptsize 3} 100 Trying atlanta.com proxy \rightarrow Alice

SIPシーケンス ヘッダーメッセージ付き3

SIP/2.0 100 Trying
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
;received=192.0.2.1
To: Bob <sip:bob@biloxi.com>
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 314159 INVITE
Content-Length: 0

4\textcircled{\scriptsize 4} INVITE biloxi.com proxy \rightarrow Bob

SIPシーケンス ヘッダーメッセージ付き4

INVITE sip:bob@192.0.2.4 SIP/2.0
Via: SIP/2.0/UDP server10.biloxi.com;branch=z9hG4bK4b43c2ff8.1
Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1
;received=192.0.2.2
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
;received=192.0.2.1
Max-Forwards: 68
To: Bob <sip:bob@biloxi.com>
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 314159 INVITE
Contact: <sip:alice@pc33.atlanta.com>
Content-Type: application/sdp
Content-Length: 142

5\textcircled{\scriptsize 5} 100 Trying biloxi.com proxy \rightarrow atlanta.com proxy

SIPシーケンス ヘッダーメッセージ付き5

SIP/2.0 100 Trying
Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1
;received=192.0.2.2
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
;received=192.0.2.1
To: Bob <sip:bob@biloxi.com>
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 314159 INVITE
Content-Length: 0

6\textcircled{\scriptsize 6} 180 Ringing Bob \rightarrow biloxi.com proxy

SIPシーケンス ヘッダーメッセージ付き6

SIP/2.0 180 Ringing
Via: SIP/2.0/UDP server10.biloxi.com;branch=z9hG4bK4b43c2ff8.1
;received=192.0.2.3
Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1
;received=192.0.2.2
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
;received=192.0.2.1
To: Bob <sip:bob@biloxi.com>;tag=a6c85cf
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
Contact: <sip:bob@192.0.2.4>
CSeq: 314159 INVITE
Content-Length: 0

7\textcircled{\scriptsize 7} 180 Ringing biloxi.com proxy \rightarrow atlanta.com proxy

SIPシーケンス ヘッダーメッセージ付き7

SIP/2.0 180 Ringing
Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1
;received=192.0.2.2
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
;received=192.0.2.1
To: Bob <sip:bob@biloxi.com>;tag=a6c85cf
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
Contact: <sip:bob@192.0.2.4>
CSeq: 314159 INVITE
Content-Length: 0

8\textcircled{\scriptsize 8} 180 Ringing atlanta.com proxy \rightarrow Alice

SIPシーケンス ヘッダーメッセージ付き8

SIP/2.0 180 Ringing
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
;received=192.0.2.1
To: Bob <sip:bob@biloxi.com>;tag=a6c85cf
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
Contact: <sip:bob@192.0.2.4>
CSeq: 314159 INVITE
Content-Length: 0

9\textcircled{\scriptsize 9} 200 OK Bob rightarrowrightarrow biloxi.com proxy

SIPシーケンス ヘッダーメッセージ付き9

SIP/2.0 200 OK
Via: SIP/2.0/UDP server10.biloxi.com;branch=z9hG4bK4b43c2ff8.1
;received=192.0.2.3
Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1
;received=192.0.2.2
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
;received=192.0.2.1
To: Bob <sip:bob@biloxi.com>;tag=a6c85cf
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 314159 INVITE
Contact: <sip:bob@192.0.2.4>
Content-Type: application/sdp
Content-Length: 131

10\textcircled{\scriptsize 10} 200 OK biloxi.com proxy \rightarrow atlanta.com proxy

SIPシーケンス ヘッダーメッセージ付き10

SIP/2.0 200 OK
Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1
;received=192.0.2.2
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
;received=192.0.2.1
To: Bob <sip:bob@biloxi.com>;tag=a6c85cf
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 314159 INVITE
Contact: <sip:bob@192.0.2.4>
Content-Type: application/sdp
Content-Length: 131

11\textcircled{\scriptsize 11} 200 OK atlanta.com proxy \rightarrow Alice

SIPシーケンス ヘッダーメッセージ付き11

SIP/2.0 200 OK
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
;received=192.0.2.1
To: Bob <sip:bob@biloxi.com>;tag=a6c85cf
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 314159 INVITE
Contact: <sip:bob@192.0.2.4>
Content-Type: application/sdp
Content-Length: 131

12\textcircled{\scriptsize 12} ACK Alice \rightarrow Bob

SIPシーケンス ヘッダーメッセージ付き12

ACK sip:bob@192.0.2.4 SIP/2.0
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds9
Max-Forwards: 70
To: Bob <sip:bob@biloxi.com>;tag=a6c85cf
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 314159 ACK
Content-Length: 0

13\textcircled{\scriptsize 13} BYE Bob \rightarrow Alice

SIPシーケンス ヘッダーメッセージ付き13

BYE sip:alice@pc33.atlanta.com SIP/2.0
Via: SIP/2.0/UDP 192.0.2.4;branch=z9hG4bKnashds10
Max-Forwards: 70
From: Bob <sip:bob@biloxi.com>;tag=a6c85cf
To: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 231 BYE
Content-Length: 0

14\textcircled{\scriptsize 14} 200 OK Alice -> Bob

SIPシーケンス ヘッダーメッセージ付き14

SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.0.2.4;branch=z9hG4bKnashds10
From: Bob <sip:bob@biloxi.com>;tag=a6c85cf
To: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 231 BYE
Content-Length: 0

この SIP を用いたものとしてVoIP(Voice over Internet Protocol)ネットワークがある。

用語

URI

URI(Uniform Resource Identifier)は資源を識別する識別子であり、RFC3986 で定義されている。

URL(Uniform Resource Locator)は URI のサブセット(一部)である。

関連機能

  • インスタントメッセージ機能 (RFC3428)
  • イベント通知機能 (RFC6665)

参考