SIPは,一言でいうなら,「IP電話やテレビ会議といったアプリケーションが相手と通信を始める準備を整えるプロトコル」である。
セッション確立に欠かせない
SIPの目的は,IP電話やテレビ会議を実現するために,IPネットワーク上で相手を呼び出して,音声や動画をやりとりする通り道(セッション)を作ることだ(図1-1)。ただし,音声データや動画データを転送するのはSIPの仕事ではない。転送にはRTPやUDPといった別のプロトコルを使う。
SIPは,相手を呼び出すと同時に,どのようなフォーマットのデータをどのポート番号を使ってやりとりするかを双方で取り決める。この事前の取り決めこそがセッションの本質だ。「セッションが確立している」とは,通信するアプリケーション同士でやりとりの約束が結ばれて,データが転送できるようになっている状態を指す。SIPがセッションを確立したあと,アプリケーションはその取り決めに従って音声や動画を実際に転送する。
もし,常に決まった相手と通信するだけなら,セッションを確立するのにSIPを使う必要はない。何らかの方法であらかじめ通信条件を決めて,お互いに設定しておけばよい。だが,IP電話やテレビ会議のように必要に応じて相手を変えるアプリケーションではそうはいかない。
SIPは,相手をそのつど選んで通信するアプリケーションで,相手を呼び出してセッションを確立するときに活躍する。標準化されたプロトコルなので,異なるメーカーの製品同士でもSIPを使って相手を呼び出せるようになっている。
呼び出して通信できる状態にする
パソコン上で動くテレビ会議を例にSIPの仕事を見てみよう。
テレビ会議ソフトは,ユーザーの指示によって,通信相手を呼び出す。まずこのときにSIPは,相手を探し出して接続を要求する(図1-2の(1),(2))。
SIPは,いつ呼び出されてもいいように通信相手からの要求を待ち受けている。接続の要求を受け取ると,着信音を鳴らしたりしてユーザーにそれを知らせる(同(3))。
セッションを確立するために必要なフォーマットやポート番号などの情報は,接続作業と並行して呼び出し側と着信側双方のSIPの間で交換される(同(4))。このように,接続と同時にセッションを確立することで,ユーザーが応答したらすぐに通話できるようになるわけだ。
SIPの仕事はここまででいったん終わる。互いに通信できる状態になったあとは,双方のテレビ会議ソフト同士で音声と動画のデータをやりとりする。
通信を終了するときは再びSIPの出番だ。SIPは,いったん確立したセッションをきちんと切断する。このようにSIPは,IP電話やテレビ会議の通信前後の処理を担当する。
複数のセッションを同時に作る
IP電話やテレビ会議といったアプリケーションは,SIPを使ってRTPやUDPのセッション(メディア・ストリーム)を同時に複数作る。メディア・ストリームは動画や音声といったデータの種類ごとに別々に作らなければならないうえ,双方向であればそれぞれの向きごとに別のメディア・ストリームが必要になるからだ。
例えばビデオ会議なら,音声と動画を双方向で転送するので,合計四つのメディア・ストリームをまとめて作ることになる。
「SIPサーバー」の助けを借りる
SIPを処理するソフトウエアは,ビデオ会議といったアプリケーションと一体化していることが多い。ただし,論理的にはSIPを処理するソフトとそれ以外の部分を分け,SIPの仕事だけに注目するとSIPを理解しやすい。SIPの標準規格も,アプリケーションからSIPを処理する部分を切り出す形で決められている。
SIPの標準規格では,アプリケーションと連携してSIPを処理するソフトを「SIPユーザー・エージェント」(SIP UA)と呼ぶ。SIP UAは発信側と着信側が場合によってクライアントとサーバーの立場を変えながら通信する。このため厳密には「SIPクライアント」といわない。
ただし,実際にSIPを利用するときには,SIP UA間のやりとりを「SIPサーバー」に中継させることが多い。このSIPサーバーに対応させて,SIP UAをSIPクライアントと呼ぶこともある。SIPサーバーについてはLesson3で詳しく紹介する。