Lesson2では,SIP UAがメッセージを直接やりとりする例を見てきた。しかしSIP UA同士が直接メッセージをやりとりすることは実はあまりない。SIP UAは,「SIPサーバー」と呼ばれる装置にSIPメッセージを中継してもらうことがほとんどだ。

UAがアドレスを覚えるのは大変

 なぜSIPサーバーが必要なのかを考えてみよう。SIPサーバーの有無にかかわらず,発信するユーザーのアプリケーションの使い方は変わらない。「1234」といった番号やユーザー名,あるいは「yamada@example.com」といったSIP URIを指定してアプリケーションに相手の呼び出しを指示する。番号やユーザー名で指定された場合,SIP UAは決まったドメイン名を付けて「1234@example.com」といった具合にSIP URIに変換する。ここまでは特に難しくない。

 SIPサーバーがないとここからが難しくなる。呼び出す相手のSIP UAのIPアドレスを,SIP URIから自力で導き出すには相手のSIP UAのIPアドレスを覚えておく必要があるからだ(図3-1)。だが,すべてのSIP UAが,呼び出す可能性のあるすべてのSIP UAのIPアドレスをいちいち覚えておくのは難しい。

図3-1●SIP UAがあて先のIPアドレスを覚えておくのは現実的ではない
図3-1●SIP UAがあて先のIPアドレスを覚えておくのは現実的ではない
SIPメッセージを相手のSIP UAに直接届けるためには,通話する可能性があるSIP UAのIPアドレスを全部覚えておく必要がある。登録や変更の手間が大きくなるため,現実的ではない。

情報を集めてそこで中継させる

 そこで普通は,SIPサーバーにユーザーとIPアドレスの対応情報を集めて,SIPメッセージを中継させる。SIPの標準規格では,情報を集めるのは「レジストラEサーバー」,中継するのは「プロキシ・サーバー」と分けて定義されているが,1台のSIPサーバーが両方の機能を備えていることが多い。

 中継はせずに,ほかのSIP UAやプロキシ・サーバーにSIPメッセージの転送先を教える「リダイレクト・サーバー」もある。通信事業者などの巨大ネットワークでは,リダイレクト・サーバーを置いてSIPサーバーの負荷を小さくすることがある。

 レジストラ・サーバーは,SIP UAからREGISTERリクエストで送られてくるSIP URIとIPアドレスの登録を受け付ける(図3-2のA-1,2)。受け取った情報を基にSIP URIとIPアドレスの対応情報を更新する。

図3-2●レジストラ・サーバーやプロキシ・サーバーが活躍する<br>端末にあるSIPユーザー・エージェントは,通信相手のIPアドレスを把握できないのが普通だ。そこでそれぞれの端末に自分のIPアドレスをレジストラ・サーバーに登録し,登録情報に基づいてプロキシ・サーバーにSIPメッセージを中継させる。二つを合わせたものをSIPサーバーということが多い。
図3-2●レジストラ・サーバーやプロキシ・サーバーが活躍する
端末にあるSIPユーザー・エージェントは,通信相手のIPアドレスを把握できないのが普通だ。そこでそれぞれの端末に自分のIPアドレスをレジストラ・サーバーに登録し,登録情報に基づいてプロキシ・サーバーにSIPメッセージを中継させる。二つを合わせたものをSIPサーバーということが多い。
[画像のクリックで拡大表示]

 プロキシ・サーバーはSIP UAからメッセージを受け取ると,レジストラ・サーバーが更新した対応情報を参照して,SIPメッセージを適切なIPアドレスに転送する(同B-1,2)。

 すべてのSIP UAがネットワークに参加したときにレジストラ・サーバーに位置情報を登録すれば,SIP UAはいちいち相手端末のIPアドレスを覚えなくてもよくなる。SIPメッセージをプロキシ・サーバーに送れば,そこから正しく転送してもらえる。

 ちなみにSIPの標準規格では,レジストラ・サーバーが対応情報を更新したり,プロキシ・サーバーが情報を参照する方法は決まっていない。二つの間にデータベースを置いて参照や更新を受け付けることだけが決まっている。実際のSIPサーバーでは,このデータベースがレジストラ・サーバーやプロキシ・サーバーと共に動いている。

管理やセキュリティ確保の意味も

 プロキシ・サーバーから送られてきたSIPメッセージには,相手のSIP UAのIPアドレスが書き込まれている。このため,そのあとのメッセージのやりとりはSIPサーバーを介する必要はない。

 ただし,SIP UA間でメッセージを直接やりとりすることはほとんどない。わざわざプロキシ・サーバーを経由させるのには,通信履歴情報を一元管理したり,見知らぬ相手からいきなりSIPメッセージが届かないようにするという意味もある。

 プロキシ・サーバーは,SIPメッセージを中継するときに,ヘッダーに必ずプロキシ・サーバーを中継するように指示する情報を書き込むことができる。この指示が書き込まれたSIP UAは,相手のIPアドレスがわかってもプロキシ・サーバー経由でメッセージを送る。

 ただし,プロキシ・サーバーはSIPで確立したあとのセッションは中継しない。プロキシ・サーバーを使っている場合でも,マルチメディア・データを収めたパケットは端末間で直接やりとりする。