SDP (rfc4566) 部分翻译

来源:互联网 发布:淘宝短信回访话术 编辑:程序博客网 时间:2024/06/04 18:20

SDP为诸如SAP(SESSION ANNOUNCEMENT PROTOCAL) 的会话announcement 提供会话描述格式。


SDP在多播下有两种用途(1)联系已经存在的会话(2)传播足够的信息能够加入或者参与到session。

单播环境下只用到第2个用途。


SDP包括:

o session名字 用途

o 秒计算的session活动时间

o 组成session的媒体

o 接受这些媒体的信息(地址、端口、格式等)


参与到session中的资源是有限的,一些额外信息需要提供:

o session使用的带宽

o 个人负责的session的联系信息



4.1 媒体和传输信息

媒体信息:

o 媒体类型(视频、音频、等)

o 传输协议(RTP/UDP/IP  H.320 等)

o 媒体格式(H.261视频  MPEG视频 等)


另外,SDP还要传播地址和端口信息,对于IP 多播 session,这些信息有:

o 媒体所需的多播group地址

o 媒体所需的传输端口

这些地址和端口是多播流的目的地址和目的端口,无论多播流失被发送、接受还是都是。


对于单播的IP session,要传播下面的信息:

o 媒体的远程地址

o 媒体的远程传输端口。


这些地址和端口的语法格式,依赖于所定义的 媒体和传输协议。

默认,这些地址和端口,应该是数据要发送的远程地址和远程端口。

一些媒体类型,可能会重新定义这些行为,但不推荐,因为当前设计兼容一些实现(包括必须打开NAT(网络地址转换)的middleboxes)或者是防火墙的pinholes。


4.2 时间信息

session在时间上必须是有限或者无限的。无论是否有边界,时间只能在指定时间是激活的。SDP传播:

o 任意的起始时间列表,绑定于session

o 对于每个bound,重复的时间可以是“每个周二的上午十点持续一小时”


参见5.9



4.3 私有session

可以创建public或者private的session,SDP本身不区分。





5. SDP 标准

一个SDP的session 描述用media type “application/sdp ” 来表示。  参见session8

SDP用ISO10646字符集 UTF-8编码。

SDP的field名字和属性名字,使用US-ASCII (UTF-8的子集) ,但是文本域和属性值 都是完全的ISO10646字符集。



SDP session描述 包含有许多行,这样的“:

<type>=<value>  

 =两边不能有空格

type和value都是大小写敏感的


一个SDP session 描述符汗以后一个session级别的section,后头跟着0个或者跟多个media-level的sections。

这些session级别的部分是以”v=“开头的行,后头就是第一个media级别的session了。

每个media级别的session是以” m=“开头的行,后头跟着是下一个media级别的section,或者整个session描述的结束。


一般来说,session级别的值默认对所有media的,除非被对应的同级别media level覆盖,啥意思????

每个行虽然有REQUIRED的和OPTIONAL的的分别,但是必须以精确的顺序出现,这样可以提高错误检测能力。可选的(OPTIONAL)都是以”*“开头的。


固定的顺序如下:


session 描述:

V= (协议版本号)

o= (发起人或者是session标示符)

s= (session名字)

i=* (session信息)

u= * (描述的URI)

e=* (email地址)

p=* (电话号码)

c=* (连接信息--如果不是被所有的media包含就是不需要的)


b=* (0或者更多的带宽信息行)

一个或者更多的时间信息描述(”t=“ 和 ”r=“ 行,如下)

z=* (时区调整)

k=* (秘钥)

a=* (0或者更多session 属性行)

0或者更多media描述



时间描述

t=(session激活的时间)

r=* (0或者更多重复的次数)



媒体描述,如果有的话:

m= (媒体名字和传输地址)

i=* (媒体标题)

c=* (连接信息-可选的,如果不是被session级别包含的话)


b=* (0或者更多的带宽信息行)

k=* (秘钥)

a= *(0或者更多媒体属性行)         


 a就是attribute的意思啊,a是扩展SDP的主要方法。SDP的parser需要忽略掉它不理解的任意属性。

c和a 出现在session级别的话,是用于这个session的所有media的,除非被连接信息或者meidia描述中有同一名字的属性所覆盖。





原创粉丝点击