SIP - 會話描述協議



SDP 代表會話描述協議。它用於以網路參與者能夠理解的格式描述多媒體會話。根據此描述,一方決定是否加入會議或何時或如何加入會議。

  • 會議的所有者透過傳送包含會話描述(例如所有者的姓名、會話的名稱、編碼、時間等)的多播訊息來在網路上釋出會議。根據這些資訊,廣告的接收者做出關於是否參與會話的決定。

  • SDP 通常包含在會話發起協議(通常稱為 SIP)的主體部分。

  • SDP 在 RFC 2327 中定義。SDP 訊息由一系列稱為欄位的行組成,這些欄位的名稱由單個小寫字母縮寫表示,並且為了簡化解析而按要求排序。

SDP 的用途

SDP 的目的是傳達有關多媒體會話中媒體流的資訊,以幫助參與者加入或收集特定會話的資訊。

  • SDP 是一種簡短的結構化文字描述。

  • 它傳達會話的名稱和目的、媒體、協議、編解碼器格式、時間和傳輸資訊。

  • 試探性參與者檢查這些資訊並決定是否加入會話,以及如果決定加入,如何以及何時加入會話。

  • 該格式的條目採用 = 的形式,其中 定義唯一的會話引數,而 為該引數提供特定值。

  • SDP 訊息的通用格式如下:

    x = parameter1 parameter2 ... parameterN

  • 該行以單個小寫字母開頭,例如 x。字母和 = 之間絕沒有空格,每個引數之間只有一個空格。每個欄位都有定義數量的引數。

會話描述引數

會話描述(* 表示可選)

  • v = (協議版本)
  • o = (所有者/建立者和會話識別符號)
  • s = (會話名稱)
  • i =* (會話資訊)
  • u =* (描述的 URI)
  • e =* (電子郵件地址)
  • p =* (電話號碼)
  • c =* (連線資訊 - 如果包含在所有媒體中則不需要)
  • b =* (頻寬資訊)
  • z =* (時區調整)
  • k =* (加密金鑰)
  • a =* (零個或多個會話屬性行)

協議版本

v= 欄位包含 SDP 版本號。由於 SDP 的當前版本為 0,因此有效的 SDP 訊息始終以 v = 0 開頭。

來源

o= 欄位包含有關會話發起者和會話識別符號的資訊。此欄位用於唯一標識會話。

  • 該欄位包含:

    o=<username><session-id><version><network-type><address-type>

  • username 引數包含發起者的登入名或主機名。

  • session-id 引數是網路時間協議 (NTP) 時間戳或用於確保唯一性的隨機數。

  • version 是一個數字欄位,每次會話更改時都會增加,也建議為 NTP 時間戳。

  • network-type 始終為 IN,表示網際網路。address-type 引數對於 IPv4 或 IPv6 地址,可以是 IP4 或 IP6,以點分十進位制形式或完全限定的主機名錶示。

會話名稱和資訊

s= 欄位包含會話的名稱。它可以包含任意數量的非零字元。可選的 i= 欄位包含有關會話的資訊。它可以包含任意數量的字元。

URI

可選的 u= 欄位包含一個統一資源指示符 (URI),其中包含有關會話的更多資訊。

電子郵件地址和電話號碼

可選的 e= 欄位包含會話主機的電子郵件地址。可選的 p= 欄位包含電話號碼。

連線資料

c= 欄位包含有關媒體連線的資訊。

  • 該欄位包含:

    c =<network-type><address-type><connection-address>

  • network-type 引數定義為 IN,表示網際網路。

  • address-type 定義為 IP4 表示 IPv4 地址,IP6 表示 IPv6 地址。

  • connection-address 是將傳送媒體資料包的 IP 地址或主機,可以是多播或單播。

  • 如果是多播,則 connection-address 欄位包含:

    connection-address=base-multicast-address/ttl/number-of-addresses

  • 其中 ttl 是生存時間值,number-of-addresses 指示從基本多播地址開始包含多少個連續的多播地址。

頻寬

可選的 b= 欄位包含有關所需頻寬的資訊。它採用以下格式:

b=modifier:bandwidth − value

時間、重複次數和時區

t= 欄位包含會話的開始時間和結束時間。

t=start-time stop-time

可選的 r= 欄位包含有關重複次數的資訊,可以使用 NTP 或以天 (d)、小時 (h) 或分鐘 (m) 為單位指定。

可選的 z= 欄位包含有關時區偏移的資訊。如果會話跨越夏令時到標準時間或反之亦然,則使用此欄位。

媒體公告

可選的 m= 欄位包含有關媒體會話型別的資訊。該欄位包含:

m= media port transport format-list

  • media 引數可以是音訊、影片、文字、應用程式、訊息、影像或控制。port 引數包含埠號。

  • transport 引數包含使用的傳輸協議或 RTP 配置檔案。

  • format-list 包含有關媒體的更多資訊。通常,它包含在 RTP 音訊影片配置檔案中定義的媒體有效負載型別。

Example:
m = audio 49430 RTP/AVP 0 6 8 99

這三種編解碼器之一可用於音訊媒體會話。如果目的是建立三個音訊通道,則將使用三個單獨的媒體欄位。

屬性

可選的 a= 欄位包含前面媒體會話的屬性。此欄位可用於擴充套件 SDP 以提供有關媒體的更多資訊。如果 SDP 使用者不完全理解,則可以忽略屬性欄位。對於媒體欄位中列出的每個媒體有效負載型別,可以有一個或多個屬性欄位。

SDP 中的屬性可以是

  • 會話級,或
  • 媒體級。

會話級表示屬性列在 SDP 中第一個媒體行之前。如果是這種情況,則該屬性適用於其下面的所有媒體行。

媒體級表示它列在媒體行之後。在這種情況下,該屬性僅適用於此特定媒體流。

SDP 可以包含會話級和媒體級屬性。如果同一個屬性同時出現,則媒體級屬性會覆蓋該特定媒體流的會話級屬性。請注意,連線資料欄位也可以是會話級或媒體級。

SDP 示例

下面是 RFC 2327 中的一個會話描述示例:

v = 0
o = mhandley2890844526 2890842807 IN IP4 126.16.64.4
s = SDP Seminar
i = A Seminar on the session description protocol
u = http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps
e = mjh@isi.edu(Mark Handley)
c = IN IP4 224.2.17.12/127
t = 2873397496 2873404696
a = recvonly
m = audio 49170 RTP/AVP 0
m = video 51372 RTP/AVP 31
m = application 32416udp wb
a = orient:portrait
廣告