SIPについて

SIP:Session Initiation Protocol

 SIPとは、IPネットワークを通じて、音声をリアルタイムコミュニケーションを可能にする通信プロトコルです。電話の呼出し、開始、終了、転送や保留などの通話中の機能を制御し、ネットワーク上での通話を実現します。SIPは、メッセージはテキスト形式で、リクエスト/レスポンス形式でやり取りを行います。トランスポートはデフォルトでUDPを使用します。

 

SIP通信に必要な装置
・端末UA(User Agent)
  端末送信UAC(User Agent Client)
   リクエスト送信
  端末受信UAS(User Agent Server)
   リクエスト受信・レスポンス送信
・SIPサーバー(中継サーバー)

 

レジストラ
SIPサーバーに電話機のIPアドレスを登録する。

 

プロシキ・リダイレクト
リクエスト、レスポンスを中継、リクエストに対してIPアドレスを返す。

 

レジスタのシーケンス

      内線20                     SIPサーバー
         |                              |
         |(1) REGISTER                  |
         |----------------------------->|
         |(2) 401 Unauthorized          |
         |<-----------------------------|
         |(3) REGISTER PA               |
         |----------------------------->|
         |(4) 200 OK                    |
         |<-----------------------------|
         |                              |

PA:Proxy-Authorization

 

電話をかけるシーケンス

       IP電話機                               IP電話機
       内線20             SIPサーバー          内線21
        |                    |                    |
内線21に電話を|(1) INVITE          |                    |
かける     |------------------->|                    |
        |(2) 407             |                    |
        |<-------------------|                    |
        |(3) ACK             |                    |
        |------------------->|                    |
        |(4) INVITE A        |                    |
        |------------------->|(1) INVITE          |
        |(5) 100 Trying      |------------------->|
        |<-------------------|(2) 180 Ringing     |電話機が鳴動
        |(6) 180 Ringing     |<-------------------|(リリリリーン)
呼出音     |<-------------------|                    |
(プルルルル) |                    |(3) 200 OK          |
        |(7) 200 OK          |<-------------------|受話器を上げる
        |<-------------------|                    |
        |(8) ACK             |                    |
        |------------------->|                    |
        |                    |(4) ACK             |
        |                    |------------------->|
        |                    |                    |
通話      |<==================RTP==================>|
        |                    |                    |
        |                    |(5) BYE             |
        |(9) BYE             |<-------------------|受話器を下す
        |<-------------------|                    |
電話が切れる  |(10) 200 OK         |                    |
(プープープ) |------------------->|(6) 200 OK          |
        |                    |------------------->|
        |                    |                    |

 

リクエスト例

 

レスポンス例

 

リクエスト(SIPメソッド)

 INVITE ---- セッション開始要求
 ACK ----- セッション確立の確認
 BYE ----- セッションの終了
 CANCEL ---- セッションの確立キャンセル
 REGISTER ---- 情報の登録
 OPTIONS ---- サーバ機能問い合わせ
 PRACK ---- 暫定応答の確認
 INFO ---- セッション内の情報通知
 SUBSCRIBE ---- イベントの通知要請
 NOTIFY ---- 要請されたイベントの通知
 MESSAGE ---- テキストメッセージなどの送信
 UPDATE ---- セッションの変更
 PUBLISH ---- ステータス情報の通知
 REFER ---- 転送指示

レスポンス(応答コード)

 1xx = 情報応答
  100 試行中
  180 呼び出し中
  183 セッション進行中

 2xx = 成功応答
  200 OK

 3xx = リダイレクト応答

 4xx = リクエスト エラー
  400 不正なリクエスト
  401 認証が必要:レジストラのみ利用可
  407 プロキシ認証が必要
  481 通話 / トランザクションが存在しません
  486 話し中

 5xx = サーバー エラー
  500 サーバ内部エラー
  503 サービス利用不可
  504 サーバタイムアウト

 6xx = グローバル エラー

SIPヘッダ

 Call-ID ---- 1つの通信を識別するユニークなID
 To --- リクエストの着信先
 From --- リクエストの生成元
 Contact --- ユーザーが直接通信するためのURI情報
 CSeq --- 新しいトランザクションと、再送を区別するためのインクリメント値
 Via --- リクエストが辿ったパスを示す。レスポンスはこの情報を元に返る
 Content-Length --- ボディの長さ(バイト数)
 Content-Type --- ボディのタイプ

SDP(Session Description Protocol)

 音声などのメディアストリーミングのIPアドレスや圧縮形式といったセッション情報を、このボディ部に付けています。「タイプ=値」の形式。


メモ書き

©2024 OKADA