![Session Initiation Protocol Tutorial](/session_initiation_protocol/images/sip-mini-logo.jpg)
- 会话发起协议教程
- 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 = [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