SIP(シップ)(session initiation protocol)といえば,多くの人はIP電話を想像するだろう。実際,SIPはIP電話の呼制御プロトコルとして,この2~3年の間で急速に認知度を増している。

 しかし,SIPはIP電話専用のプロトコルではない。もっと汎用的なプロトコルである。通信を始めるために相手を呼び出したり,やりとりするデータ形式などをすり合わせる手順の枠組み*1を決めたもの――それがSIPだ。

 とは言っても,これだけではSIPをイメージできないだろう。そこで本特集では,どんなプロトコルかという基本から始め,実際のサービスがどう利用しているか,さらにはSIPを知ったあとにわいてくる疑問に答えていく。さまざまな角度からSIPを見ていくことで,理解が深まるはずだ。

実際の通信を始めるお膳立てをする

 まずは,SIPとはどんなプロトコルなのかという土台を押さえよう。

 我々が普段使っているインターネット・アプリケーションは,利用するプロトコルや通信相手のサーバー・ソフトの種類が最初から決まっている。

 例えばWebブラウザなら,HTTP*2というプロトコルで「http://www.nikkeibp.co.jp/」のようなアドレスを指定してWebサーバー・ソフトにアクセスする。Webサーバー・ソフトは,ブラウザからのアクセスを受け付けられるように固定されたポート番号を常に開けて待ち受けている(図1-1)。電子メール,FTP*3,DNS*4なども同様だ。

図1-1●SIPとは
図1-1●SIPとは
IPネットワークを介して相手を呼び出したり,利用できるメディアの種類などをやりとりするためのプロトコルだ。実際にはIP電話の呼制御に使うことが多いが,IP電話以外の用途にも使える。
[画像のクリックで拡大表示]

 一方,SIPを使うアプリケーションの代表は,クライアント同士を直接つなぐP2P(ピアツーピア)である。IP電話,テレビ会議,チャットなどだ。そもそもSIPは,P2Pアプリケーションを実現するために標準化された。

 こうしたアプリケーションでは,通信相手がどんなプロトコルを話し,どんなデータを扱えるかが,相手によって違ったりする。IP電話にしても端末ごとに音声符号化方式が違うことがある。そこで,SIPは「こんな形式のデータを使いたいのですが」と通信相手に呼びかける。また,「私は××番ポートを開けて通信を待ち受けていますから,そちらにアクセスしてきて下さい」と相手を招待する(図1-1参照)。

 こうすることによって,自分と相手がサポートしているデータ形式やプロトコルを,通信を始める直前に決めることができる。このため,相手からいつどんな手段でアクセスを受けるかわからない状況で,ポートを開けて待っている必要がない。必要なときに,必要なポートを開けて相手を招待すればいい。

 例えば,「テレビ電話を始めませんか」と呼びかけたら,相手からは「私は映像データをサポートしていないので電話にして下さい。××ポートで待っています」と返事が返ってくきたので音声だけの通話を始める。あるいは「今は忙しいので,メールにして下さい」と相手から返事が返ってきたので,自分のパソコンのメール・ソフトが立ち上がる――といった臨機応変に処理できるソフトを作れる。このように,SIPの最大の役割は,相手と実際の通信を始める前のお膳立てをすることなのである。

サーバー機能は4種類ある

 次は,登場人物を確認しておこう。SIPを使うシステムの構成要素は,二つに分けられる。「SIP UA」(SIPユーザー・エージェント)と「SIPサーバー」である(図1-2)。

図1-2●SIPを使うシステムの構成要素
図1-2●SIPを使うシステムの構成要素
SIPに対応した機器は,SIP UA(ユーザー・エージェント)と呼ぶクライアントとSIPサーバーの2種類に分類できる。SIP UA同士が直接SIPメッセージをやりとりすることもできるが,一般にはユーザー,電話番号,IPアドレスなどを集中管理するためにSIPサーバーを置く。SIPサーバーは役割別に4種類定義されている。

 SIP UAは,実際にユーザーが利用する端末やソフトである。IP電話機やIP電話アダプタ,Windows Messenger*5などのSIP対応ソフトがそうだ。クライアント同士が直接通信するSIPの世界では,このSIP UAが主役になる。

 もう一つのSIPサーバーについては,「ちょっと待った」と思った人がいるかもしれない。クライアント同士をP2Pで直接つなぐためにSIPを使うのに,SIPサーバーなるものが登場するとはどういうことかと…。

 実は,SIPサーバーはサーバーとはいうものの,あくまでもSIP UA同士のP2P通信を補うためにある。

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

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