什么是SDP - 会话描述协议?

SDP是会话描述协议(Session Description Protocol)的缩写。会话描述协议定义了一个用于在两个(通常是)终端之间交换媒体(通常是流媒体)参数的标准。它已被IETF发布为RFC 4566。SDP通常嵌入或封装在另一个协议中,最广泛使用的应用是在大多数IP电话应用程序中的SIP协议内部。简单来说,SDP协议是媒体终端对其接收规格和功能的声明;典型的声明会告诉我们:

  • 哪个IP地址准备接收传入的媒体流
  • 哪个端口号正在监听传入的媒体流
  • 终端期望接收什么类型的媒体(通常是音频)
  • 终端期望用什么协议交换信息(通常是RTP)
  • 终端能够解码的压缩编码(编解码器)

...等等。在典型的会话设置过程中,我们会看到两个终端参与会话,每个终端都会发送一个SDP来告知另一个终端其规格和功能。SDP本身并不传输任何媒体,而仅限于协商一组兼容的媒体交换参数;媒体流本身由不同的通道和协议处理。看看这个简单的例子:

v=0

o=MyStreamer 2398026505 2307593197 IN IP4 10.20.30.40

s=MyStreamer Audio Session

c=IN IP4 10.11.12.13

t=0 0

m=audio 15010 RTP/AVP 0 101

a=rtpmap:0 PCMU/8000

a=rtpmap:101 telephone-event/8000

a=sendrecv

...我们可以看到终端声明它希望接收媒体

  • 在IP地址10.11.12.13上("c="参数)
  • 在端口号15010上(在"m="参数中声明)
  • 类型为音频(在"m="参数中声明)
  • 通过RTP协议,有2个可能的编解码器,编号分别为0和101,其中:
  • 编解码器0被定义为8000Hz的PCMU
  • 编解码器101被定义为8000Hz的"telephone-event"(实际上是DTMF音)
  • 在双向模式下("a=sendrecv")

更多阅读