Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

SDP(エスディーピー)とは | 意味や読み方など丁寧でわかりやすい用語解説

SDP(エスディーピー)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

サービスディスカバリプロトコル (サービスディスカバリプロトコル)

英語表記

Software-Defined Perimeter (ソフトウェア・ディファインド・ペリメーター)

用語解説

SDPは、Session Description Protocolの略であり、インターネット上でのマルチメディア通信セッションの確立に必要な情報を記述し、交換するためのプロトコルである。主にVoIP(Voice over IP)やビデオ会議、ストリーミングなどのリアルタイム通信において利用され、通信に参加する機器やソフトウェア間で、どのようなメディア(音声、映像など)を、どのような形式(コーデック)、どのような方法(プロトコル)、どのような場所(IPアドレスとポート番号)で送受信するかを合意するために不可欠な役割を果たす。SDP自体はメディアデータを直接転送する機能は持たず、あくまでセッションの設定情報を記述するメタデータプロトコルとして、SIP(Session Initiation Protocol)などのシグナリングプロトコルと組み合わせて使用される点が特徴である。

インターネットを介したマルチメディア通信は、異なるメーカーの機器や異なるソフトウェアが相互に接続し、円滑に情報を交換できなければ意味をなさない。SDPは、まさにその「共通言語」として機能し、通信の開始前に参加者間で必要な技術的な詳細を事前に取り決めることを可能にする。例えば、ある参加者が「私はG.711という音声コーデックを使って、RTPプロトコルでIPアドレス192.168.1.100のポート5000に音声を送信できます」と提案し、別の参加者が「私もG.711に対応しており、音声をIPアドレス192.168.1.101のポート5002で受信できます」と応答することで、両者間の音声通信が成立する。このような情報のやり取りを標準化された形式で行うのがSDPの核心的な役割である。

SDPメッセージは、人間が読みやすいテキスト形式で構成されており、行頭に一文字のタイプフィールドと、それに続く構造化された値のペアで情報が記述される。以下に、主要なフィールドとその意味をいくつか挙げる。

v= (Protocol Version): SDPプロトコルのバージョンを示す。通常はv=0が使われる。 o= (Originator and Session Identifier): セッションの作成者、セッションID、バージョン番号、ネットワークタイプ、アドレスタイプ、接続アドレスなど、セッションを一意に識別するための情報を含む。これにより、セッションの変更や更新を追跡できるようになる。 s= (Session Name): セッションの人間が読みやすい名前。例えば、「My Video Conference」。 i= (Session Information): セッションに関する詳細な説明や情報。 c= (Connection Information): セッション全体の接続情報、具体的にはメディアを送受信するIPアドレスを示す。複数のメディアストリームが同じIPアドレスを使う場合は、ここで指定される。 t= (Time Description): セッションがアクティブになる開始時刻と終了時刻を記述する。 m= (Media Description): 個々のメディアストリームに関する詳細な情報を示す、SDPの最も重要なフィールドの一つ。メディアタイプ(audio, video, text, applicationなど)、メディアを受信するポート番号、メディア転送に使用するプロトコル(主にRTP/AVP)、そしてそのメディアで利用可能なフォーマット(コーデックとそのペイロードタイプ)が指定される。例えば、m=audio 50000 RTP/AVP 0 8は、「ポート50000でRTP/AVPプロトコルを使い、コーデック0番(G.711 PCMU)と8番(G.711 PCMA)の音声を送受信する」という意味になる。 a= (Attribute Line): メディアストリームやセッション全体の追加属性を記述する。非常に柔軟で多様な情報を含めることができ、例えばコーデックに関する詳細なパラメータ(サンプリングレート、チャネル数など)、セッションの方向性(sendrecv: 送受信、sendonly: 送信のみ、recvonly: 受信のみ)、メディアの暗号化方式、RTCPのポート番号などが指定される。

これらのフィールドを用いて、通信の参加者間で「Offer/Answerモデル」と呼ばれる手順でSDPメッセージが交換されることが一般的である。まず、一方の参加者(オファー側)が、自身が提供できるメディア能力や希望する通信設定をSDPメッセージに記述して相手に送信する。これが「Offer」である。メッセージを受け取った相手(アンサー側)は、そのOffer内容を分析し、自身が対応可能な能力の中から最適なものを選択したり、自身の接続情報を記述したりして、SDPメッセージで応答する。これが「Answer」である。このOfferとAnswerの交換によって、両者間でメディアのタイプ、コーデック、転送プロトコル、IPアドレス、ポート番号といったすべての詳細が合意され、その後に実際のメディアデータ転送が開始される。このプロセスがなければ、双方向のリアルタイム通信を確立することは極めて困難となる。

SDPが提供する標準化された記述形式は、異なるベンダーが提供する様々な通信機器やサービス間の相互運用性を飛躍的に高める。新たなメディアタイプやコーデックが登場した場合でも、SDPの柔軟な属性フィールド(a=)を利用することで、容易にその情報を追加し、通信能力を拡張できる。これにより、VoIPサービスプロバイダーや企業内通信システム、さらにはWebRTCのようなウェブベースのリアルタイム通信アプリケーションまで、幅広い分野でSDPが基盤技術として利用されているのである。

ただし、SDP自体には通信内容の暗号化や認証といったセキュリティ機能は含まれていない点に注意が必要である。SDPメッセージは、通常、SIPやHTTP/TLSといった基盤となるシグナリングプロトコルのセキュリティ機能によって保護されるか、あるいはSRTP(Secure Real-time Transport Protocol)のようなメディア転送プロトコルにおける暗号化と組み合わせて利用される。SDPの役割はあくまでセッション記述情報の提供に特化しており、実際のメディア転送のセキュリティやリアルタイム性の保証は、SDPと連携する他のプロトコルの責任範囲となる。システムエンジニアを目指す上では、このように複数のプロトコルが連携して一つのサービスを成り立たせている構造を理解することが重要である。

関連コンテンツ