【SIP教程】 SDP(Session Description Protocol)会话描述协议

概述

SDP用来描述多媒体会话的应用层控制协议,为会话通知、会话邀请和其它形式的多媒体会话初始化等目的提供了多媒体会话描述。

  • 是一个基于文本的协议,这样就能保证协议的可扩展性比较强,这样就使其具有广泛的应用范围;SDP 完全是一种会话描述格式 ― 它不属于传输协议 ― 它只使用不同的适当的传输协议,包括会话通知协议(SAP)、会话初始协议(SIP)、实时流协议(RTSP)、MIME 扩展协议的电子邮件以及超文本传输协议(HTTP)。SDP 不支持会话内容或媒体编码的协商,所以在流媒体中只用来描述媒体信息。

  • SDP通常包含SIP会话发起协议的主体部分中。

  • SDP是在RFC 2327中定义的。SDP消息由一系列称为字段的行组成,其名称由单个小写字母缩写,并且以所需顺序来简化解析。

SDP协议的目标

SDP的作用是在多媒体会话中传达关于媒体流的信息,以帮助参与者加入或收集特定会话的信息。

  • SDP是一个短结构化文本描述。

  • 它传送会话的名称、地址,媒体,协议,编解码格式,定时及协议信息。

  • 临时参与者检查这些信息并决定是否加入会话,以及决定何时如何加入会话。

  • 该格式具有 = 形式的条目,其中定义唯一会话参数,为该参数提供的值。

  • SDP消息的一般形式是:x = parameter1 parameter2 … parameterN

  • 每行以单个小写字母开头,例如x,字母和=之间不能有空格,数值可以有多个,每个数值间用空格分隔。

SDP参数说明

如下(*表示可选)

v =(协议版本)
o =(所有者/创建者,会话ID)
s =(会话名称)
i = *(会话信息)
u = *(描述的URI)
e = *(电子邮件地址)
p = *(电话号码)
c = *(连接信息 - 如果包含在所有媒体中则不需要)
b = *(带宽信息)
z = *(时区调整)
k = *(加***)
a = *(零个或多个会话属性行)

协议版本

v =字段包含SDP版本号, 因为SDP的当前版本是0,所以有效的SDP消息将始终以v = 0开始。

所有者/创建者,会话ID

o =字段包含有关会话发起者和会话ID的信息,用此字段唯一标识会话。

该字段包含:

o = username session-id version network-type address-type
username:包含发起方的登录名或主机。
session-id:是用于确保唯一性的网络时间协议(NTP)时间戳或随机数。
version:是一个数字字段,随着会话的变化而增加,也建议使用NTP时间戳。
network-type:是网络类型,对于Internet始终为IN。
address-type:为IPv4或IPv6地址6,以点分十进制形式或主机名。

会话名称与信息

s =字段是会话的名称, 它可以包含任何非零数字的字符。
可选的i =字段包含会话的信息, 它也可以包含任意数量的字符。

URI

可选的u =字段,数值为URI,它可以标识会话的更多信息。

电子邮件地址和电话号码

可选的e =字段,包含主机的电子邮件地址。
可选的p =字段,包含电话号码。

会话连接信息

c =字段,会话连接的信息。

该字段包含

c = network-type address-type connection-address
network-type:对于Internet,网络类型参数定义为IN。
address-type:地址类型,IPv4地址为IP4,IPv6地址为IP6。
connection-address:连接地址,是要发送媒体分组的IP地址或主机,其中可以是多播或单播。
如果组播,则connection-address字段包含:
connection-address = base-multicast-address / ttl / number-of-addresses
其中ttl是存活时间值,并且地址数量表示从基本多播地址开始包含多少个连续的多播地址。

带宽

可选b =字段,包含所需带宽的有关信息。 它的形式:
b = modifier:bandwidth - value

时间,重复次数和时区

t =字段,包含会话的开始时间,停止时间。
t =开始时间 停止时间

可选的r =字段,包含可以在NTP中或在天( d ),小时( h )或分钟( m )中指定的重复时间的有关信息。

可选的z =字段,包含时区偏移的有关信息。 如果发生的会话跨越从夏令时到标准时间的更改,则使用此字段,反之亦然。

媒体公告

可选的m =字段,包含媒体会话类型的有关信息。 该字段包含:

m =media(媒体类型) port(端口) transport format(传输格式列表)
media:可以是音频,视频,文本,应用程序,消息,图像或控件。 port:端口号。
transport format:包含所使用的传输协议或RTP配置文件。
格式列表包含有关媒体的更多信息,通常它会包含RTP音频视频中定义的媒体有效载荷类型。
例如:m = audio 45678 RTP/AVP 0 6 8 99

属性

可选a =字段,包含各媒体会话的属性。这个字段可用来为SDP提供更多的媒体信息,可以有一个或多个属性字段来列出每个媒体类型的有效载荷。

属性a在SDP中可以出现在会话层或媒体层。
在会话层表示共有,即在所有的媒体中都生效。
在媒体层表示只适用于当前媒体中。

SDP中可以包括会话层和媒体层属性。如果相同的属性在会话层和媒体层都出现,那么媒体层的属性会覆盖会话层的属性值。注意,connection连接数据字段也可以是会话层或媒体层。

一个完整SDP例子

下面是一个来自 RFC 2327的SDP例子:

v = 0
o = vvsip23982638 23982638 IN IP4 136.5.68.48
s = SDP Seminar
i = A Seminar on the session description protocol
u = http://www.vvsip.com/staff/M.Handley/sdp.03.ps
e = [email protected](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

SDP协议扩展

有许多的SDP扩展定义。常见的总结在下表中:
【SIP教程】 SDP(Session Description Protocol)会话描述协议