
- 會話發起協議教程
- SIP - 首頁
- SIP - 簡介
- SIP - 網路元素
- SIP - 基本呼叫流程
- SIP - 訊息傳遞
- SIP - 響應碼
- SIP - 頭部資訊
- SIP - 會話描述協議
- SIP - 提供/應答模型
- SIP - 移動性
- SIP - 分支
- SIP - 代理和路由
- SIP 到 PSTN
- SIP - 編解碼器
- SIP - B2BUA
- SIP 有用資源
- SIP - 快速指南
- SIP - 有用資源
- SIP - 討論
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