連載
» 2007年11月16日 00時00分 公開

5分で絶対に分かる:5分で絶対に分かるSIP (3/5)

[佐藤和紀,株式会社ソフトフロント]

SIPのメカニズム

 インターネット技術を基本としたSIPは、HTTPをベースとしています。つまり、メッセージはテキスト形式で、リクエスト/レスポンスの形式を取っています。ただし、HTTPとは異なり、トランスポートはUDP・TCPの両方に対応し、UDPがデフォルトです。このため、SIPではUDPによるパケットの欠落に備え、メッセージ再送の仕組みが盛り込まれています。

SIPメッセージの中身はHTTPベース SIPメッセージの中身はHTTPベース

 実際のSIPのメッセージは、HTTPと同様にスタートラインとヘッダ情報、空白行を挟んだボディ部に分けられています。SIPで規定されているのは、このメッセージの基本構造と、スタートラインとヘッダ情報についてで、ボディ部に関してはSIP自体では定められていません。通常、VoIPではSDP(Session Description Protocol)と呼ばれる記述構文を使い、音声などのメディアストリーミングのIPアドレスや圧縮形式といったセッション情報を、このボディ部に付けています。

 HTTPでの接続先はhttp://www.example.com/のように示されていますが、SIPでは相手先を“sip:alice@example.com”のようなSIP URIと呼ばれる形式で指定します。

 SIPのリクエストは、GETやPOSTといったHTTPのメソッドは使用せず、新たに14種類のメソッドを定義しています。レスポンスは3ケタの番号によって表し、“200 OK”、“404 NOT FOUND”などHTTPでおなじみの番号形態になっています。

 では、IP電話を例に、電話をかける一連の流れを見てみましょう。

SIPの通話から終了まで SIPの通話から終了まで
  • (1)発信元のUAは、電話をかける“INIVTE”リクエストをSIPサーバへ送る
  • (2)SIPサーバは、事前の登録情報から、INVITEリクエスト中の発信先SIP URIに対応するIPアドレスへINIVITEリクエストを転送する
  • (3)発信先のUAでは電話のベルが鳴り、ユーザーが電話に出ると“200 OK”レスポンスを返す
  • (4)発信元のUAで、“200 OK”レスポンスを受け取ると、その確認として“ACK”リクエストを送る。ACKリクエストはHTTPにはない特別な仕組みで、UDPに対応するSIPで信頼性を実現するために、INVITE/200 OK/ACKの3way Hand Shakeを実現している
  • (5)INVITEリクエストや200 OKレスポンスのボディ部で取り交わしたSDP情報から、UA間で直接相手のIPアドレスに音声メディアをRTPで送り合う
  • (6)電話を切る際には、電話を切る側のUAから“BYE”リクエストを送る
  • (7)“BYE”リクエストに対する“200 OK”レスポンスで、一連のセッションが終了し、電話が切れる

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。