📜  SIP-会话描述协议

📅  最后修改于: 2020-10-29 03:49:39             🧑  作者: Mango


SDP代表会话描述协议。它用于描述参与者通过网络理解的格式的多媒体会话。取决于此描述,一方可以决定是否加入会议或何时或如何加入会议。

  • 会议的所有者通过发送多播消息在网络上对其进行广告,该消息包含会话的描述,例如,所有者的名称,会话的名称,编码,时间等。根据这些信息,广告的接收者决定参加会议。

  • SDP通常包含在会话启动协议(通常称为SIP)的主体部分中。

  • SDP在RFC 2327中定义。SDP消息由一系列称为字段的行组成,其名称由一个小写字母缩写,并且按要求的顺序简化了解析过程。

SDP的目的

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

  • SDP是简短的结构化文本描述。

  • 它传达了会话的名称和目的,媒体,协议,编解码器格式,时间和传输信息。

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

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

  • 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> <版本> <网络类型> <地址类型>

  • username参数包含发起者的登录名或主机。

  • session-id参数是网络时间协议(NTP)时间戳或用于确保唯一性的随机数。

  • 版本是一个数字字段,会话的每次更改都会增加该字段,也建议将其作为NTP时间戳。

  • 对于Internet,网络类型始终为IN。 address-type参数是点分十进制形式或完全限定的主机名的IPv4或IPv6地址的IP4或IP6。

会话名称和信息

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

URI

可选的u =字段包含统一资源指示符(URI),其中包含有关会话的更多信息

电子邮件地址和电话号码

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

连接数据

c =字段包含有关媒体连接的信息。

  • 该字段包含-

    c = <网络类型> <地址类型> <连接地址>

  • network-type参数定义为Internet的IN。

  • 地址类型定义为IP4(用于IPv4地址)和IP6(用于IPv6地址)。

  • 连接地址是将要发送媒体数据包的IP地址或主机,可以是多播或单播。

  • 如果是多播,则连接地址字段包含-

    连接地址=基本多播地址/ ttl /地址数

  • 其中ttl是生存时间值,地址数指示从基本多播地址开始包含多少个连续多播地址。

带宽

可选的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