見出し画像

実はHTTPの仕組みを流用してました:セッション開始プロトコルSIP

「IP電話で相手を呼び出すのは、いったいどんな仕組みだろう?」

はい、こんにちは!松井真也です。シリーズ「音声通話で世界とつながる:VoIP超入門」第3回でございます。

前回は、IP電話(VoIP技術を使ったサービス)網を構成する機器についてお話ししました。VoIPサーバ(呼制御、端末情報の管理)とVoIPゲートウェイ(アナログデジタル変換)の役割をご紹介しました。いずれも、企業内で利用する際の重要機器でしたね。

さて、今回は、通話の開始と終了を管理する「SIP」というプロトコルをご紹介します。このプロトコルは、あくまで通話のセッションを管理するものです。音声パケットの伝送は、また別のプロトコルが担当します。

今回は、前者の方に集中しましょう。主に通話の開始までの手続きで力を発揮します!

では、いってみましょう!

SIPとは?

SIP(Session Initiation Protocol)は、IP電話網でリアルタイム通信を可能にするためのプロトコルです。Initiationは「開始」という意味です。文字通り、通話の開始する際に活躍します!

このプロトコルの最大の特徴は、通信セッションの確立や切断を柔軟に管理できる点にあります。実は、端末(ユーザエージェント;UA)のやり取りは、HTTPの仕組みにそっくりなんですよ!

SIPの基本動作

SIPでは、基本動作が「SIPリクエスト」と「SIPレスポンス」に基づいています。

具体的には、電話をかける(発呼する)際には「INVITE」というリクエストが送られ、それに対して着呼する相手から「200 OK」というレスポンスが返ってきます(さらに発呼側が、「ACK」を返します)。

セッション開始の大きな流れ

上図では、URI(後述)とIPアドレスの紐づけのためにVoIPサーバを中継しています。が、発呼側UA直接に相手UAのIPアドレスを指定しても発呼できる仕組みです。

大きな流れは分かりましたね!

SIP通信のセットアッププロセス

では、少し掘り下げましょか。

SIPによる通信の始まりは、SIP URIを使用して相手を特定することからスタートします。

「URIってもしかして、https://xxxx みたいなやつか?」と思いたくなりますよね。分かります。が、SIPでのURIはちょっと形式が違います。具体的には、「sip:taro@192.168.1.34」のようになります。@の前がユーザ識別子、@の後がIPアドレス(又はドメイン名)です。ちょっとメールの仕組みに似てますね。

接続の手順は以下のように進みます。

  • 発信者がSIPサーバに対してINVITEリクエストを送信します。このリクエストには、着信側のURIが含まれています。

  • SIPサーバは、そのURIに対応するIPアドレスをデータベースから見つけます。発見次第、その端末に対してINVITEリクエストを転送します。

  • 着信側の端末がリクエストを受け取ると、発信者に向けて「180 Ringing」レスポンスを返し、着信があることを知らせます。これで発信者は「ただいま呼び出し中」であることが分かるわけですね。

  • 着信側が通話を受けると、「200 OK」レスポンスを発信者に送り返します。

そして、発信者がこのレスポンスを受け取った時点で、通信セッションが確立され、双方向の通信が開始されます!

なるほど!HTTPやメールの仕組みを流用しているので、セッション確立手順になんたか親しみを感じますね!


はい、本日はここまで。今回はIP電話でセッションを開始するためのプロトコル「SIP」についてご紹介しました。

次回は、音声パケットを伝送するプロトコル「RTP」を見ていきましょう!

では!


この記事が気に入ったらサポートをしてみませんか?