SIP
音声通話や映像会議などのセッションを開始・変更・終了するためのアプリケーション層プロトコル。通信条件の記述にはSDP、メディアの転送にはRTPなどを組み合わせる。
イマシルちゃんの解説
インターネットで通話するときは、声を運ぶだけでなく、相手を呼び出したり通話を終えたりする連絡も必要なんだ。
この連絡を担うプロトコルがSIPだよ。
たとえば発信側はINVITEという要求で相手を通話へ誘い、相手の応答を受けて通話の準備を進めるんだ。
成立した通話を終えるときにはBYEという要求を送るよ。
声や映像そのものはRTPなどが運ぶから、SIPが担当するのは通話を制御する仕事なんだ。
役割が分かれているから、相手を呼び出せるのに声が聞こえないときは、音声が通る経路を別に調べられるよ。
この解説はわかりやすかったですか?
より深い解説
呼制御の役割
SIPはRFC 3261を基本仕様とする。通話などの成立に必要なシグナリングを扱い、メディアの内容そのものを運ぶことは主な役割ではない。UDPやTCPの上で利用でき、TLSによる保護も使える。
端末とサーバ
| 要素 | 役割 |
|---|---|
| ユーザエージェント | 要求を送ったり応答したりする端末側の機能 |
| SIPプロキシ | SIPの要求を適切な相手へ中継する |
| レジストラ | 利用者の識別先と現在の連絡先の対応を受け付ける |
ここでの中継機能はSIPの信号を扱うものであり、Web閲覧用のHTTPプロキシと同一のプロトコルではない。利用者の識別子と、端末が実際に接続している場所を分けることで、連絡先の変更に対応できる。
主な要求
| メソッド | 用途 |
|---|---|
| INVITE | セッションへの参加を求める。既存の通信条件の変更にも使う |
| ACK | INVITEへの最終応答を確認する |
| BYE | 確立済みのセッションを終了する |
| CANCEL | まだ完了していない要求の処理を取り消す |
| REGISTER | 現在の連絡先を登録する |
| OPTIONS | 相手の対応能力を問い合わせる |
「呼出し中の取消し」と「成立した通話の終了」は異なる操作である。登録を行っただけで、相手との通話が始まるわけでもない。
連絡先の登録と認証
SIPの端末機能をSIP UA(User Agent)という。IP電話機やソフトフォンなどは、REGISTER要求で利用者のSIP URIと現在の連絡先をレジストラへ登録する。IP-PBXがレジストラの機能を持つ構成もある。ここでいう位置登録は、主に着信先となる連絡先の登録であり、GPSの位置情報を登録する意味ではない。
第三者による勝手な登録を防ぐため、サーバはダイジェスト認証で登録を要求したUAを確かめられる。典型的な成功例は次のようになる。
| 順序 | 方向とメッセージ | 意味 |
|---|---|---|
| 1 | UAからREGISTER | 連絡先の登録を要求する |
| 2 | サーバから401 Unauthorized | WWW-Authenticateでnonceなどのチャレンジを示す |
| 3 | UAから認証情報付きREGISTER | 秘密とチャレンジなどから計算した応答値をAuthorizationに入れる |
| 4 | サーバから200 OK | 認証と登録処理が成功したことを知らせる |
最初の401は、パスワードが誤っていると確定したことを必ずしも意味しない。まだ認証情報のない要求に、計算材料を渡す正常な認証手順としても使われる。REGISTERの成功応答に、INVITEの成功応答で使うACKは送らない。
SIPのDigestでは古いMD5だけでなく、RFC 8760で追加されたSHA-256やSHA-512/256も扱う。ダイジェスト認証はSIP本文や音声全体の暗号化ではないので、通信路やメディアの保護は別に行う。
ブラウザからSIPを使う
RFC 7118はSIPメッセージをWebSocketで運ぶ方法を定める。TLSで保護した接続をWSSという。HTTP/1.1のUpgradeによってWebSocketの接続を確立した後、その上でREGISTERによる登録やINVITEによる発信を行える。
たとえばブラウザで通話サービスへ接続する場合は、WebSocket接続の確立、必要な登録と認証、INVITEによる通話開始の順に処理を進める。WebSocketが運ぶのはこのシグナリングであり、話し声を同じ経路でSIPメッセージとして流すという意味ではない。WebRTCなどで音声を送る場合は、メディアの経路と暗号化を別に確立する。
通話が成立する流れ
典型的な成功例では、発信側が開始要求を送り、着信側が呼出し中などの暫定応答を返す。相手が応答すると200 OKが返り、発信側が受諾を確認する要求を送る。途中の応答や認証要求は構成によって異なる。
成功応答の前後でSDPを交換し、使うコーデックやメディアの受信先などを合意する。RTPで運ぶ音声は、必ずしもSIPの中継サーバを通らない。メディア中継装置を用いる構成もある。
通信障害を切り分ける
| 現象 | 確認する観点 |
|---|---|
| 相手を呼び出せない | 名前解決、登録情報、信号の経路、認証 |
| 呼び出せるが音が出ない | SDPの接続先、NATの変換、メディアの許可ルール |
| 音が片方向だけ届く | 両方向のアドレス・ポートと経路 |
| 音が途切れる | パケット損失、ジッタ、遅延、帯域 |
TCPにも接続確立時の確認応答があるが、同名の語だけで同じ層の処理と考えてはいけない。SIPの要求と応答は、アプリケーションとして通話を制御する。
保護する範囲
信号をTLSで保護しても、音声が自動的に暗号化されるわけではない。メディアの保護にはSRTPなどを用いる。信号、音声、認証情報のそれぞれについて、どの区間を守るかを確認する。
参考資料
実際の試験ではここに出る!全4問
ネットワークスペシャリスト
テクニカルエンジニア(ネットワーク)
- 午前