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 = [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
广告