図 SIP(Session Initiation Protocol)を使ったIP電話の接続手順
図 SIP(Session Initiation Protocol)を使ったIP電話の接続手順
[画像のクリックで拡大表示]

 受話器を上げて電話番号をプッシュすると相手を呼び出す。相手が受話器を取れば、会話が始まる。固定電話では当たり前のサービスを、IP電話で提供するためのプロトコルがSIP(Session Initiation Protocol)である。

 SIPの役割は、IPネットワークを使って目的の相手との通信経路(セッション)を確立することだ。SIPの通信システムは、SIPクライアント(ユーザーエージェント)とSIPサーバーから成る。それぞれの役割を見ていこう。

 SIPクライアントは、SIPの処理を実行する。通信相手を探し、相手先のSIPクライアントとやりとりして、利用するポート番号などを通知し合ってセッションを確立する。

 SIPサーバーは、通信相手の情報を集中管理して、セッションの確立を仲立ちする。SIPサーバーを使わずに、各SIPクライアントが相手先の情報を管理することも可能だ。SIPサーバーで集中管理していれば、通信相手のIPアドレスなどに変更があった際に、直ちに反映されるといったメリットがある。

 SIPは、Webサーバーとクライアントとの通信に使われるHTTP(Hyper-Text Transfer Protocol)をベースに開発された。そのため、通信の手順はHTTPと同じように要求と応答のやりとりになっている。具体的には図のような流れである。

 ユーザーAがユーザーBに電話をかけるときは、まずユーザーAがSIPクライアントからユーザーBの電話番号をプッシュする。するとSIPクライアントは、あらかじめ設定されたSIPサーバーに対して、プッシュされた電話番号を指定して呼び出し要求を送る。

 要求を受けたSIPサーバーは、指定された電話番号からユーザーBのSIPクライアントを探し出し、ユーザーBのSIPクライアントに呼び出し要求を、ユーザーAのSIPクライアントに処理中であることを示す応答を送る。

 ユーザーBのSIPクライアントは、着信音を鳴らして着信があったことをユーザーBに知らせる。併せて、呼び出しの処理中であることを、SIPサーバーを通じてユーザーAのSIPクライアントに通知する。するとユーザーAの受話器では呼び出し音が鳴る。

 ユーザーBが受話器を取ると、ユーザーBのSIPクライアントは呼び出しの成功をSIPサーバーを通じてユーザーAのSIPクライアントに通知する。そして通知を受けたユーザーAのSIPクライアントが、SIPサーバーを通じてユーザーBのSIPクライアントに確認応答を送り、それが届くとセッションが確立される。

 なお、セッションが確立されるとSIPサーバーは経由されず、SIPクライアント同士がRTP(Real-time Transfer Protocol)などで音声パケットを直接送ることで通話する。