SIP の機能
SIP (Session Initiation Protocol) は、端末間でセッションの生成、変更、転送、切断などを行うプロトコルである。SIP では端末のことをユーザーエージェント (UA) と呼ぶ。
SIP で規定されているのは、主にセッションを制御する機能である。つまり、セッション上でやり取りされるデータそのものについては規定されていない。
セッションを生成した後、リアルタイムデータ (音声、映像) の転送には、別のプロトコルが用いられる。一般に、リアルタイムデータの転送に用いられるプロトコルは RTP (Real-time Transport Protocol) である。
SIP の基本的な機能であるセッション制御に関する規格は RFC3261 で規定されている。その後、機能の追加や拡張が行われており、インスタントメッセージを交換する機能 (RFC3428)、イベントを追加する機能 (RFC6665) なども規定されている。
SIP で規定されている機能を以下に示す。
SDP
リアルタイムデータの通信を始める前に、上位アプリケーション間でどのような通信を行うかについて以下のような情報を交換する必要がある。
- UA の IP アドレス
- リアルタイムデータ転送用プロトコルが使用するポート番号
- 音声や映像といったメディアの種別及びそのメディアで用いられる符号化方式
この情報の記述方法を規定したものが SDK (Session Description Protocol) である。
この情報交換は、SIP がセッションを生成している間に行われる(ネゴシエーション)。
RTP
RTP (Real-time Transport Protocol) は、音声や映像などリアルタイム性のあるデータをストリーミング配信する仕組みを備えたプロトコルである。
送信ホストはシーケンス番号とタイムスタンプをパケットごとに付与している。
受信ホストはパケット間の時間差を調整し、リアルタイム性を確保しながらデータを再生することができる。
SIP の構成要素
SIP を構成する要素は UA 及び SIP サーバである。
UA
UA の識別には SIP URI が用いられ、その書式は「sip:利用者識別子@ドメイン名」という URI 形式となり、利用者識別子の部分には電話番号を入れることができる。
同一ドメイン内の通信であれば @ドメイン名 を省略しても良い。
例
sip:22444032@phonesystem.3cx.com
sip:joe.bloggs@212.123.1.213
sip:support@phonesystem.3cx.com
SIP サーバ
UA で電話をかけるとき、発呼する側は、着呼する側の電話番号や利用者識別子を知っている。
このとき、もしも着呼側 UA の IP アドレスを知っていれば (発呼側 UA に登録されていれば) UA 間で SIP 通信を直接やり取りし、セッションを生成することができる。この際、SIP サーバは不要となる。しかし、IP アドレスを知らない場合は SIP サーバが必要となる。
SIP サーバを用いる場合、UA は自分の利用者識別子、IP アドレスを含む登録メッセージを SIP サーバに事前に送信しておく。
SIP サーバはこれを受信し、自分が仲介するすべての UA について SIP URI と IP アドレスの対応付けを登録しておく。
通話するとき、UA は SIP サーバにセッションの生成を要求し、その要求メッセージの中で、着呼側の SIP URI を指定する。SIP サーバは指定された SIP URI から IP アドレスを割り出すことができるので、セッション生成を仲介することができる。