SIP - 会话描述协议
SDP 代表会话描述协议。它用于以网络参与者可以理解的格式描述多媒体会话。根据此描述,一方决定是否加入会议或者何时或如何加入会议。
会议的所有者通过发送包含会话描述(例如所有者姓名、会话名称、编码、计时等)的多播消息来通过网络进行广告。根据这些信息,广告的接收者就参加会议做出决定。
SDP 通常包含在会话发起协议(通常称为 SIP)的主体部分中。
SDP 在 RFC 2327 中定义。SDP 消息由一系列称为字段的行组成,这些行的名称由单个小写字母缩写,并且按所需的顺序排列以简化解析。
SDP 的目的
SDP 的目的是在多媒体会话中传达有关媒体流的信息,以帮助参与者加入或收集特定会话的信息。
SDP 是一种简短的结构化文本描述。
它传达会话的名称和目的、媒体、协议、编解码器格式、计时和传输信息。
暂定参与者检查这些信息并决定是否加入会话以及如何以及何时加入会话(如果决定这样做)。
该格式具有 <type> = <value> 形式的条目,其中 <type> 定义唯一的会话参数,<value> 提供该参数的特定值。
SDP 消息的一般形式是 -
x = 参数1 参数2 ... 参数N
该行以单个小写字母开头,例如 x。字母和 = 之间没有任何空格,并且每个参数之间只有一个空格。每个字段都有定义数量的参数。
会话描述参数
会话描述(* 表示可选)
- v =(协议版本)
- o =(所有者/创建者和会话标识符)
- s =(会话名称)
- i =*(会话信息)
- u =*(描述的URI)
- e =*(电子邮件地址)
- p =*(电话号码)
- c =*(连接信息 - 如果包含在所有媒体中则不需要)
- b =*(带宽信息)
- z =*(时区调整)
- k =*(加密密钥)
- a =*(零个或多个会话属性行)
协议版本
v=字段包含SDP版本号。由于 SDP 的当前版本为 0,因此有效的 SDP 消息将始终以 v = 0 开头。
起源
o= 字段包含有关会话发起者和会话标识符的信息。该字段用于唯一标识会话。
该字段包含 -
o=<用户名><会话 ID><版本><网络类型><地址类型>
用户名参数包含发起者的登录名或主机。
session -id参数是网络时间协议 (NTP) 时间戳或用于确保唯一性的随机数。
版本是一个数字字段,每次更改会话时都会增加该字段,也建议使用 NTP 时间戳。
对于 Internet,网络类型始终为 IN。地址类型参数是 IP4 或 IP6,表示 IPv4 或 IPv6 地址,采用点分十进制形式或完全限定的主机名。
会话名称和信息
s= 字段包含会话的名称。它可以包含任意非零数量的字符。可选的 i= 字段包含有关会话的信息。它可以包含任意数量的字符。
统一资源标识符
可选的 u= 字段包含统一资源指示符 (URI),其中包含有关会话的更多信息
电子邮件地址和电话号码
可选的 e= 字段包含会话主机的电子邮件地址。可选的 p= 字段包含电话号码。
连接数据
c= 字段包含有关媒体连接的信息。
该字段包含 -
c =<网络类型><地址类型><连接地址>
网络类型参数定义为 IN(表示互联网)。
地址类型对于 IPv4 地址定义为 IP4,对于 IPv6 地址定义为 IP6。
连接地址是将发送媒体数据包的 IP 地址或主机,可以是多播或单播。
如果是多播,连接地址字段包含 -
连接地址=基本多播地址/ttl/地址数
其中ttl是生存时间值,number-of-addresses 表示从基本多播地址开始包含多少个连续多播地址。
带宽
可选的 b= 字段包含有关所需带宽的信息。它的形式是 -
b=修饰符:带宽-值
时间、重复次数和时区
t= 字段包含会话的开始时间和停止时间。
t=开始时间 停止时间
可选的 r= 字段包含有关重复时间的信息,可以以 NTP 或以天 ( d )、小时 ( h ) 或分钟 ( m ) 为单位指定。
可选的z = 字段包含有关时区偏移的信息。如果正在发生的会话跨越从夏令时到标准时间的更改,则使用此字段,反之亦然。
媒体公告
可选的m = 字段包含有关媒体会话类型的信息。该字段包含 -
m= 媒体端口传输格式列表
媒体参数是音频、视频、文本、应用程序、消息、图像或控制。port 参数包含端口号。
传输参数包含所使用的传输协议或RTP配置文件。
格式列表包含有关媒体的更多信息。通常,它包含 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