Session Initiation Protocol (SIP) について
Session Initiation Protocol(SIP)は、インターネット上で2つ以上のクライアント間で
セッションを確立するためのIETF標準の
通信プロトコルです。主にIP電話の呼制御に利用されていますが、
ビデオ会議やインスタントメッセージングなど、様々なリアルタイム通信に応用できます。
概要
SIPは、H.323に代わる汎用的な
セッション制御プロトコルとして開発されました。ここでいう
セッションとは、
OSI参照モデルの第5層とは異なり、通信参加者同士が対等な関係でリアルタイム通信を行うことを指します。SIPでは、この関係を両者がクライアントと
サーバー両方の機能を持つことで表現しています。
SIPはHTTPを基に作られた要求-応答型のプロトコルであり、要求側をUAC(User Agent Client)、応答側をUAS(User Agent Server)と呼びます。ただし、両者がこの両方の役割を担うことが可能です。HTTPがTCPを前提とするのに対し、SIPはUDPをベースに設計されましたが、信頼性のためTCPが使われることも多いです。また、セキュリティやプライバシー保護のための機能拡張も備えています。
特徴
SIPは、同じリアルタイム・
マルチメディア・データ
通信プロトコルであるH.323と比較して、以下の点で特徴があります。
セッションの開始、変更、終了のみを行うため、プロトコルがシンプルである。
HTTP 1.1に似たテキストベースのメッセージフォーマットであり、機能の追加や拡張が容易である。
インターネットアーキテクチャに基づき、端末側で自由にサービスを追加できる。
従来の電話網のような集中制御型ではなく、分散型のアーキテクチャを採用している。
VoIPでの利用では、音声などのストリーミング送受信にはRTP/RTCP、制御にはSDPが使われる。
標準ポート番号として5060番が規定されている。
ユーザーエージェント (UA)
SIPリクエストを処理する論理的なエンティティをユーザーエージェント(UA)と呼び、以下の2つの要素で構成されます。
ユーザーエージェントクライアント (UAC):SIPリクエストを生成・送信し、応答を受信・処理する。
ユーザーエージェントサーバー (UAS):SIPリクエストを受信・処理し、応答を生成・送信する。
従来の電話システムにおける交換機のように見えるSIP
サーバーは、実際にはUAからの依頼に基づいて認証と電話番号解決を行う役割を担います。サービスは発信側のUAが要求し、着信側のUAが提供する、というインターネットのブラウザとWeb
サーバーのような関係です。つまり、SIPの電話機は発信時にはクライアントとして、着信時には
サーバーとして振る舞います。
SIP
サーバーは、UA間のメッセージ交換を中継する役割を担います。通常、UAはSIP
サーバー(プロキシ
サーバー)を介してメッセージを交換します。これにより、UAは通信相手の
IPアドレスを意識する必要がなくなり、相手の
IPアドレスが変化した場合でも通信を維持できます。
SIP
サーバーには、以下の機能があります。
プロキシサーバー:SIPメッセージの転送を行う。
リダイレクトサーバー:SIPリクエストの次の転送先を応答で送信する。
登録サーバー (Registrar):UAのコンタクトアドレスを場所サーバーに登録する。
場所サーバー:UAのネットワーク上の場所を管理するデータベース
サーバー。
これらの機能は物理的に分離することも、1つにまとめることもできます。なお、従来の交換機の付加サービスのような機能は、厳密にはSIP
サーバーではなくUASの集合体として構成されます。
メソッド
UACがUASに何らかの処理を要求することをメソッドと呼び、代表的なものに以下のものがあります。
INVITE:セッション確立要求
ACK:INVITEの応答確認
BYE:セッション解放要求
OPTIONS:通信相手の能力問い合わせ
REGISTER:位置情報などをレジストラに登録
SIPにおけるユーザーアドレスとその構造
SIPにおける電話番号に相当するものがSIP URI(Uniform Resource Identifier)であり、「名前@ドメイン」という形式をしています。SIP URIは特定の個人や端末を表すとは限らず、グループを表すことも可能です。これにより、代表番号のような使い方ができます。
SIPにおける標準的なシーケンス
SIPサーバーを経由しない、AliceとBobの会話の標準的なシーケンスは以下の通りです。
1. AliceがBobにINVITEメッセージを送信
2. Bobが180 RingingメッセージをAliceに送信
3. Bobが200 OKメッセージをAliceに送信
4. AliceがACKメッセージをBobに送信
5. RTPメディアによる双方向通信
6. BobがBYEメッセージをAliceに送信
7. Aliceが200 OKメッセージをBobに送信
SIPサーバーを経由する場合、各プロキシサーバーが100 Trying応答を返す以外は、上記の流れを中継するだけです。
関連項目
VoIP
IP電話
MGCP
NOTASIP
Asterisk (PBX)
IPマルチメディアサブシステム
外部リンク
RFC 3261 - Session Initiation Protocol
RFC 4566 - Session Description Protocol
SIP Working Group - IETF
*
SIP Protocol Overview