探索SDP协议:多媒体会话的秘密通道

发布于:2024-05-17 ⋅ 阅读:(34) ⋅ 点赞:(0)

在 SIP 协议详解 中提到过一种Sip body消息体格式message/sdp,这一节来了解一下SDP消息格式。

SDP(Session Description Protocol)是一种会话描述协议,由RFC4566规范定义。其采用文本消息的格式,用于描述多媒体会话的参数和配置信息。
SDP用于在互联网上传输多媒体会话的配置信息,常见于音视频、实时通信会话等。SDP协议提供一种灵活且可扩展的机制,通过在会话的参与者之间交换和传递SDP会话描述信息,实现多媒体会话参数与配置的协商和管理。这种机制为多媒体会话的协商与管理提供了完备的解决方案。

SDP是一种纯粹的会话描述的格式,并非传输协议,在会话配置信息的交换上,依赖其他传输协议(例如:SIP、HTTP)来完成。
SDP is purely a format for session description -- it does not incorporate a transport protocol, and it is intended to use different transport protocols as appropriate, including the SAP(Session Announcement Protocol) ,SIP(Session Initiation Protocol) , RTSP(Real Time Streaming Protocol) ,electronic mail using the MIME extensions, and the Hypertext Transport Protocol.

  • SDP协议结构
  • SDP协议举例

一、协议结构

SDP 会话描述由会话描述部分(Session description)和后跟零个或多个媒体描述部分(Media description)组成。会话描述部分以“v=”行开始,并继续到第一个媒体描述部分。每个媒体描述部分都以“m=”行开始,并继续到下一个媒体描述部分或整个会话描述的末尾。
An SDP session description consists of a session-level section followed by zero or more media-level sections. The session-level part starts with a "v=" line and continues to the first media-level section. Each media-level section starts with an "m=" line and continues to the next media-level section or end of the whole session description. In general, session-level values are the default for all media unless overridden by an equivalent media-level value.

SDP协议构成如下图所示:

1.1 Session description

Type

含义

解释

举例

v

protocol version

SDP协议版本号

v=0

o

origion

会话发起者的描述

o=jdoe 2890844526 2890842807 IN IP4 10.47.16.5

o={用户名}{session id} {会话版本} {网络类型}{地址类型}{地址}

s

Session Name

会话名称(在整个会话中有且只有一个 s= )。

s=描述会话的简短名称。

s=SDP Seminar

i

session information

会话的描述信息

i=提供对会话的更详细描述

i=A Seminar on the session description protocol

u

URI

会话补充信息的指针(可选字段)

u={uri}

u=http://www.example.com/test/sdp.pdf

e

Email Address

会话负责人的联系信息(可选字段)

e={email}

e=j.doe@example.com (Jane Doe) 或

e=Jane Doe <j.doe@example.com\>

p

Phone Number

会话负责人的联系信息(可选字段)

p=

p=+86 187xxxxxxxx

c

Connection Data

连接信息:包括类型和地址等信息

c=IN IP4 10.47.16.5

(在Session description中包含单个“c=”字段 或 每个Media description中至少包含一个“c=”字段)

c={IN:网络类型} {IP4:地址类型} {IP地址}

b

Bandwidth

带宽要求(每秒千比特)

b={bwtype}:{bandwidth}

bwtype取值CT或AS。CT代表总带宽数字,AS代表单个媒体的带宽数字。

b=CT:128

z

Time Zones

若安排一个同处于冬季和夏季的会话,必须明确指定会话是按照哪个时区安排的。

z={adjustment time} {offset} {adjustment time} {offset} ….

z=2882844526 -1h 2898848070 0

k

Encryption Keys

加密密钥(不再建议使用)

k=base64:{编码的加密密钥}

k=uri:{获取密钥的uri}

k=提示(加入会话时,用于提示用户输入密钥)

a

Attributes

会话或媒体的属性(开发者可根据需要新增属性类型)

a={flag} 或 a={attribute}:{value}

a=rtpmap:0 PCMU/8000 (指定了媒体格式信息)

1.2 Time description

Type

含义

解释

举例

t

Timing

会话的起始和结束时间

t=2873397496 2873404696

t={开始时间} {结束时间}

r

Repeat Times

重复次数

r={repeat interval} {active duration} {offsets from start-time}

r={重复间隔}{活动时长}{启动时间偏移}

1.3 Media description

Type

含义

解释

举例

m

Media Descriptions

媒体描述:包括媒体类型、端口号、传输协议和格式等信息

m=video 49170/2 RTP/AVP 31
m={media}{port}{proto}{fmt}
m={视频}{端口号}{传输协议和格式}{媒体格式}

b

Bandwidth

带宽要求(每秒千比特)
bwtype取值CT或AS。CT代表总带宽数字,AS代表单个媒体的带宽数字。

b={bwtype}:{bandwidth}
b=AS:128

二、协议举例

SDP配置信息举例

SDP会话描述配置信息举例如下所示:

SDP举例:

// Session description
v=0
o=jdoe 2890844526 2890842807 IN IP4 10.47.16.5
s=SDP Seminar
i=A Seminar on the session description protocol
u=http://www.example.com/test/sdp.pdf
e=j.doe@example.com (Jane Doe)
c=IN IP4 224.2.17.12/127
// Time description
t=2873397496 2873404696
a=recvonly
// Media description
m=audio 49170 RTP/AVP 0
m=video 51372 RTP/AVP 99
a=rtpmap:99 h263-1998/90000