简介
SDP主要是用来为多媒体会话提供媒体信息。它定义了两种协议标签:RTP/AVP和UDP,它们都表示不可依靠,无连接的协议类型。除此之外,使用TCP的应用也可以在SDP中获取到相关的信息。TCP协议在SDP使用中定义了两种使用方式,分别是’setup’和’connection’。
协议标识:
当SDP中用’m='后面为TCP时,说明当前会话要使用TCP协议。
会话属性:
a=setup 主要是表示dtls的协商过程中角色的问题,谁是客户端,谁是服务器
a=setup:actpass 既可以是客户端,也可以是服务器
a=setup:active 客户端
a=setup:passive 服务器
a=setup:holdconn 终端临时终止连接
连接属性:
a=connection 当前会话两端的连接状态信息
a=setup:new 新的连接
a=setup:existing 已存在的连接
标准文档: RFC
- 场景示例:
让我们假设Alice想要与Bob进行音频和数据通道通信,所以Alice创建了她的本地RTCPeerConnection,并且得到了相应的SDP请求。
根据RFC 5763,SDP请求的a=setup属性必须是“actpass”,也就是应答方(Bob)需要决定谁是DTLS用户谁是DTLS服务器。
Bob生成相应的SDP应答,其中包括a=setup:active,意思是Bob成为了DTLS用户,而Alice成为DTLS服务器。
在ICE和DTLS处理之后,Alice和Bob两个人互相交换了他们的音频和数据。
之后,Bob想要在通信中加上网络摄像头捕捉的视频,所以他得到了一个包括网络摄像头流信息的SDP重请求。
还是,依据RFC 5673,这个SDP重请求中要有a=setup:actpass。
Alice接到SDP重请求并且产生一个重响应。
为了保持现有的DTLS关联开放,这个SDP重响应必须有a=setup:passive项。
- 创建TCP连接
发送端:
m=image 54111 TCP t38
c=IN IP4 192.0.2.2
a=setup:passive
a=connection:new
应答端::
m=image 9 TCP t38
c=IN IP4 192.0.2.1
a=setup:active
a=connection:new
- 创建TCP连接
发送端:
m=image 54111 TCP t38
c=IN IP4 192.0.2.2
a=setup:actpass
a=connection:new
应答端:
m=image 54321 TCP t38
c=IN IP4 192.0.2.1
a=setup:passive
a=connection:new
- 复用TCP连接
发送端:
m=image 54321 TCP t38
c=IN IP4 192.0.2.1
a=setup:passive
a=connection:existing
应答端:
m=image 9 TCP t38
c=IN IP4 192.0.2.2
a=setup:active
a=connection:existing
- 替换TCP连接
发送端:
m=image 54111 TCP t38
c=IN IP4 192.0.2.2
a=setup:passive
a=connection:existing
应答端:
m=image 9 TCP t38
c=IN IP4 192.0.2.3
a=setup:active
a=connection:new