図 SIPを使うシステムの構成要素
図 SIPを使うシステムの構成要素
[画像のクリックで拡大表示]

 SIPといえば,多くの人はIP電話を想像するだろう。実際,SIPはIP電話の呼制御プロトコルとして使われることが多い。しかし,SIPはIP電話専用のプロトコルではない。もっと汎用的なプロトコルである。通信を始めるために相手を呼び出したり,やりとりするデータ形式などをすり合わせる手順の枠組みを決めたもの−−それがSIPである。

 SIPを使うアプリケーションの代表は,クライアント同士を直接つなぐP2Pアプリケーションである。IP電話,テレビ会議,チャットなどが該当する。こうしたアプリケーションでは,通信相手がどんなプロトコルに対応し,どんなデータを扱えるかが,相手によって違ったりする。そこで,自分と相手がサポートしているデータ形式やプロトコルを,通信を始める前に決める必要がある。SIPは,こうした相手と実際の通信を始める前のお膳立てをする。

 システムの構成要素は,二つに分けられる。一般にはSIPクライアントと呼ばれることが多い「SIP UA」(SIPユーザー・エージェント)と「SIPサーバー」である(図)。SIP UAは,実際にユーザーが利用する端末やソフトである。IP電話機やIP電話アダプタのような機器,Windows MessengerなどのSIP対応ソフトがそうだ。

 SIPサーバーは,あくまでもSIP UA同士のP2P通信を補うためにある。例えばたくさんのSIP UAが存在するとき,各SIP UAがお互いのIPアドレスを個別に管理するのは大変である。そこで,SIPサーバーを置いてアドレスを一元管理させる。また,IP電話サービスのように通話時間や課金を管理したいケースでは,SIP UA同士が直接通信してしまうと都合が悪い。こういうケースではSIPサーバーを置き,各SIP UAが必ずSIPサーバー経由で通信するようにする。

 標準規格(RFC3621)では,(1)SIP UAからの登録を受け付けたり,正しい端末かどうかを認証する「レジスタ」,(2)SIP UAからの接続要求を受け付けて,相手側のSIP UAにパケットを転送する「プロキシ」,(3)送信元のSIP UAに相手の転送先アドレスなどを教える「リダイレクト」,(4)SIP UAの情報などを管理し,上記三つのサーバーからの問い合わせを受け付ける「ロケーション」−−という4種類のSIPサーバーを定義している。